0
$\begingroup$

Rosanswers logo

Hi,

I am using rtabmap_ros on a Turtlebot in Gazebo. I have successfully created the map with RTAB-Map. Now, I would like to do the navigation with a known map. You can see my launch file here.

My problem is that, my map is just loaded for a second, and after that it disappears. I don't know what changes are necessary for my launch file to fix this problem. To run my files you can run the following commands:

  1. Launch the turtlebot in Gazebo:

$ ROBOT_INITIAL_POSE="-x -2 -y -1" roslaunch turtlebot_gazebo turtlebot_world.launch

  1. Load the saved map, run rtabmap_ros, run navigation, and visualize the robot on Rviz

$ roslaunch turtlebot_rtabmap_simulation turtlebot_rtabmap_navigation.launch

The distro of my ROS is indigo running on Ubuntu 14.04.

Thank you.


Originally posted by MahsaP on ROS Answers with karma: 79 on 2016-02-23

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Hi,

The map disappears because there are two nodes publishing the same topic /map: map_server and rtabmap. Remap to different topic name or use only the one published by rtabmap. When launching the node with a previous map (localization mode), the map published by rtabmap is empty until a localization is found (look the warnings on the console for possible reasons of localization rejection). The simulated environment doesn't have a lot of visual features, I tuned the parameters to get more visual features (using GFTT/BRIEF instead of ORB) so that it is easier to relocalize, here is a simplified turtlebot_rtabmap_navigation.launch:

<!-- Turtlebot navigation simulation with RTAB-Map -->
<launch>

  <arg name="database_path"     default="rtabmap.db"/>
  <arg name="localization"      default="true"/>

  <!-- Mapping -->
  <group ns="rtabmap">
    <node name="rtabmap" pkg="rtabmap_ros" type="rtabmap" output="screen">
      <param name="database_path"       type="string" value="$(arg database_path)"/>
      <param name="frame_id"            type="string" value="base_footprint"/>
      <param name="odom_frame_id"       type="string" value="odom"/>
      <param name="subscribe_laserScan" type="bool"   value="true"/>
    
      <!-- inputs -->
      <remap from="scan"            to="/scan"/>
      <remap from="rgb/image"       to="/camera/rgb/image_raw"/>
      <remap from="depth/image"     to="/camera/depth/image_raw"/>
      <remap from="rgb/camera_info" to="/camera/rgb/camera_info"/>

      <!-- outputs -->
          <remap from="grid_map" to="/map"/> <!-- input for move_base costmap -->
    
      <!-- RTAB-Map parameters -->
      <param name="RGBD/LocalLoopDetectionSpace" type="string" value="true"/>
      <param name="RGBD/OptimizeSlam2D"          type="string" value="true"/>      
      <param name="Kp/MaxDepth"                  type="string" value="4.0"/>
      <param name="Kp/DetectorStrategy"          type="string" value="6"/> <!-- GFTT/BRIEF -->
      <param name="GFTT/MinDistance"             type="string" value="5"/>
      <param name="LccIcp/Type"                  type="string" value="2"/> <!-- ICP 2D -->
      <param name="LccIcp2/CorrespondenceRatio"  type="string" value="0.1"/> 
      
      <!-- localization mode -->
      <param     if="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="false"/>
      <param unless="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="true"/>
      <param name="Mem/InitWMWithAllNodes" type="string" value="$(arg localization)"/> 
    </node>
  </group>

  <!-- ******* Navigation - Move Base ******* -->
  <include file="$(find turtlebot_navigation)/launch/includes/move_base.launch.xml"/>


  <!-- ******* Visualization of the Turtlebot on Rviz ******* -->
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find turtlebot_rviz_launchers)/rviz/navigation.rviz"/>

</launch>

For the second step in your instructions, use either:

a) SLAM mode
$ roslaunch turtlebot_rtabmap_navigation.launch localization:=false

b) Localization-only mode
$ roslaunch turtlebot_rtabmap_navigation.launch localization:=true

cheers


Originally posted by matlabbe with karma: 6409 on 2016-02-29

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by MahsaP on 2016-02-29:
@matlabbe Thanks you for your detailed answer.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.