Stereo B Mapping Problem

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Stereo B Mapping Problem

minato_99
This post was updated on .
Hi,
I am using a stereo camera to create a map of the gazebo worlds. I have attached image file of gazebo world and the map I created. The map has many corners and contours.




The launch file I have used is below.
<?xml version="1.0" encoding="UTF-8"?>

<launch>

	
  <!-- Choose visualization -->
  <arg name="rtabmapviz"              default="false" />
  <arg name="rviz"                    default="true" />

  <!-- Localization-only mode -->
  <arg name="localization"            default="false"/>
  
  
<arg name="pi/2" value="1.5707963267948966" />
<arg name="optical_rotate" value="0 0 0 -$(arg pi/2) 0 -$(arg pi/2) " />								<!-- roll  and yaw = -$(arg pi/2) -->
<node pkg="tf" type="static_transform_publisher" name="camera_base_link"
     args="$(arg optical_rotate) chassis camera 50" />  

<!-- Run the ROS package stereo_image_proc -->
<group ns="/stereo" >
    <node pkg="stereo_image_proc" type="stereo_image_proc" name="stereo_image_proc"/>

    <!-- Odometry -->
    <node pkg="rtabmap_odom" type="stereo_odometry" name="stereo_odometry" output="screen">
   <remap from="left/image_rect"   to="left/image_rect_color"/>
     <remap from="right/image_rect"  to="right/image_rect"/>
     <remap from="left/camera_info"  to="left/camera_info"/>
     <remap from="right/camera_info" to="right/camera_info"/>

        <param name="frame_id" type="string" value="chassis"/>
        <param name="odom_frame_id" type="string" value="odom"/>
        <param name="approx_sync"   type="bool" value="true"/>
        <param name="queue_size"    type="int" value="5"/>

        <param name="Odom/MinInliers" type="string" value="12"/>
       <param name="Odom/RoiRatios"  type="string" value="0.03 0.03 0.04 0.04"/> 
    </node>     
</group>


   
 <!-- Mapping -->

<group ns="rtabmap">   
  <node name="rtabmap" pkg="rtabmap_slam" type="rtabmap" output="screen" args="delete_db_on_start"> <!--	delete_db_on_start-->
  	
     <param name="frame_id" type="string" value="chassis"/>
     <param name="subscribe_stereo" type="bool" value="true"/>
     <param name="subscribe_depth"  type="bool" value="true"/>
     <param name="approx_sync"      type="bool" value="true"/>
     
        <remap from="left/image_rect"       to="/stereo/left/image_raw"/>
        <remap from="right/image_rect"      to="/stereo/right/image_raw"/>
        <remap from="left/camera_info"      to="/stereo/left/camera_info"/>
        <remap from="right/camera_info"     to="/stereo/right/camera_info"/>
     
  
     <remap from="odom" to="/stereo/odom"/>

     <param name="queue_size" type="int" value="30"/>

     <!-- RTAB-Map's parameters -->
     <param name="Vis/MinInliers" type="string" value="12"/>
   <!--  <param name="Mem/IncrementalMemory" type="bool" value="true" /> -->
     
     <!-- RTAB-Map's parameters: do "rosrun rtabmap rtabmap (double-dash)params" to see the list of available parameters. -->
   
    
    
  

    
     
      <param name="RGBD/ProximityBySpace"        type="string" value="true"/>   <!-- Local loop closure detection (using estimated position) with locations in WM -->
      <param name="RGBD/OptimizeFromGraphEnd"    type="string" value="true"/> <!--false -> <!- Set to false to generate map correction between /map and /odom -->
      <param name="Kp/MaxDepth"                  type="string" value="4.0"/>
      <param name="Reg/Strategy"                 type="string" value="0"/>   <!-- 0 -->   <!-- Loop closure transformation: 0=Visual, 1=ICP, 2=Visual+ICP -->
      <param name="Icp/CorrespondenceRatio"      type="string" value="0.1"/>
      
      <param name="Vis/InlierDistance"           type="string" value="0.1"/>    <!-- 3D visual words correspondence distance -->
      <param name="RGBD/AngularUpdate"           type="string" value="0.1"/>    <!-- Update map only if the robot is moving -->
      <param name="RGBD/LinearUpdate"            type="string" value="0.1"/>    <!-- Update map only if the robot is moving -->
      <param name="Rtabmap/DetectionRate"              type="string" value="1000"/>
      <param name="RGBD/ProximityPathMaxNeighbors" type="string" value="1"/>    <!-- 1-->
      <param name="Rtabmap/TimeThr"              type="string" value="700"/>  <!-- 700 -->
      <param name="Mem/RehearsalSimilarity"      type="string" value="0.30"/>
      <param name="Optimizer/Slam2D"             type="string" value="true"/>
      <param name="Reg/Force3DoF"                type="string" value="true"/>   
       <param name="RGBD/OptimizeMaxError"           type="string" value="1"/> 
      
      <!-- localization mode -->
      <param     if="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="true"/>
      <param unless="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="true"/>
      <param name="Mem/InitWMWithAllNodes" type="string" value="$(arg localization)"/> 


     
     
  </node>
 </group>
 <!-- Visualisation RTAB-Map -->
<!--
 <group ns="rtabmap">  

  <node pkg="rtabmap_viz" type="rtabmap_viz" name="rtabmap_viz" args="-d $(find rtabmap_viz)/launch/config/rgbd_gui.ini" output="screen">
     <param name="subscribe_stereo"    type="bool"   value="true"/>
     <param name="subscribe_odom_info" type="bool"   value="true"/>
     <param name="queue_size"          type="int"    value="10"/>
     <param name="frame_id"            type="string" value="chassis"/>
     <remap from="left/image_rect"   to="/stereo/left/image_rect_color"/>
     <remap from="right/image_rect"  to="/stereo/right/image_rect"/>
     <remap from="left/camera_info"  to="/stereo/left/camera_info"/>
     <remap from="right/camera_info" to="/stereo/right/camera_info"/>
     <remap from="odom_info"         to="/stereo/odom_info"/> 
     <remap from="odom"              to="/stereo/odom"/> 
 
  </node> 
</group> -->

   <!-- <remap from="odom_info"         to="/stereo/odom_info"/> -->
     <!-- <remap from="odom"              to="/stereo/odom"/> --> <!-- these goes insinde rtabmap_viz -->
 <!-- Visualisation RVIZ --> 
 

   <node if="$(arg rviz)" pkg="rviz" type="rviz" name="rviz" args="-d $(find rtabmap_demos)/launch/config/demo_stereo_outdoor.rviz"/> 
   
</launch>

What are the parameters should I choose since I always get wrong loop closure detection error. After spending more time in creating a map in a single run. The update time becomes very large the my computer barely run and states the error of odom transformation lost.

What are the parameters should I tweak to get rid of this error ? Thanks.
Reply | Threaded
Open this post in threaded view
|

Re: Stereo B Mapping Problem

matlabbe
Administrator
Hi,

