localization accuracy of rtabmap_ros package in simulated environment

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

localization accuracy of rtabmap_ros package in simulated environment

DilipDhapse
Hi sir,

I have built a simulated outdoor environment.


Turtlebot robot with stereo camera publishing stereo images and camera info.

/clock
/cmd_vel
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/gazebo_gui/parameter_descriptions
/gazebo_gui/parameter_updates
/gazebo_odom
/imu
/joint_states
/rosout
/rosout_agg
/scan
/stereo_camera/left/camera_info
/stereo_camera/left/image_raw
/stereo_camera/left/image_raw/compressed
/stereo_camera/left/image_raw/compressed/parameter_descriptions
/stereo_camera/left/image_raw/compressed/parameter_updates
/stereo_camera/left/image_raw/compressedDepth
/stereo_camera/left/image_raw/compressedDepth/parameter_descriptions
/stereo_camera/left/image_raw/compressedDepth/parameter_updates
/stereo_camera/left/image_raw/theora
/stereo_camera/left/image_raw/theora/parameter_descriptions
/stereo_camera/left/image_raw/theora/parameter_updates
/stereo_camera/left/parameter_descriptions
/stereo_camera/left/parameter_updates
/stereo_camera/right/camera_info
/stereo_camera/right/image_raw
/stereo_camera/right/image_raw/compressed
/stereo_camera/right/image_raw/compressed/parameter_descriptions
/stereo_camera/right/image_raw/compressed/parameter_updates
/stereo_camera/right/image_raw/compressedDepth
/stereo_camera/right/image_raw/compressedDepth/parameter_descriptions
/stereo_camera/right/image_raw/compressedDepth/parameter_updates
/stereo_camera/right/image_raw/theora
/stereo_camera/right/image_raw/theora/parameter_descriptions
/stereo_camera/right/image_raw/theora/parameter_updates
/stereo_camera/right/parameter_descriptions
/stereo_camera/right/parameter_updates
/tf
/tf_static


this is my rtabmap launch file.

<launch>


   
   <arg name="rviz"       default="true" />
   <arg name="rtabmapviz" default="true" />

   <arg name="rate"       default="20" />

   <arg name="ground_is_obstacle" default="false"/>
   <arg name="align_with_ground"  default="false"/>
   <arg name="localization_mode"  default="false"/>



   <group ns="/stereo_camera" >
      <node pkg="stereo_image_proc" type="stereo_image_proc" name="stereo_image_proc">
         <remap from="left/image_raw"    to="/stereo_camera/left/image_raw"/>
         <remap from="left/camera_info"  to="/stereo_camera/left/camera_info"/>
         <remap from="right/image_raw"   to="/stereo_camera/right/image_raw"/>
         <remap from="right/camera_info" to="/stereo_camera/right/camera_info"/>
         
      </node>
   </group>




   <arg     if="$(arg localization_mode)" name="arg"  default="--Vis/EstimationType 1 --Vis/MinInliers 15 --SURF/HessianThreshold 100 --Grid/3DGroundIsObstacle $(arg ground_is_obstacle) --Odom/AlignWithGround $(arg align_with_ground)"/>
   <arg unless="$(arg localization_mode)" name="arg"  default="--delete_db_on_start --Vis/EstimationType 1 --Vis/MinInliers 15 --SURF/HessianThreshold 100 --Grid/3DGroundIsObstacle $(arg ground_is_obstacle) --Odom/AlignWithGround $(arg align_with_ground)"/>

   <include file="$(find rtabmap_ros)/launch/rtabmap.launch">
      <arg name="rtabmap_args"     value="$(arg arg)" />
      <arg name="stereo"           value="true" />
      <arg name="rviz"             value="$(arg rviz)" />
      <arg name="rtabmapviz"       value="$(arg rtabmapviz)" />
      <arg name="visual_odometry"  value="false"/>
      <arg name="odom_topic"       value="/gazebo_odom"/>
      <arg name="localization"     value="$(arg localization_mode)"/>

   </include>



 
  <arg name="model" default="waffle_pi" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="cmd_vel_topic" default="/cmd_vel" />

  <arg name="move_forward_only" default="false"/>

 
  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
   
    <rosparam file="$(find zed_rtabmap_example)/config/costmap_common_params_$(arg model).yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find zed_rtabmap_example)/config/costmap_common_params_$(arg model).yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find zed_rtabmap_example)/config/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find zed_rtabmap_example)/config/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find zed_rtabmap_example)/config/move_base_params.yaml" command="load" />
    <rosparam file="$(find zed_rtabmap_example)/config/dwa_local_planner_params_$(arg model).yaml" command="load" />
    <remap from="cmd_vel" to="$(arg cmd_vel_topic)"/>
    <remap from="odom" to="/gazebo_odom"/>
    <remap from="map" to="/rtabmap/grid_map"/>
   
  </node>

</launch>


2D and 2D map and rtabmap database are created, using this slam node.




after that, I have changed the mode in localization. by setting parameter localization to true.
I got map loader and rviz and rtabmapviz ready for visualization.

to check localization accuracy I kept robot in a mapped region of environment.



rtabmapviz shows a matching ID of current view frame and database frame.

according to the new match, ID tf is published and we got a new pose of the robot in rviz.

match ID and view ID of a frame are.


Match ID frame details from the database are.




New estimated pose is.




you can see there is lot of difference in actual pose and estimate localization.










 
Reply | Threaded
Open this post in threaded view
|

Re: localization accuracy of rtabmap_ros package in simulated environment

matlabbe
Administrator
This post was updated on .
Hi,

it looks like that the repetitive pattern of the grass is causing some
troubles. My guess is that it used most of the features on the ground to
find the transform, which may be exactly the same ground than the real
position. Without remapping or changing the floor texture, it is possible
to limit the area in the image that are used for loop closure detection.

Parameter Kp/RoiRatios and Vis/RoiRatios can be set to "0.0
0.0 0.0 0.3" to filter 30% of the bottom of images.

cheers,
Mathieu

crossref: see also https://github.com/introlab/rtabmap_ros/issues/353