1. 程式人生 > >雙目+rtabmap_ros三維建圖

雙目+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.

簡譯:

首先啟動起來攝像頭

攝像頭節點得釋出這些topic
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

檢視地圖資料.