Handheld map for later usage on the robot
Posted by
mtal on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Handheld-map-for-later-usage-on-the-robot-tp8343.html
Dear Dr. Labbé,
I am posting again since my thread moved down.
I have the following RTAB-Map setup on my robot:
2x D435 (one is placed lower and one on top of the robot, 90° rotated and there is a TF between these two) and 1x 2D LiDAR LDS-01 (was included on TB3). I am using wheel odometry coming from OpenCR board.
Here is my launch file:
<launch>
<group ns="d435_bottom">
<node pkg="nodelet" type="nodelet" name="nodelet_manager1" args="manager"/>
<node pkg="nodelet" type="nodelet" name="rgbd_sync1" args="load rtabmap_ros/rgbd_sync nodelet_manager1">
<remap from="rgb/image" to="color/image_raw"/>
<remap from="depth/image" to="aligned_depth_to_color/image_raw"/>
<remap from="rgb/camera_info" to="color/camera_info"/>
<param name="approx" value="false"/>
</node>
</group>
<group ns="d435_top">
<node pkg="nodelet" type="nodelet" name="nodelet_manager2" args="manager"/>
<node pkg="nodelet" type="nodelet" name="rgbd_sync2" args="load rtabmap_ros/rgbd_sync nodelet_manager2">
<remap from="rgb/image" to="color/image_raw"/>
<remap from="depth/image" to="aligned_depth_to_color/image_raw"/>
<remap from="rgb/camera_info" to="color/camera_info"/>
<param name="approx" value="false"/>
</node>
</group>
<group ns="rtabmap">
<!-- Visual SLAM (robot side) -->
<!-- args: "delete_db_on_start" and "udebug" -->
<node name="rtabmap" pkg="rtabmap_ros" type="rtabmap" output="screen" args="--delete_db_on_start">
<param name="subscribe_depth" type="bool" value="false"/>
<param name="subscribe_rgbd" type="bool" value="true"/>
<param name="subscribe_scan" type="bool" value="true"/>
<param name="rgbd_cameras" type="int" value="2"/>
<param name="frame_id" type="string" value="base_footprint"/>
<!-- <param name="gen_scan" type="bool" value="true"/> -->
<param name="map_negative_poses_ignored" type="bool" value="false"/> <!-- refresh grid map even if we are not moving-->
<param name="map_negative_scan_empty_ray_tracing" type="bool" value="false"/> <!-- don't fill empty space between the generated scans-->
<remap from="odom" to="/odom"/>
<remap from="rgbd_image0" to="/d435_bottom/rgbd_image"/>
<remap from="rgbd_image1" to="/d435_top/rgbd_image"/>
<remap from="scan" to="/scan_filtered"/>
<param name="RGBD/NeighborLinkRefining" type="string" value="true"/>
<param name="RGBD/ProximityBySpace" type="string" value="true"/>
<param name="RGBD/AngularUpdate" type="string" value="0.01"/>
<param name="RGBD/LinearUpdate" type="string" value="0.01"/>
<param name="RGBD/OptimizeFromGraphEnd" type="string" value="false"/>
<param name="Grid/FromDepth" type="string" value="false"/>
<param name="Grid/CellSize" type="string" value="0.02"/>
<param name="Vis/EstimationType" type="string" value="0"/> <!-- should be 0 for multi-cameras -->
<param name="Reg/Force3DoF" type="string" value="true"/>
<param name="Reg/Strategy" type="string" value="1"/>
<param name="Icp/VoxelSize" type="string" value="0.05"/>
<param name="Icp/MaxCorrespondenceDistance" type="string" value="0.1"/>
</node>
</group>
</launch>
I had this idea to use one D435 on my laptop and generate a map using RGBD visual odometry in handheld mode and later on
to transfer the generated rtabmap.db file to the previous mentioned setup. I was using the following commands from RGB-D Handheld Mapping:
roslaunch realsense2_camera rs_camera.launch align_depth:=true
roslaunch rtabmap_ros rtabmap.launch \
rtabmap_args:="--delete_db_on_start" \
depth_topic:=/camera/aligned_depth_to_color/image_raw \
rgb_topic:=/camera/color/image_raw \
camera_info_topic:=/camera/color/camera_info \
approx_sync:=false
I tried it already but when I click on Download button it ignores the previously saved map. In case you ask, I removed --delete_db_on_start when I try to load the previously saved map.
I wanted to ask should it work like this?
If this concept would work I would move to the iOS RTAB-Map and try the same with an iPad. Thanks in advance.
Thanks in advance.
Cheers, Mujo