A very repetitive texture like this for the ground is bad for loop closure detection, "wrong" loop closures may be accepted, thus deforming the graph. If you could change the ground texture to something more unique everywhere it will be more realistic.

For the processing time, I would need to see the database for more help on how to reduce it. Afterwards, it is expected that processing time will increase as the map size increase, rtabmap has a memory management approach that is not enabled by default in order to limit the processing time. This is described in this paper.

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Stereo B Mapping Problem

minato_99
Hello matlabbe,

To make the environment texture rich. Should I put more objects in the environment and change the colors of the wall. I am new to gazebo and SLAM. Any suggestion would be appreciated?

Thanks,
minato_99
Reply | Threaded
Open this post in threaded view
|

Re: Stereo B Mapping Problem

matlabbe
Administrator
Adding random objects with different texture could help, but I would prefer to start by changing the ground texture to make it not repetitive on the whole area. That could help: https://cpetry.github.io/TextureGenerator-Online/ ("Perlin Noise Settings")

The idea is to remove the same texture repeated like this:
Reply | Threaded
Open this post in threaded view
|

Re: Stereo B Mapping Problem

minato_99
Thanks for the suggestion.
Reply | Threaded
Open this post in threaded view
|

Re: Stereo B Mapping Problem

minato_99
This post was updated on .
Hello,

I have changed the texture. However, the 3D images are too much distorted. I have attached the rtabmap.launch file I am accessing through my rtab_stereo.launch code.


gazebo



rtab_stereo.launch code:
<?xml version="1.0" encoding="UTF-8"?>

<launch>

	
  <!-- Choose visualization -->
  <arg name="rtabmapviz"              default="false" />
  <arg name="rviz"                    default="true" />

  <!-- Localization-only mode -->
  <arg name="localization"            default="false"/>
  
  
<arg name="pi/2" value="1.5707963267948966" />
<arg name="optical_rotate" value="0 0 0 -$(arg pi/2) 0 -$(arg pi/2) " />								<!-- roll  and yaw = -$(arg pi/2) -->
<node pkg="tf" type="static_transform_publisher" name="camera_base_link"
     args="$(arg optical_rotate) chassis camera 100" />  

<!-- Run the ROS package stereo_image_proc -->
<group ns="/stereo" >
    <node pkg="stereo_image_proc" type="stereo_image_proc" name="stereo_image_proc"/>

    <!-- Odometry -->
    <node pkg="rtabmap_odom" type="stereo_odometry" name="stereo_odometry" output="screen">
   <remap from="left/image_rect"   to="left/image_rect_color"/>
     <remap from="right/image_rect"  to="right/image_rect"/>
     <remap from="left/camera_info"  to="left/camera_info"/>
     <remap from="right/camera_info" to="right/camera_info"/>

        <param name="frame_id" type="string" value="chassis"/>
        <param name="odom_frame_id" type="string" value="odom"/>
        <param name="approx_sync"   type="bool" value="true"/>
        <param name="queue_size"    type="int" value="5"/>
	
        <param name="Odom/MinInliers" type="string" value="12"/>
       <param name="Odom/RoiRatios"  type="string" value="0.03 0.03 0.04 0.04"/> 
    </node>     
</group>


   
 <!-- Mapping -->

<group ns="rtabmap">   
  <node name="rtabmap" pkg="rtabmap_slam" type="rtabmap" output="screen" args="delete_db_on_start"> <!--	delete_db_on_start-->
  	
     <param name="frame_id" type="string" value="chassis"/>
     <param name="subscribe_stereo" type="bool" value="true"/>
     <param name="subscribe_depth"  type="bool" value="true"/>
     <param name="approx_sync"      type="bool" value="true"/>
     
        <remap from="left/image_rect"       to="/stereo/left/image_raw"/>
        <remap from="right/image_rect"      to="/stereo/right/image_raw"/>
        <remap from="left/camera_info"      to="/stereo/left/camera_info"/>
        <remap from="right/camera_info"     to="/stereo/right/camera_info"/>
     
  
     <remap from="odom" to="/stereo/odom"/>

     <param name="queue_size" type="int" value="30"/>

     <!-- RTAB-Map's parameters -->
     <param name="Vis/MinInliers" type="string" value="12"/>
   <!--  <param name="Mem/IncrementalMemory" type="bool" value="true" /> -->
     
     <!-- RTAB-Map's parameters: do "rosrun rtabmap rtabmap (double-dash)params" to see the list of available parameters. -->
   
  <!-- Change initial costmap size -->
    <param name="GridGlobal/MinSize" type="double" value="50"/> <!-- 50 meters wide -->
    
      <param name="Grid/NoiseFilteringRadius" value="0.05"/>
      <param name="Grid/NoiseFilteringMinNeighbors" value="2"/>

    
     
      <param name="RGBD/ProximityBySpace"        type="string" value="true"/>   <!-- Local loop closure detection (using estimated position) with locations in WM -->
      <param name="RGBD/OptimizeFromGraphEnd"    type="string" value="true"/> <!--false -> <!- Set to false to generate map correction between /map and /odom -->
      <param name="Kp/MaxDepth"                  type="string" value="4.0"/>
      <param name="Reg/Strategy"                 type="string" value="0"/>   <!-- 0 -->   <!-- Loop closure transformation: 0=Visual, 1=ICP, 2=Visual+ICP -->
      <param name="Icp/CorrespondenceRatio"      type="string" value="0.1"/>
      
      <param name="Vis/InlierDistance"           type="string" value="0.1"/>    <!-- 3D visual words correspondence distance -->
      <param name="RGBD/AngularUpdate"           type="string" value="0.1"/>    <!-- Update map only if the robot is moving -->
      <param name="RGBD/LinearUpdate"            type="string" value="0.1"/>    <!-- Update map only if the robot is moving -->
      <param name="Rtabmap/DetectionRate"              type="string" value="1000"/>
      <param name="RGBD/ProximityPathMaxNeighbors" type="string" value="1"/>    <!-- 1-->
      <param name="Rtabmap/TimeThr"              type="string" value="700"/>  <!-- 700 -->
      <param name="Mem/RehearsalSimilarity"      type="string" value="0.30"/>
      <param name="Optimizer/Slam2D"             type="string" value="true"/>
      <param name="Reg/Force3DoF"                type="string" value="true"/>   
       <param name="RGBD/OptimizeMaxError"           type="string" value="3"/> 
      
      <!-- localization mode -->
      <param     if="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="true"/>
      <param unless="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="true"/>
      <param name="Mem/InitWMWithAllNodes" type="string" value="$(arg localization)"/> 


     
     
  </node>
 </group>
 <!-- Visualisation RTAB-Map -->

   <node if="$(arg rviz)" pkg="rviz" type="rviz" name="rviz" args="-d $(find rtabmap_demos)/launch/config/demo_stereo_outdoor.rviz"/> 
   
</launch>

rtabmap.launch code:

