Re: Localization issue

Posted by aviadoz on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Localization-issue-tp5847p5941.html

Hi Mathieu,

So,I did what you suggested and I can't see any change of these jumps. The "odom" frame jumps a lot.
I reduce the laser range for 3 meter instead 5 meter which was before and of course the Reg param also.
I am putting here the "rtabmap_realsense.launch" that I am using in my main launch file. maybe you can see something which can help. Also, there is no change if I use visual_odometry or my odometry by the encoders.
Do you think that I need to calibrate my realsense camera?should I need to use robot_localization pkg?

<?xml version="1.0"?>
<launch>
  
  <arg name="vo" default="false" />		
  <arg name="visitors" default="false" />
  <arg name="mapping" default="true" />
  <arg if="$(arg mapping)" name="delete_db" value="--delete_db_on_start" />
  <arg unless="$(arg mapping)" name="delete_db" value="" />
     
  <!-- Choose between RGB-D and stereo -->      
  <arg name="stereo"          default="false"/>
 
  <!-- Choose visualization -->
  <arg name="rtabmapviz"              default="false" /> 
  <arg name="rviz"                    default="false" />
  
  <!-- Localization-only mode -->
  <arg name="localization"            default="false"/>
  
  <!-- sim time for convenience, if playing a rosbag -->
  <arg name="use_sim_time"            default="false"/>
  <param if="$(arg use_sim_time)" name="use_sim_time" value="true"/>
  
  <!-- Corresponding config files -->
  <arg name="cfg"                     default="" /> <!-- To change RTAB-Map's parameters, set the path of config file (*.ini) generated by the standalone app -->
  <arg name="gui_cfg"                 default="~/.ros/rtabmap_gui.ini" />
  <arg name="rviz_cfg"                default="$(find arl_description)/launch/realsenseARL.rviz" />
  <arg name="rviz_visitors_cfg"                default="$(find arl_description)/launch/visitorsRviz.rviz" />
  <arg name="frame_id"                default="base_link"/>     <!-- Fixed frame id, you may set "base_link" or "base_footprint" if they are published -->
  <arg name="odom_frame_id"           default="odom"/>                <!-- If set, TF is used to get odometry instead of the topic -->
  <arg name="map_frame_id"            default="map"/>
  <arg name="ground_truth_frame_id"   default=""/>     <!-- e.g., "world" -->
  <arg name="ground_truth_base_frame_id" default=""/>  <!-- e.g., "tracker", a fake frame matching the frame "frame_id" (but on different TF tree) -->
  <arg name="namespace"               default="rtabmap"/>
  <arg name="database_path"           default="~/.ros/rtabmap.db"/>
  <arg name="queue_size"              default="50"/>
  <arg name="wait_for_transform"      default="0.2"/>
  <arg name="args"                    default=""/>              <!-- delete_db_on_start, udebug -->
  <arg name="rtabmap_args"            default="$(arg args)"/>   <!-- deprecated, use "args" argument -->
  <arg name="launch_prefix"           default=""/>              <!-- for debugging purpose, it fills launch-prefix tag of the nodes -->
  <arg name="output"                  default="screen"/>        <!-- Control node output (screen or log) -->

  <!-- if timestamps of the input topics are synchronized using approximate or exact time policy-->
  <arg     if="$(arg stereo)" name="approx_sync"  default="false"/>
  <arg unless="$(arg stereo)" name="approx_sync"  default="true"/>         
   
  <!-- RGB-D related topics -->
  <arg name="rgb_topic"               default="/camera/color/image_raw" />
  <arg name="depth_topic"             default="/camera/aligned_depth_to_color/image_raw" />
  <arg name="camera_info_topic"       default="/camera/color/camera_info" />
  <arg name="depth_camera_info_topic" default="$(arg camera_info_topic)" />
  
  
  <!-- Already synchronized RGB-D related topic, with rtabmap_ros/rgbd_sync nodelet -->
  <arg name="rgbd_sync"               default="false"/>         <!-- pre-sync rgb_topic, depth_topic, camera_info_topic -->
  <arg name="approx_rgbd_sync"        default="true"/>          <!-- false=exact synchronization -->
  <arg name="subscribe_rgbd"          default="$(arg rgbd_sync)"/>
  <arg name="rgbd_topic"              default="rgbd_image" />
  <arg name="depth_scale"             default="1.0" />
  
  <arg name="compressed"              default="false"/>         <!-- If you want to subscribe to compressed image topics -->
  <arg name="rgb_image_transport"     default="compressed"/>    <!-- Common types: compressed, theora (see "rosrun image_transport list_transports") -->
  <arg name="depth_image_transport"   default="compressedDepth"/>  <!-- Common types: compressed, theora (see "rosrun image_transport list_transports") -->
   
  <arg name="subscribe_scan"          default="false"/>
  <arg name="scan_topic"              default="/scan"/>
  <arg name="subscribe_scan_cloud"    default="false"/>
  <arg name="scan_cloud_topic"        default="/scan_cloud"/>
  <arg name="scan_normal_k"           default="0"/>
   
  <arg name="visual_odometry"          default="false"/>          <!-- Launch rtabmap visual odometry node -->
  <arg name="icp_odometry"             default="false"/>         <!-- Launch rtabmap icp odometry node -->
  <arg name="odom_topic"               default="odom"/>          <!-- Odometry topic name -->
  <arg name="vo_frame_id"              default="$(arg odom_topic)"/> <!-- Visual/Icp odometry frame ID for TF -->
  <arg name="odom_tf_angular_variance" default="1"/>             <!-- If TF is used to get odometry, this is the default angular variance -->
  <arg name="odom_tf_linear_variance"  default="1"/>             <!-- If TF is used to get odometry, this is the default linear variance -->
  <arg name="odom_args"                default=""/>              <!-- More arguments for odometry (overwrite same parameters in rtabmap_args) -->
  <arg name="odom_sensor_sync"         default="false"/>
  <arg name="odom_guess_frame_id"        default=""/>
  <arg name="odom_guess_min_translation" default="0"/>
  <arg name="odom_guess_min_rotation"    default="0"/>  
  
  <arg name="subscribe_user_data"      default="false"/>             <!-- user data synchronized subscription -->
  <arg name="user_data_topic"          default="/user_data"/>
  <arg name="user_data_async_topic"    default="/user_data_async" /> <!-- user data async subscription (rate should be lower than map update rate) -->



    
    <node  name="rtabmap" pkg="rtabmap_ros" type="rtabmap" output="screen"  args="$(arg delete_db)">
      <!-- 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)"/>
      <param name="gen_scan" type="bool" value="false"/>
      <param name="subscribe_depth" type="bool" value="false"/>
      <param name="subscribe_scan" type="bool" value="true"/>
      <param name="Rtabmap/DetectionRate" type="string" value="0"/>
      <param name="Reg/Strategy" type="string" value="0"/>
      <param name="frame_id" type="string" value="$(arg frame_id)"/>
     <!--  <param name="publish_tf" type="bool" value="$(arg publish_map_tf)" /> -->     
	
        <remap from="rgb/image"       to="$(arg rgb_topic)"/>
        <remap from="depth/image"     to="$(arg depth_topic)"/>
        <remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>
	<remap from="odom" to="odom"/><!-- to get the odometry from the encoders and not from the kinect-->
 	<remap from="scan" to="/scan"/>
	<remap from="scan_map" to="cloud_map"/>
	<!--<param name="RGBD/OptimizeStrategy" type="string" value="1"/>
	<remap from="grid_map" to="/map"/>-->
	
       

         <!-- RTAB-Map's parameters -->

        <!--
  <param name="RGBD/AngularUpdate" type="string" value="0.01"/>
          <param name="RGBD/LinearUpdate" type="string" value="0.01"/>
	  <param name="RGBD/OptimizeSlam2d"          type="string" value="true"/>
          <param name="queue_size" type="int" value="50"/>
          <param name="RGBD/PoseScanMatching"        type="string" value="true"/>
	  <param name="RGBD/PlanStuckIterations"        type="int" value="10"/>
          <param name="use_action_for_goal" type="bool" value="true"/> 
	  <param name="publish_tf" type="bool" value="true"/>
          <param name="Rtabmap/TimeThr" type="string" value="700"/>
          <param name="Mem/RehearsalSimilarity" type="string" value="0.45"/>
          <param name="RGBD/OptimizeFromGraphEnd" type="string" value="false"/>
	  <param name="RGBD/PoseScanMatching" type="string" value="true"/>
	  <param name="RGBD/OptimizeStrategy" type="string" value="1"/> 
	  <param name="RGBD/OptimizeRobust" type="string" value="true"/>
	  <param name="RGBD/OptimizeMaxError" type="string" value="0"/> 
          <param name="RGBD/OptimizeRobust" type="string" value="true"/>
	  <param name="Rtabmap/DetectionRate" type="string" value="0"/>
	  <param name="grid_size" type="double" value="10"/> 
	  <param name="cloud_noise_filtering_radius" value="0.05"/>
	  <param name="cloud_noise_filtering_min_neighbors" value="2"/>
	  <param name="proj_max_ground_angle" value="45"/>
	  <param name="proj_max_ground_height" value="0.1"/>
	  <param name="proj_max_height" value="2.0"/>
          <param name="approx_sync" type="bool" value="true"/>
	  <param name="proj_min_cluster_size" value="20"/>
