雙目+rtabmap_ros三維建圖
阿新 • • 發佈:2019-02-16
挑選合適版本安裝
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://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
檢視地圖資料.