<?xml version="1.0"?>
<!-- -->
<launch>
  <!-- Deprecated: use "roslaunch rtabmap_launch rtambap.launch" instead -->

  <!-- Choose between depth and stereo, set both to false to do only scan -->
  <arg name="stereo"                    default="false"/>
  <arg     if="$(arg stereo)" name="depth"  default="false"/>
  <arg unless="$(arg stereo)" name="depth"  default="true"/>
  <arg name="subscribe_rgb"  default="$(arg depth)"/>

  <!-- Choose visualization -->
  <arg name="rtabmap_viz"             default="true" />
  <arg name="rtabmapviz"              default="$(arg rtabmap_viz)" /> <!-- deprecated, use rtabmap_viz -->
  <arg name="rviz"                    default="false" />

  <!-- Localization-only mode -->
  <arg name="localization"            default="false"/>
  <arg name="initial_pose"            default=""/>             <!-- Format: "x y z roll pitch yaw" or "x y z qx qy qz qw". Default: see "RGBD/StartAtOrigin" doc -->

  <!-- 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 rtabmap_launch)/launch/config/rgbd.rviz" />

  <arg name="frame_id"                default="camera_link"/>     <!-- Fixed frame id, you may set "base_link" or "base_footprint" if they are published -->
  <arg name="odom_frame_id"           default=""/>                <!-- If set, TF is used to get odometry instead of the topic -->
  <arg name="odom_frame_id_init"      default=""/>                <!-- If set, TF map->odom is published even if no odometry topic has been received yet. The frame id should match the one in 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="10"/>
  <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="gdb"                     default="false"/>         <!-- Launch nodes in gdb for debugging (apt install xterm gdb) -->
  <arg     if="$(arg gdb)" name="launch_prefix" default="xterm -e gdb -q -ex run --args"/>
  <arg unless="$(arg gdb)" name="launch_prefix" default=""/>
  <arg name="clear_params"            default="true"/>
  <arg name="output"                  default="screen"/>        <!-- Control node output (screen or log) -->
  <arg name="publish_tf_map"          default="true"/>

  <!-- 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="$(arg depth)"/>
  <arg name="approx_sync_max_interval"  default="0"/> <!-- (sec) 0 means infinite interval duration (used with approx_sync=true) -->

  <!-- RGB-D related topics -->
  <arg name="rgb_topic"               default="/camera/rgb/image_rect_color" />
  <arg name="depth_topic"             default="/camera/depth_registered/image_raw" />
  <arg name="camera_info_topic"       default="/camera/rgb/camera_info" />
  <arg name="depth_camera_info_topic" default="$(arg camera_info_topic)" />

  <!-- stereo related topics -->
  <arg name="stereo_namespace"        default="/stereo_camera"/>
  <arg name="left_image_topic"        default="$(arg stereo_namespace)/left/image_rect_color" />
  <arg name="right_image_topic"       default="$(arg stereo_namespace)/right/image_rect" />      <!-- using grayscale image for efficiency -->
  <arg name="left_camera_info_topic"  default="$(arg stereo_namespace)/left/camera_info" />
  <arg name="right_camera_info_topic" default="$(arg stereo_namespace)/right/camera_info" />

  <!-- Already synchronized RGB-D related topic, with rtabmap_sync/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" />         <!-- Deprecated, use rgbd_depth_scale instead -->
  <arg name="rgbd_depth_scale"        default="$(arg depth_scale)" />
  <arg name="rgbd_decimation"         default="1" />

  <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"/>  <!-- Depth compatible types: compressedDepth (see "rosrun image_transport list_transports") -->

  <arg name="gen_cloud"               default="false"/> <!-- only works with depth image and if not subscribing to scan_cloud topic-->
  <arg name="gen_cloud_decimation"    default="4"/>
  <arg name="gen_cloud_voxel"         default="0.05"/>

  <arg name="subscribe_scan"          default="false"/>
  <arg name="scan_topic"              default="/scan"/>
  <arg name="subscribe_scan_cloud"    default="$(arg gen_cloud)"/>
  <arg name="scan_cloud_topic"        default="/scan_cloud"/>
  <arg name="subscribe_scan_descriptor" default="false"/>
  <arg name="scan_descriptor_topic"   default="/scan_descriptor"/>
  <arg name="scan_deskewing"          default="false"/>
  <arg name="scan_deskewing_slerp"    default="false"/>
  <arg name="scan_cloud_max_points"   default="0"/>
  <arg name="scan_cloud_filtered"     default="$(arg scan_deskewing)"/> <!-- use filtered cloud from icp_odometry for mapping -->
  <arg name="gen_scan"                default="false"/> <!-- only works with depth image and if not subscribing to scan topic-->

  <arg name="gen_depth"                  default="false" /> <!-- Generate depth image from scan_cloud -->
  <arg name="gen_depth_decimation"       default="1" />
  <arg name="gen_depth_fill_holes_size"  default="0" />
  <arg name="gen_depth_fill_iterations"  default="1" />
  <arg name="gen_depth_fill_holes_error" default="0.1" />

  <arg name="visual_odometry"          default="true"/>          <!-- 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="publish_tf_odom"          default="true"/>
  <arg name="odom_tf_angular_variance" default="0.001"/>         <!-- If TF is used to get odometry, this is the default angular variance -->
  <arg name="odom_tf_linear_variance"  default="0.001"/>         <!-- 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="odom_max_rate"            default="0"/>
  <arg name="odom_expected_rate"       default="0"/>
  <arg name="imu_topic"                default="/imu/data"/>          <!-- only used with VIO approaches -->
  <arg name="wait_imu_to_init"         default="false"/>
  <arg name="use_odom_features"        default="false"/>

  <arg name="scan_cloud_assembling"              default="false"/>
  <arg name="scan_cloud_assembling_time"         default="1"/>      <!-- max_clouds and time should not be set at the same time -->
  <arg name="scan_cloud_assembling_max_clouds"   default="0"/>      <!-- max_clouds and time should not be set at the same time -->
  <arg name="scan_cloud_assembling_fixed_frame"  default=""/>
  <arg name="scan_cloud_assembling_voxel_size"   default="0.05"/>
  <arg name="scan_cloud_assembling_range_min"    default="0.0"/>    <!-- 0=disabled -->
  <arg name="scan_cloud_assembling_range_max"    default="0.0"/>    <!-- 0=disabled -->
  <arg name="scan_cloud_assembling_noise_radius"   default="0.0"/>    <!-- 0=disabled -->
  <arg name="scan_cloud_assembling_noise_min_neighbors"   default="5"/>

  <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) -->

  <arg name="gps_topic"                default="/gps/fix" />         <!-- gps async subscription -->

  <arg name="tag_topic"                default="/tag_detections" />  <!-- apriltags async subscription -->
  <arg name="tag_linear_variance"      default="0.0001" />
  <arg name="tag_angular_variance"     default="9999" />             <!-- >=9999 means ignore rotation in optimization, when rotation estimation of the tag is not reliable -->
  <arg name="fiducial_topic"           default="/fiducial_transforms" />  <!-- aruco_detect async subscription, use tag_linear_variance and tag_angular_variance to set covriance -->

  <!-- These arguments should not be modified directly, see referred topics without "_relay" suffix above -->
  <arg if="$(arg compressed)"     name="rgb_topic_relay"           default="$(arg rgb_topic)_relay"/>
  <arg unless="$(arg compressed)" name="rgb_topic_relay"           default="$(arg rgb_topic)"/>
  <arg if="$(arg compressed)"     name="depth_topic_relay"         default="$(arg depth_topic)_relay"/>
  <arg unless="$(arg compressed)" name="depth_topic_relay"         default="$(arg depth_topic)"/>
  <arg if="$(arg compressed)"     name="left_image_topic_relay"    default="$(arg left_image_topic)_relay"/>
  <arg unless="$(arg compressed)" name="left_image_topic_relay"    default="$(arg left_image_topic)"/>
  <arg if="$(arg compressed)"     name="right_image_topic_relay"   default="$(arg right_image_topic)_relay"/>
  <arg unless="$(arg compressed)" name="right_image_topic_relay"   default="$(arg right_image_topic)"/>
  <arg if="$(arg rgbd_sync)"      name="rgbd_topic_relay"          default="$(arg rgbd_topic)"/>
  <arg unless="$(arg rgbd_sync)"  name="rgbd_topic_relay"          default="$(arg rgbd_topic)_relay"/>

  <include file="$(find rtabmap_launch)/launch/rtabmap.launch">
    <arg name="stereo"         value="$(arg stereo)"/>
    <arg name="depth"          value="$(arg depth)"/>
    <arg name="subscribe_rgb"  value="$(arg subscribe_rgb)"/>

    <arg name="rtabmap_viz"    value="$(arg rtabmapviz)" />
    <arg name="rviz"           value="$(arg rviz)" />

    <arg name="localization"            value="$(arg localization)"/>
    <arg name="initial_pose"            value="$(arg initial_pose)"/>

    <arg name="use_sim_time"            value="$(arg use_sim_time)"/>

    <arg name="cfg"                     value="$(arg cfg)" />
    <arg name="gui_cfg"                 value="$(arg gui_cfg)" />
    <arg name="rviz_cfg"                value="$(arg rviz_cfg)" />

  <arg name="frame_id"                value="$(arg frame_id)"/>
  <arg name="odom_frame_id"           value="$(arg odom_frame_id)"/>
  <arg name="odom_frame_id_init"      value="$(arg odom_frame_id_init)"/>
  <arg name="map_frame_id"            value="$(arg map_frame_id)"/>
  <arg name="ground_truth_frame_id"   value="$(arg ground_truth_frame_id)"/>
  <arg name="ground_truth_base_frame_id" value="$(arg ground_truth_base_frame_id)"/>
  <arg name="namespace"               value="$(arg namespace)"/>
  <arg name="database_path"           value="$(arg database_path)"/>
  <arg name="queue_size"              value="$(arg queue_size)"/>
  <arg name="wait_for_transform"      value="$(arg wait_for_transform)"/>
  <arg name="args"                    value="$(arg args)"/>
  <arg name="rtabmap_args"            value="$(arg rtabmap_args)"/>
  <arg name="gdb"                     value="$(arg gdb)"/>
  <arg name="launch_prefix"           value="$(arg launch_prefix)"/>
  <arg name="clear_params"            value="$(arg clear_params)"/>
  <arg name="output"                  value="$(arg output)"/>
  <arg name="publish_tf_map"          value="$(arg publish_tf_map)"/>

  <arg name="approx_sync"               value="$(arg approx_sync)"/>
  <arg name="approx_sync_max_interval"  value="$(arg approx_sync_max_interval)"/>

  <arg name="rgb_topic"               value="$(arg rgb_topic)" />
  <arg name="depth_topic"             value="$(arg depth_topic)" />
  <arg name="camera_info_topic"       value="$(arg camera_info_topic)" />
  <arg name="depth_camera_info_topic" value="$(arg depth_camera_info_topic)" />

  <arg name="stereo_namespace"        value="$(arg stereo_namespace)"/>
  <arg name="left_image_topic"        value="$(arg left_image_topic)" />
  <arg name="right_image_topic"       value="$(arg right_image_topic)" />
  <arg name="left_camera_info_topic"  value="$(arg left_camera_info_topic)" />
  <arg name="right_camera_info_topic" value="$(arg right_camera_info_topic)" />

  <arg name="rgbd_sync"               value="$(arg rgbd_sync)"/>
  <arg name="approx_rgbd_sync"        value="$(arg approx_rgbd_sync)"/>
  <arg name="subscribe_rgbd"          value="$(arg subscribe_rgbd)"/>
  <arg name="rgbd_topic"              value="$(arg rgbd_topic)" />
  <arg name="depth_scale"             value="$(arg depth_scale)" />
  <arg name="rgbd_depth_scale"        value="$(arg rgbd_depth_scale)" />
  <arg name="rgbd_decimation"         value="$(arg rgbd_decimation)" />

  <arg name="compressed"              value="$(arg compressed)"/>
  <arg name="rgb_image_transport"     value="$(arg rgb_image_transport)"/>
  <arg name="depth_image_transport"   value="$(arg depth_image_transport)"/>

  <arg name="gen_cloud"               value="$(arg gen_cloud)"/>
  <arg name="gen_cloud_decimation"    value="$(arg gen_cloud_decimation)"/>
  <arg name="gen_cloud_voxel"         value="$(arg gen_cloud_voxel)"/>

  <arg name="subscribe_scan"          value="$(arg subscribe_scan)"/>
  <arg name="scan_topic"              value="$(arg scan_topic)"/>
  <arg name="subscribe_scan_cloud"    value="$(arg subscribe_scan_cloud)"/>
  <arg name="scan_cloud_topic"        value="$(arg scan_cloud_topic)"/>
  <arg name="subscribe_scan_descriptor" value="$(arg subscribe_scan_descriptor)"/>
  <arg name="scan_descriptor_topic"   value="$(arg scan_descriptor_topic)"/>
  <arg name="scan_deskewing"          value="$(arg scan_deskewing)"/>
  <arg name="scan_deskewing_slerp"    value="$(arg scan_deskewing_slerp)"/>
  <arg name="scan_cloud_max_points"   value="$(arg scan_cloud_max_points)"/>
  <arg name="scan_cloud_filtered"     value="$(arg scan_cloud_filtered)"/>
  <arg name="gen_scan"                value="$(arg gen_scan)"/>

  <arg name="gen_depth"                  value="$(arg gen_depth)" />
  <arg name="gen_depth_decimation"       value="$(arg gen_depth_decimation)" />
  <arg name="gen_depth_fill_holes_size"  value="$(arg gen_depth_fill_holes_size)" />
  <arg name="gen_depth_fill_iterations"  value="$(arg gen_depth_fill_iterations)" />
  <arg name="gen_depth_fill_holes_error" value="$(arg gen_depth_fill_holes_error)" />

  <arg name="visual_odometry"          value="$(arg visual_odometry)"/>
  <arg name="icp_odometry"             value="$(arg icp_odometry)"/>
  <arg name="odom_topic"               value="$(arg odom_topic)"/>
  <arg name="vo_frame_id"              value="$(arg vo_frame_id)"/>
  <arg name="publish_tf_odom"          value="$(arg publish_tf_odom)"/>
  <arg name="odom_tf_angular_variance" value="$(arg odom_tf_angular_variance)"/>
  <arg name="odom_tf_linear_variance"  value="$(arg odom_tf_linear_variance)"/>
  <arg name="odom_args"                value="$(arg odom_args)"/>
  <arg name="odom_sensor_sync"         value="$(arg odom_sensor_sync)"/>
  <arg name="odom_guess_frame_id"        value="$(arg odom_guess_frame_id)"/>
  <arg name="odom_guess_min_translation" value="$(arg odom_guess_min_translation)"/>
  <arg name="odom_guess_min_rotation"    value="$(arg odom_guess_min_rotation)"/>
  <arg name="odom_max_rate"            value="$(arg odom_max_rate)"/>
  <arg name="odom_expected_rate"       value="$(arg odom_expected_rate)"/>
  <arg name="imu_topic"                value="$(arg imu_topic)"/>
  <arg name="wait_imu_to_init"         value="$(arg wait_imu_to_init)"/>
  <arg name="use_odom_features"        value="$(arg use_odom_features)"/>

  <arg name="scan_cloud_assembling"              value="$(arg scan_cloud_assembling)"/>
  <arg name="scan_cloud_assembling_time"         value="$(arg scan_cloud_assembling_time)"/>
  <arg name="scan_cloud_assembling_max_clouds"   value="$(arg scan_cloud_assembling_max_clouds)"/>
  <arg name="scan_cloud_assembling_fixed_frame"  value="$(arg scan_cloud_assembling_fixed_frame)"/>
  <arg name="scan_cloud_assembling_voxel_size"   value="$(arg scan_cloud_assembling_voxel_size)"/>
  <arg name="scan_cloud_assembling_range_min"    value="$(arg scan_cloud_assembling_range_min)"/>
  <arg name="scan_cloud_assembling_range_max"    value="$(arg scan_cloud_assembling_range_max)"/>
  <arg name="scan_cloud_assembling_noise_radius"   value="$(arg scan_cloud_assembling_noise_radius)"/>
  <arg name="scan_cloud_assembling_noise_min_neighbors"   value="$(arg scan_cloud_assembling_noise_min_neighbors)"/>

  <arg name="subscribe_user_data"      value="$(arg subscribe_user_data)"/>
  <arg name="user_data_topic"          value="$(arg user_data_topic)"/>
  <arg name="user_data_async_topic"    value="$(arg user_data_async_topic)" />

  <arg name="gps_topic"                value="$(arg gps_topic)" />

  <arg name="tag_topic"                value="$(arg tag_topic)" />
  <arg name="tag_linear_variance"      value="$(arg tag_linear_variance)" />
  <arg name="tag_angular_variance"     value="$(arg tag_angular_variance)" />
  <arg name="fiducial_topic"           value="$(arg fiducial_topic)" />

  </include>