-->
        </node>
	  
    

 <!-- RGB-D Odometry -->
        <node   if="$(arg vo)" pkg="rtabmap_ros" type="rgbd_odometry" name="rgbd_odometry" output="screen" >
          <remap from="rgb/image"       to="$(arg rgb_topic)"/>
          <remap from="depth/image"     to="$(arg depth_topic)"/>
          <remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>
          <remap from="rgbd_image"      to="$(arg rgb_topic)"/>
          <!--<remap from="odom"            to="$(arg odom_topic)"/>-->
      
          <param name="frame_id"                    type="string" value="base_link"/>
          <param name="odom_frame_id"               type="string" value="odom"/>
          <param name="wait_for_transform_duration" type="double" value="0.01"/>
          <param name="approx_sync"                 type="bool"   value="true"/>
          <param name="queue_size"                  type="int"    value="$(arg queue_size)"/>
          <param name="subscribe_rgbd"              type="bool"   value="false"/>
    	  <param name="publish_tf" type="bool" value="true"/>

</node>
  



  <!-- Visualization RVIZ -->
  <node if="$(arg rviz)" pkg="rviz" type="rviz" name="rviz" args="-d $(arg rviz_cfg)"/>
  <node if="$(arg visitors)" pkg="rviz" type="rviz" name="rviz" args="-d $(arg rviz_visitors_cfg)"/>


<node if="$(arg rtabmapviz)" pkg="rtabmap_ros" type="rtabmapviz" name="rtabmapviz" output="$(arg output)">

	<param name="subscribe_rgbd"       type="bool"   value="false"/>
	<param name="subscribe_scan"       type="bool"   value="true"/>
	<param name="frame_id"             type="string" value="base_link"/>
        <param name="odom_frame_id"        type="string" value="odom"/>
 	<remap from="rgb/image"       to="$(arg rgb_topic)"/>
        <remap from="depth/image"     to="$(arg depth_topic)"/>
        <remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>
  	<remap from="/scan"                   to="/scan"/>
       <!-- <remap from="scan_cloud"             to="$(arg scan_cloud_topic)"/>
        <remap from="odom"                   to="$(arg odom_topic)"/>-->
 </node>
</launch>