Noisy 3D PointCloud, objects not aligned, poor loop closure, and odometry lost

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

Noisy 3D PointCloud, objects not aligned, poor loop closure, and odometry lost

This post was updated on .
Dear People.

I do have an Asus Xtion Pro running under ros-noetic.   I have been inspired by the following links:

  and link2

I have few questions:

1.- Why Mapcloud topic generates a smother and cleaner image than the  cloud_map or octomap_occupied_space, as seen in the figures below.

2.-The cloud_map generates a more noisy image, maybe it has to do with some outliers boundary. How can we clean this image so it looks more than the mapcloud image?,
    This parameter filter the roof, <--param name="Grid/MaxObstacleHeight" type="string" value="1.0" />, is there another parameter that could clean the image.

3.-Sometimes the odometry get lost, then I have to wait till it get reset it and it is on its own track, is there a way to solve the odom problem?

4.-we can see in the mapcloud image that some walls are not aligned even though there is a loop closure,  it is like the map does not delete the not aligned objects when there is a loop closure, is there a way to solve that issue?

5.-The Figure below shows not loop closure, even the sensor has passed twice over the same place, I have set the parameter RGBD/OptimizeMaxError to zero to accept all loop closures. Is there another parameter. Can the problem be solved?

This is the launch file:

<include file="$(find openni_launch)/launch/openni.launch"/> 
  <group ns="rtabmap">

    <node pkg="nodelet" type="nodelet" name="rgbd_sync" args="standalone rtabmap_ros/rgbd_sync" output="screen">
      <remap from="rgb/image"        to="/camera/rgb/image_rect_color"/>
      <remap from="depth/image"      to="/camera/depth_registered/image_raw"/>
      <remap from="rgb/camera_info"  to="/camera/rgb/camera_info"/>
      <remap from="rgbd_image"       to="rgbd_image"/> <!-- output -->
      <!-- Should be true for not synchronized camera topics 
           (e.g., false for kinectv2, zed, realsense, true for xtion, kinect360)-->
      <param name="approx_sync"       value="true"/> 

    <!-- Odometry -->
    <node pkg="rtabmap_ros" type="rgbd_odometry" name="rgbd_odometry" output="screen">
      <--param name="subscribe_rgbd" type="bool"   value="true"/>
      <--param name="frame_id"       type="string" value="camera_link"/>
      <remap from="rgbd_image" to="rgbd_image"/>
     <node pkg="rtabmap_ros" type="rtabmap" name="rtabmap" output="screen" args="-d">	  
        <--param name="frame_id"              type="string"  value="camera_link"/>  
        <--param name="subscribe_depth"       type="bool"    value="false"/>
        <--param name="subscribe_rgb"         type="bool"    value="false"/>
        <--param name="subscribe_rgbd"        type="bool"    value="true"/>
        <--param name="subscribe_scan_cloud"  type="bool"    value="true"/>
        <--param name="approx_sync"           type="bool"    value="true"/>
        <remap from="scan_cloud" to="/camera/depth_registered/points"/>
        <remap from="rgbd_image" to="rgbd_image"/>
        <remap from="odom" to="odom"/>
       <!-- RTAB-Map's parameters -->
         <--param name="Odom/ResetCountdown"              value="1" /> <!-- 1 reset the odometry -->
         <--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="Reg/Force3DoF"              type="string" value="true"/>
         <--param name="Reg/Strategy"               type="string" value="0"/> <!-- 1=ICP -->
         <--param name="RGBD/OptimizeMaxError"      type="string" value="0"/><!-- accept all loopclosures -->


Mapcloud Image with some not aligned objects

Noisy cloud_map image

Macloud image with poor loop closure

Thank you so much

Reply | Threaded
Open this post in threaded view

Re: Noisy 3D PointCloud, objects not aligned, poor loop closure, and odometry lost


1. MapCloud is created with parameters in MapCloud plugin. For cloud_map, clouds are created using parameters "rtabmap --params | grep Grid/". The max cloud depth may be set for MapCloud but not for cloud_map (which is Grid/RangeMax).

2. See 1. Also, you don't need to add double-dash before param tags.

3. You could use an external odometry that may be more robust for your environment and motion, or avoid all events described here.

4. It is more an issue of the quality of odometry and the loop closures. Having odometry with less drift and more frequent loop closures can help to reduce this effect.

5. You would have to look at the terminal to know why loop closures are rejected, there should be a warning if so (not enough inliers for example). If there is nothing, it means loop closure detector cannot make good hypotheses, Rtabmap/LoopThr (default 0.11) could be lowered to try more hypotheses.

Reply | Threaded
Open this post in threaded view

Re: Noisy 3D PointCloud, objects not aligned, poor loop closure, and odometry lost

This post was updated on .
Hi Mathieu

Thank you for your replay, I have posted a link  where I made changes.  If you do not mind and take a look and give me your suggestions,

Thank you.