</launch>

rtabmap.ini:
[Core]
BRIEF\Bytes=32
BRISK\Octaves=3
BRISK\PatternScale=1
BRISK\Thresh=30
FAST\CV=0
FAST\Gpu=false
FAST\GpuKeypointsRatio=0.05
FAST\GridCols=0
FAST\GridRows=0
FAST\MaxThreshold=200
FAST\MinThreshold=7
FAST\NonmaxSuppression=true
FAST\Threshold=20
FREAK\NOctaves=4
FREAK\OrientationNormalized=true
FREAK\PatternScale=22
FREAK\ScaleNormalized=true
GFTT\BlockSize=3
GFTT\K=0.04
GFTT\MinDistance=7
GFTT\QualityLevel=0.001
GFTT\UseHarrisDetector=false
GTSAM\Optimizer=1
Grid\3D=true
Grid\CellSize=0.05
Grid\ClusterRadius=0.1
Grid\DepthRoiRatios=0.0 0.0 0.0 0.0
Grid\FlatObstacleDetected=true
Grid\FootprintHeight=0.0
Grid\FootprintLength=0.0
Grid\FootprintWidth=0.0
Grid\GroundIsObstacle=false
Grid\MapFrameProjection=false
Grid\MaxGroundAngle=45
Grid\MaxGroundHeight=0.0
Grid\MaxObstacleHeight=0.0
Grid\MinClusterSize=10
Grid\MinGroundHeight=0.0
Grid\NoiseFilteringMinNeighbors=2
Grid\NoiseFilteringRadius=0.05
Grid\NormalK=20
Grid\NormalsSegmentation=true
Grid\PreVoxelFiltering=true
Grid\RangeMax=5.0
Grid\RangeMin=0.0
Grid\RayTracing=false
Grid\Scan2dUnknownSpaceFilled=false
Grid\ScanDecimation=1
Grid\Sensor=1
GridGlobal\AltitudeDelta=0
GridGlobal\Eroded=false
GridGlobal\FootprintRadius=0.0
GridGlobal\FullUpdate=true
GridGlobal\MaxNodes=0
GridGlobal\MinSize=50
GridGlobal\OccupancyThr=0.5
GridGlobal\ProbClampingMax=0.971
GridGlobal\ProbClampingMin=0.1192
GridGlobal\ProbHit=0.7
GridGlobal\ProbMiss=0.4
GridGlobal\UpdateError=0.01
Icp\CCFilterOutFarthestPoints=false
Icp\CCMaxFinalRMS=0.2
Icp\CorrespondenceRatio=0.1
Icp\DebugExportFormat=
Icp\DownsamplingStep=1
Icp\Epsilon=0
Icp\Force4DoF=false
Icp\Iterations=30
Icp\MaxCorrespondenceDistance=0.1
Icp\MaxRotation=0.78
Icp\MaxTranslation=0.2
Icp\OutlierRatio=0.85
Icp\PMConfig=
Icp\PMMatcherEpsilon=0.0
Icp\PMMatcherIntensity=false
Icp\PMMatcherKnn=1
Icp\PointToPlane=true
Icp\PointToPlaneGroundNormalsUp=0.0
Icp\PointToPlaneK=5
Icp\PointToPlaneLowComplexityStrategy=1
Icp\PointToPlaneMinComplexity=0.02
Icp\PointToPlaneRadius=0.0
Icp\RangeMax=0
Icp\RangeMin=0
Icp\ReciprocalCorrespondences=true
Icp\Strategy=1
Icp\VoxelSize=0.05
KAZE\Diffusivity=1
KAZE\Extended=false
KAZE\NOctaveLayers=4
KAZE\NOctaves=4
KAZE\Threshold=0.001
KAZE\Upright=false
Marker\CornerRefinementMethod=0
Marker\Dictionary=0
Marker\Length=0
Marker\MaxDepthError=0.01
Marker\MaxRange=0.0
Marker\MinRange=0.0
Marker\Priors=
Marker\PriorsVarianceAngular=0.001
Marker\PriorsVarianceLinear=0.001
Marker\VarianceAngular=0.01
Marker\VarianceLinear=0.001
ORB\EdgeThreshold=19
ORB\FirstLevel=0
ORB\Gpu=false
ORB\NLevels=3
ORB\PatchSize=31
ORB\ScaleFactor=2
ORB\ScoreType=0
ORB\WTA_K=2
Optimizer\Epsilon=0.0
Optimizer\GravitySigma=0.3
Optimizer\Iterations=20
Optimizer\LandmarksIgnored=false
Optimizer\PriorsIgnored=true
Optimizer\Robust=false
Optimizer\Strategy=1
Optimizer\VarianceIgnored=false
PyMatcher\Cuda=true
PyMatcher\Iterations=20
PyMatcher\Model=indoor
PyMatcher\Path=
PyMatcher\Threshold=0.2
RGBD\LoopClosureReextractFeatures=false
RGBD\LoopCovLimited=false
RGBD\OptimizeMaxError=5 <!-- 3 -->
RGBD\ProximityPathFilteringRadius=1
Reg\Force3DoF=false
Reg\RepeatOnce=true
Reg\Strategy=0
SIFT\ContrastThreshold=0.04
SIFT\EdgeThreshold=10
SIFT\NFeatures=0
SIFT\NOctaveLayers=3
SIFT\RootSIFT=false
SIFT\Sigma=1.6
SURF\Extended=false
SURF\GpuKeypointsRatio=0.01
SURF\GpuVersion=false
SURF\HessianThreshold=500
SURF\OctaveLayers=2
SURF\Octaves=4
SURF\Upright=false
Stereo\DenseStrategy=0
Stereo\Eps=0.01
Stereo\Iterations=30
Stereo\MaxDisparity=128.0
Stereo\MaxLevel=5
Stereo\MinDisparity=0.5
Stereo\OpticalFlow=true
Stereo\SSD=true
Stereo\WinHeight=3
Stereo\WinWidth=15
StereoBM\BlockSize=15
StereoBM\Disp12MaxDiff=-1
StereoBM\MinDisparity=0
StereoBM\NumDisparities=128
StereoBM\PreFilterCap=31
StereoBM\PreFilterSize=9
StereoBM\SpeckleRange=4
StereoBM\SpeckleWindowSize=100
StereoBM\TextureThreshold=10
StereoBM\UniquenessRatio=15
StereoSGBM\BlockSize=15
StereoSGBM\Disp12MaxDiff=1
StereoSGBM\MinDisparity=0
StereoSGBM\Mode=2
StereoSGBM\NumDisparities=128
StereoSGBM\P1=2
StereoSGBM\P2=5
StereoSGBM\PreFilterCap=31
StereoSGBM\SpeckleRange=4
StereoSGBM\SpeckleWindowSize=100
StereoSGBM\UniquenessRatio=20
SuperPoint\Cuda=true
SuperPoint\ModelPath=
SuperPoint\NMS=true
SuperPoint\NMSRadius=4
SuperPoint\Threshold=0.010
Version=0.21.1
Vis\BundleAdjustment=1
Vis\CorFlowEps=0.01
Vis\CorFlowIterations=30
Vis\CorFlowMaxLevel=3
Vis\CorFlowWinSize=16
Vis\CorGuessMatchToProjection=false
Vis\CorGuessWinSize=40
Vis\CorNNDR=0.8
Vis\CorNNType=1
Vis\CorType=0
Vis\DepthAsMask=true
Vis\EpipolarGeometryVar=0.1
Vis\EstimationType=1
Vis\FeatureType=8
Vis\ForwardEstOnly=true
Vis\GridCols=1
Vis\GridRows=1
Vis\InlierDistance=0.1
Vis\Iterations=300
Vis\MaxDepth=0
Vis\MaxFeatures=1000
Vis\MeanInliersDistance=0.0
Vis\MinDepth=0
Vis\MinInliers=12
Vis\MinInliersDistribution=0.0
Vis\PnPFlags=0
Vis\PnPMaxVariance=0.0
Vis\PnPRefineIterations=0
Vis\PnPReprojError=2
Vis\RefineIterations=5
Vis\RoiRatios=0.0 0.0 0.0 0.0
Vis\SubPixEps=0.02
Vis\SubPixIterations=0
Vis\SubPixWinSize=3
g2o\Baseline=0.075
g2o\Optimizer=0
g2o\PixelVariance=1.0
g2o\RobustKernelDelta=8
g2o\Solver=0

