文章目录
- 0 引言
- 1 数据
- 1.1 D435i相机配置
- 1.2 协方差位姿
- 1.3 tf 关系
- 2 离线demo
- 2.1 yaml配置文件
- 2.2 launch启动文件
- 2.3 数据录制
- 2.4 离线加载点云生成高程图
- 3 在线demo
- 3.1 launch启动文件
- 3.2 CMakeLists.txt
- 3.3 在线加载点云生成高程图
0 引言
elevation mapping学习笔记1已经成功编译安装elevation mapping
高程图工程,并运行示例turtlesim3_waffle_demo
,在仿真环境下,控制带有传感器的机器人生成高程图,简单熟悉了高程图的实际应用。elevation mapping学习笔记2主要熟悉了该工程一些节点和参数的定义和说明,在此基础上,使用D435i相机
发出的点云作为高程图的点云输入,本文主要学习如何离线输入点云生成高程图,进一步学习如何在线订阅点云生成高程图。
👉 elevation mapping github:https://github.com/ANYbotics/elevation_mapping
本文系统环境:
- Ubuntu18.04
- ROS-melodic
- elevation mapping
- D435i相机和驱动
1 数据
elevation mapping
高程图工程主要的输入数据有三部分,topic
类型分别是:点云(相机,雷达等)、协方差位姿(机器人,里程计等)和tf
关系,其中点云和tf
关系是必需的,协方差位姿是非必需的。
/points
( sensor_msgs/PointCloud2 )/pose
( geometry_msgs/PoseWithCovarianceStamped )/tf
(tf/tf消息)
1.1 D435i相机配置
默认已在Ubuntu18.04
系统上安装ROS
版的D435i
相机驱动,比如本文驱动安装目录~/catkin_rs/src/realsense-ros
安装后,默认是没有打开点云的配置,所以需要自行修改配置:
# 激活环境
source /catkin_rs/devel/setup.bash
# roscd 进入到配置文件目录下
roscd realsense2_camera/launch/
# 打开 rs_camera.launch 配置文件进行修改
vim rs_camera.launch
打开后,主要是如下的字段需要修改成 true
,这样就能发出点云topic
:
<arg name="enable_pointcloud" default="true"/><arg name="pointcloud_texture_stream" default="RS2_STREAM_COLOR"/><arg name="pointcloud_texture_index" default="0"/><arg name="allow_no_texture_points" default="false"/><arg name="ordered_pc" default="true"/>
修改保存后,执行D435i相机
的启动命令:
# source后执行
roslaunch realsense2_camera rs_camera.launch input:=/camera/depth_registered/points
启动后,rostopic list
查看可知,/camera/depth/color/points
即是D435i相机
的点云topic
.
点云topic
发布频率查看命令:rostopic hz /camera/depth/color/points
subscribed to [/camera/depth/color/points]
average rate: 15.737min: 0.022s max: 0.092s std dev: 0.01879s window: 14
average rate: 15.158min: 0.022s max: 0.092s std dev: 0.01637s window: 29
average rate: 15.226min: 0.022s max: 0.095s std dev: 0.01710s window: 44
...
点云topic
具体信息查看命令:rostopic echo /camera/depth/color/points
,其中camera_color_optical_frame
是点云的frame_id
是后文需要的一个配置参数。
header: seq: 115stamp: secs: 1691134687nsecs: 843372107frame_id: "camera_color_optical_frame"
height: 540
width: 960
...
1.2 协方差位姿
协方差位姿是非必需的输入数据,本文暂不使用该数据…
1.3 tf 关系
本文使用D435i
相机传感器生成点云,有一个点云坐标系pc_link
,高程图主要应用在机器人,也有一个机器人坐标系base_link
,输出的高程图也有一个地图坐标系map_link
。
ROS
中描述tf
关系时,一般和数据topic
的frame_id
对应,所以三个坐标系中的点云坐标系定义为camera_color_optical_frame
,其他两个暂定义为 base_link
和map
。
以本文为例,三者在机器人的图示如下:
确定了三者坐标系的关系,本文已知D435i
和base
的外参,base
和map
的外参,外参表示形式是四元数(w,x,y,z
)+
平移矩阵(x,y,z
),直接写入到下述的tf
关系参考代码中,python
代码命名为tf_map_base_cam_publisher.py
,其中发布频率设为300hz