双目+rtabmap_ros三维建图
挑选合适版本安装
https://github.com/introlab/rtabmap_ros#installation
RTAB-Map is released as binaries in the ROS distribution.
Lunar
$ sudo apt-get install ros-lunar-rtabmap-ros
Kinetic
$ sudo apt-get install ros-kinetic-rtabmap-ros
Jade
$ sudo apt-get install ros-jade-rtabmap-ros
Indigo
$ sudo apt-get install ros-indigo-rtabmap-ros
Hydro:
$ sudo apt-get install ros-hydro-rtabmap-ros
其他系统安装使用详见http://introlab.github.io/rtabmap/
官方:http://wiki.ros.org/rtabmap_ros
有不少教程.
没有高端实验设备,有个双目摄像头正好可以做手持建图,
原文如下
http://wiki.ros.org/rtabmap_ros/Tutorials/StereoHandHeldMapping
这里只说双目
原文引用
Here are the main steps to configure your camera to be used with RTAB-Map.
I assume that your stereo camera node publishes these messages and that header.frame_id of the messages is /camera_link:
left/image_raw (sensor_msgs/Image)
right/image_raw (sensor_msgs/Image)
left/camera_info (sensor_msgs/CameraInfo)
right/camera_info (sensor_msgs/CameraInfo)
Your camera should be calibrated, if not, you can do it following this tutorial.
Rectify the images using stereo_image_proc. This will generate these topics:
left/image_rect_color (sensor_msgs/Image)
right/image_rect_color (sensor_msgs/Image)
left/image_rect (sensor_msgs/Image)
right/image_rect (sensor_msgs/Image)
points2 (sensor_msgs/PointCloud2) You can verify that the calibration is ok if this point cloud looks good in rviz.
The messages are in the /camera_link frame (x-axis right, y-axis down and z-axis forward), but RTAB-Map needs them in the /world frame (x-axis forward, y-axis left, z-axis up). To do that, we use a static_transform_publisher to add a transform between /base_link and /camera_link:
<arg name="pi/2" value="1.5707963267948966" />
<arg name="optical_rotate" value="0 0 0 -$(arg pi/2) 0 -$(arg pi/2)" />
<node pkg="tf" type="static_transform_publisher" name="camera_base_link"
args="$(arg optical_rotate) base_link camera_link 100" />
We are now ready to start RTAB-Map.
简译:
首先启动起来摄像头
left/image_raw (sensor_msgs/Image)
right/image_raw (sensor_msgs/Image)
left/camera_info (sensor_msgs/CameraInfo)
right/camera_info (sensor_msgs/CameraInfo)
当然少不了标定校正了,原文有链接
使用stereo_image_proc发布这些topic
left/image_rect_color (sensor_msgs/Image)
right/image_rect_color (sensor_msgs/Image)
left/image_rect (sensor_msgs/Image)
right/image_rect (sensor_msgs/Image)
points2 (sensor_msgs/PointCloud2) You can verify that the calibration is ok if this point cloud looks good in rviz.
摄像头坐标系转换
x朝右y朝下z超前
配置一个 static_transform_publisher node实现
以上工作完成接下来就可以launch了
launch可视化有两种方案
Launch (rtabmapviz):
$ roslaunch rtabmap_ros stereo_mapping.launch stereo_namespace:="/stereo_camera" rtabmap_args:="--delete_db_on_start"
Launch (rviz):
$ roslaunch rtabmap_ros stereo_mapping.launch stereo_namespace:="/stereo_camera" rtabmap_args:="--delete_db_on_start" rviz:=true rtabmapviz:=false
双目名称空间参数stereo_namespace:="/stereo_camera" 需要根据自己实际的配置
效果图
实际操作摄像头应该慢慢移动.快了算法程序就找不到北了.
Where is the map saved?
~/.ros/rtabmap.db
RTAB-Map provides a tool to browse data in the database:
$ rtabmap-databaseViewer ~/.ros/rtabmap.db
查看地图数据.