[DatabaseViewer]
GraphView\current_goal_color=@Variant(\0\0\0\x43\x1\xff\xff\x80\x80\0\0\x80\x80\0\0)
GraphView\ensure_frame_visible=1
GraphView\global_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\0\0\0\0)
GraphView\global_path_color=@Variant(\0\0\0\x43\x1\xff\xff\x80\x80\0\0\x80\x80\0\0)
GraphView\global_path_visible=true
GraphView\gps_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\x80\x80\x80\x80\0\0)
GraphView\gps_graph_visible=true
GraphView\graph_visible=true
GraphView\grid_visible=true
GraphView\gt_color=@Variant(\0\0\0\x43\x1\xff\xff\xa0\xa0\xa0\xa0\xa4\xa4\0\0)
GraphView\gt_graph_visible=true
GraphView\inter_session_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\0\0\0\0)
GraphView\intra_inter_session_colors_enabled=false
GraphView\intra_session_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\0\0\0\0)
GraphView\link_width=0
GraphView\local_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\0\0\0\0)
GraphView\local_path_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\xff\xff\0\0)
GraphView\local_path_visible=true
GraphView\local_radius_visible=false
GraphView\loop_closure_outlier_thr=@Variant(\0\0\0\x87\0\0\0\0)
GraphView\max_link_length=@Variant(\0\0\0\x87<\xa3\xd7\n)
GraphView\neighbor_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\xff\xff\0\0)
GraphView\neighbor_merged_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xaa\xaa\0\0\0\0)
GraphView\node_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\xff\xff\0\0)
GraphView\node_odom_cache_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\x80\x80\0\0\0\0)
GraphView\node_radius=0.009999999776482582
GraphView\odom_cache_overlay=true
GraphView\orientation_ENU=false
GraphView\origin_visible=true
GraphView\referential_visible=true
GraphView\rejected_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
GraphView\user_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\0\0\0\0)
GraphView\view_plane=0
GraphView\virtual_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\xff\xff\0\0)
ImageViewA\alpha=100
ImageViewA\bg_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
ImageViewA\colormap=2
ImageViewA\colormap_max_range=@Variant(\0\0\0\x87\0\0\0\0)
ImageViewA\colormap_min_range=@Variant(\0\0\0\x87\0\0\0\0)
ImageViewA\depth_shown=false
ImageViewA\feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\0\0\0\0)
ImageViewA\features_shown=true
ImageViewA\features_size=0
ImageViewA\graphics_view=false
ImageViewA\graphics_view_scale=true
ImageViewA\graphics_view_scale_to_height=false
ImageViewA\image_shown=true
ImageViewA\lines_shown=true
ImageViewA\lines_width=0
ImageViewA\matching_feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\xff\xff\0\0)
ImageViewA\matching_line_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\xff\xff\0\0)
ImageViewB\alpha=100
ImageViewB\bg_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\0\0\0\0\0\0)
ImageViewB\colormap=2
ImageViewB\colormap_max_range=@Variant(\0\0\0\x87\0\0\0\0)
ImageViewB\colormap_min_range=@Variant(\0\0\0\x87\0\0\0\0)
ImageViewB\depth_shown=false
ImageViewB\feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\xff\xff\0\0\0\0)
ImageViewB\features_shown=true
ImageViewB\features_size=0
ImageViewB\graphics_view=false
ImageViewB\graphics_view_scale=true
ImageViewB\graphics_view_scale_to_height=false
ImageViewB\image_shown=true
ImageViewB\lines_shown=true
ImageViewB\lines_width=0
ImageViewB\matching_feature_color=@Variant(\0\0\0\x43\x1\xff\xff\xff\xff\0\0\xff\xff\0\0)
ImageViewB\matching_line_color=@Variant(\0\0\0\x43\x1\xff\xff\0\0\xff\xff\xff\xff\0\0)
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\a\xfc\0\0\0%\0\0\xe\x6\0\0\x4\xe\0\0\a\xfc\0\0\0J\0\0\xe\x6\0\0\x4\xe\0\0\0\x2\0\0\0\0\a\x80\0\0\a\xfc\0\0\0J\0\0\xe\x6\0\0\x4\xe)
grid\colorEmpty=#ffff00
grid\colorGround=#00ff00
grid\colorObstacle=#ff0000
grid\cropRadius=1
grid\poseFiltering=false
grid\poseFilteringAngle=30
grid\poseFilteringRadius=0.1
grid\probMap=false
icp\decimation=1
icp\icpFromDepth=false
icp\maxDepth=0
icp\minDepth=0
ignoreIntermediateNodes=false
loggerLevel=1
maximized=false
mesh\angleTolerance=15
mesh\fillDepthHolesError=10
mesh\fillDepthHolesSize=0
mesh\minClusterSize=0
mesh\quad=true
mesh\triangleSize=2
optimization\camProj=false
optimization\decimation=1
optimization\gainCompensationRadius=0
optimization\showDisp=false
optimization\voxelSize=0
state="@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x3\0\0\0\0\0\0\x1\xd9\0\0\x2\xb7\xfc\x2\0\0\0\x4\xfb\0\0\0(\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0g\0r\0\x61\0p\0h\0V\0i\0\x65\0w\x1\0\0\x1\xe\0\0\x2\xb7\0\0\x1S\0\xff\xff\xff\xfb\0\0\0\x30\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0g\0u\0i\0p\0\x61\0r\0\x61\0m\0\x65\0t\0\x65\0r\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xf2\0\xff\xff\xff\xfb\0\0\0\x32\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0\x63\0o\0r\0\x65\0p\0\x61\0r\0\x61\0m\0\x65\0t\0\x65\0r\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x63\0\xff\xff\xff\xfb\0\0\0*\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0s\0t\0\x61\0t\0i\0s\0t\0i\0\x63\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0*\0\xff\xff\xff\0\0\0\x1\0\0\0\0\0\0\0\0\xfc\x2\0\0\0\x2\xfb\0\0\0,\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0\x63\0o\0n\0s\0t\0r\0\x61\0i\0n\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\xc4\0\xff\xff\xff\xfb\0\0\0\x1e\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0i\0n\0\x66\0o\0\0\0\0\0\xff\xff\xff\xff\0\0\0k\0\xff\xff\xff\0\0\0\x2\0\0\x6\v\0\0\0\xf2\xfc\x1\0\0\0\x3\xfb\0\0\0*\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0s\0t\0\x65\0r\0\x65\0o\0V\0i\0\x65\0w\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xc8\0\xff\xff\xff\xfb\0\0\0\"\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0v\0i\0\x65\0w\0\x33\0\x64\x1\0\0\0\0\0\0\x6\v\0\0\x2'\0\xff\xff\xff\xfb\0\0\0\x38\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0_\0o\0\x63\0\x63\0u\0p\0\x61\0n\0\x63\0y\0G\0r\0i\0\x64\0V\0i\0\x65\0w\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xc8\0\xff\xff\xff\0\0\x4,\0\0\x2\xb7\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\0)"
timeStats=true
verticalLayout=false

[Gui]
ExportCloudsDialog\assemble=true
ExportCloudsDialog\assemble_samples=0
ExportCloudsDialog\assemble_voxel=0.01
ExportCloudsDialog\bilateral=false
ExportCloudsDialog\bilateral_sigma_r=0.1
ExportCloudsDialog\bilateral_sigma_s=10
ExportCloudsDialog\binary=true
ExportCloudsDialog\cam_proj=false
ExportCloudsDialog\cam_proj_decimation=1
ExportCloudsDialog\cam_proj_distance_policy=true
ExportCloudsDialog\cam_proj_export_format=0
ExportCloudsDialog\cam_proj_keep_points=false
ExportCloudsDialog\cam_proj_mask=
ExportCloudsDialog\cam_proj_max_angle=0
ExportCloudsDialog\cam_proj_max_distance=0
ExportCloudsDialog\cam_proj_recolor_points=true
ExportCloudsDialog\cam_proj_roi_ratios=0.0 0.0 0.0 0.0
ExportCloudsDialog\cputsdf_flattenRadius=0.005
ExportCloudsDialog\cputsdf_minWeight=0
ExportCloudsDialog\cputsdf_randomSplit=1
ExportCloudsDialog\cputsdf_resolution=0.01
ExportCloudsDialog\cputsdf_size=12
ExportCloudsDialog\cputsdf_truncNeg=0.03
ExportCloudsDialog\cputsdf_truncPos=0.03
ExportCloudsDialog\filtering=false
ExportCloudsDialog\filtering_min_neighbors=5
ExportCloudsDialog\filtering_radius=0
ExportCloudsDialog\frame=0
ExportCloudsDialog\from_depth=true
ExportCloudsDialog\gain=false
ExportCloudsDialog\gain_beta=10
ExportCloudsDialog\gain_full=false
ExportCloudsDialog\gain_overlap=0
ExportCloudsDialog\gain_radius=0.02
ExportCloudsDialog\gain_rgb=true
ExportCloudsDialog\intensity_colormap=0
ExportCloudsDialog\mesh=false
ExportCloudsDialog\mesh_angle_tolerance=15
ExportCloudsDialog\mesh_clean=true
ExportCloudsDialog\mesh_color_radius=0.03
ExportCloudsDialog\mesh_decimation_factor=0
ExportCloudsDialog\mesh_dense_strategy=1
ExportCloudsDialog\mesh_max_polygons=0
ExportCloudsDialog\mesh_min_cluster_size=0
ExportCloudsDialog\mesh_mu=2.5
ExportCloudsDialog\mesh_quad=false
ExportCloudsDialog\mesh_radius=0.2
ExportCloudsDialog\mesh_texture=false
ExportCloudsDialog\mesh_textureBlending=true
ExportCloudsDialog\mesh_textureBlendingDecimation=0
ExportCloudsDialog\mesh_textureBrightnessConstrastRatioHigh=5
ExportCloudsDialog\mesh_textureBrightnessConstrastRatioLow=0
ExportCloudsDialog\mesh_textureCameraFiltering=false
ExportCloudsDialog\mesh_textureCameraFilteringAngle=30
ExportCloudsDialog\mesh_textureCameraFilteringLaplacian=0
ExportCloudsDialog\mesh_textureCameraFilteringRadius=0
ExportCloudsDialog\mesh_textureCameraFilteringVel=0
ExportCloudsDialog\mesh_textureCameraFilteringVelRad=0
ExportCloudsDialog\mesh_textureDistanceToCamPolicy=false
ExportCloudsDialog\mesh_textureExposureFusion=false
ExportCloudsDialog\mesh_textureFormat=0
ExportCloudsDialog\mesh_textureMaxAngle=0
ExportCloudsDialog\mesh_textureMaxCount=1
ExportCloudsDialog\mesh_textureMaxDepthError=0
ExportCloudsDialog\mesh_textureMaxDistance=3
ExportCloudsDialog\mesh_textureMinCluster=50
ExportCloudsDialog\mesh_textureMultiband=false
ExportCloudsDialog\mesh_textureMultibandAngleHardThr=90
ExportCloudsDialog\mesh_textureMultibandBestScoreThr=0.1
ExportCloudsDialog\mesh_textureMultibandDownScale=2
ExportCloudsDialog\mesh_textureMultibandFillHoles=false
ExportCloudsDialog\mesh_textureMultibandForceVisible=false
ExportCloudsDialog\mesh_textureMultibandNbContrib=1 5 10 0
ExportCloudsDialog\mesh_textureMultibandPadding=5
ExportCloudsDialog\mesh_textureMultibandUnwrap=0
ExportCloudsDialog\mesh_textureRoiRatios=0.0 0.0 0.0 0.0
ExportCloudsDialog\mesh_textureSize=6
ExportCloudsDialog\mesh_triangle_size=1
ExportCloudsDialog\mls=false
ExportCloudsDialog\mls_dilation_iterations=1
ExportCloudsDialog\mls_dilation_voxel_size=0.005
ExportCloudsDialog\mls_output_voxel_size=0
ExportCloudsDialog\mls_point_density=10
ExportCloudsDialog\mls_polygonial_order=2
ExportCloudsDialog\mls_radius=0.04
ExportCloudsDialog\mls_upsampling_method=0
ExportCloudsDialog\mls_upsampling_radius=0.01
ExportCloudsDialog\mls_upsampling_step=0.005
ExportCloudsDialog\nodes_filtering=false
ExportCloudsDialog\nodes_filtering_xmax=0
ExportCloudsDialog\nodes_filtering_xmin=0
ExportCloudsDialog\nodes_filtering_ymax=0
ExportCloudsDialog\nodes_filtering_ymin=0
ExportCloudsDialog\nodes_filtering_zmax=0
ExportCloudsDialog\nodes_filtering_zmin=0
ExportCloudsDialog\normals_ground_normals_up=0
ExportCloudsDialog\normals_k=20
ExportCloudsDialog\normals_radius=0
ExportCloudsDialog\openchisel_carving_dist_m=0.05
ExportCloudsDialog\openchisel_chunk_size_x=16
ExportCloudsDialog\openchisel_chunk_size_y=16
ExportCloudsDialog\openchisel_chunk_size_z=16
ExportCloudsDialog\openchisel_far_plane_dist=1.1
ExportCloudsDialog\openchisel_integration_weight=1
ExportCloudsDialog\openchisel_merge_vertices=true
ExportCloudsDialog\openchisel_near_plane_dist=0.05
ExportCloudsDialog\openchisel_truncation_constant=0.001504
ExportCloudsDialog\openchisel_truncation_linear=0.00152
ExportCloudsDialog\openchisel_truncation_quadratic=0.0019
ExportCloudsDialog\openchisel_truncation_scale=10
ExportCloudsDialog\openchisel_use_voxel_carving=false
ExportCloudsDialog\pipeline=1
ExportCloudsDialog\poisson_depth=0
ExportCloudsDialog\poisson_iso=8
ExportCloudsDialog\poisson_manifold=true
ExportCloudsDialog\poisson_minDepth=5
ExportCloudsDialog\poisson_outputPolygons=false
ExportCloudsDialog\poisson_pointWeight=4
ExportCloudsDialog\poisson_polygon_size=0.03
ExportCloudsDialog\poisson_samples=1
ExportCloudsDialog\poisson_scale=1.1
ExportCloudsDialog\poisson_solver=8
ExportCloudsDialog\regenerate=true
ExportCloudsDialog\regenerate_ceiling=0
ExportCloudsDialog\regenerate_decimation=1
ExportCloudsDialog\regenerate_distortion_model=
ExportCloudsDialog\regenerate_fill_error=2
ExportCloudsDialog\regenerate_fill_size=0
ExportCloudsDialog\regenerate_floor=0
ExportCloudsDialog\regenerate_footprint_height=0
ExportCloudsDialog\regenerate_footprint_length=0
ExportCloudsDialog\regenerate_footprint_width=0
ExportCloudsDialog\regenerate_max_depth=4
ExportCloudsDialog\regenerate_min_depth=0
ExportCloudsDialog\regenerate_roi=0.0 0.0 0.0 0.0
ExportCloudsDialog\regenerate_scan_decimation=1
ExportCloudsDialog\regenerate_scan_max_range=0
ExportCloudsDialog\regenerate_scan_min_range=0
ExportCloudsDialog\subtract=false
ExportCloudsDialog\subtract_min_neighbors=5
ExportCloudsDialog\subtract_point_angle=0
ExportCloudsDialog\subtract_point_radius=0.02
PostProcessingDialog\cluster_angle=30
PostProcessingDialog\cluster_radius=1
PostProcessingDialog\cluster_radius_min=0
PostProcessingDialog\inter_session=true
PostProcessingDialog\intra_session=true
PostProcessingDialog\iterations=5
Can you please help me with this and suggest me some papers, which would help me get the better quality of paper?

Thanks.




Reply | Threaded
Open this post in threaded view
|

Re: Stereo B Mapping Problem

matlabbe
Administrator

The texture looks repeating 4 times. I don't know how the texture is setup, but if it has to be set on 4 different tiles, you may generate 4 different textures. Otherwise, to debug more, if you can record a rosbag of the input topics + tf and tf_static, or share a resulting database, that could help (to see at least if the input topics are fine).


That paper (ref) includes the main parts to know about rtabmap.