Questions about icp_odometry node.

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

Questions about icp_odometry node.

Mikor
Hi Mathieu,

I am trying to understand how icp_odometry node works and I have a question regarding the relationship of the key frame and the pointcloud map, more specifically about the subtract filtering. In the paper with the title RTAB-Map as an Open-Source Lidar and Visual SLAM Library for Large-Scale and Long-Term Online Operation it is written that the map is subtracted from the new point cloud using a maximum radius of OdomF2M/ScanSubtractRadius then the remaining points are added to the point cloud map.

[0] I do not quite understand why is this happening. Also where does this radius is referring to ? The center of the scan ? And if yes then why it is suggested to match the voxel size, let's say that this radius is set to 0.5 then almost nothing would be subtracted, isn't this the case or am I missing something?

[1] Also, is this process repeated until the current scan becomes Key Frame



or the arrow from the Point Cloud Map update square that goes to the ICP registration refers to the fact that the Point Cloud Map will be the cloud to register the next cloud?

Regards,
Anthony.
Reply | Threaded
Open this post in threaded view
|

Re: Questions about icp_odometry node.

matlabbe
Administrator
Hi Anthony,

[0] When adding a new KeyFrame, in S2M mode (ignore green links), we subtract the current cloud from the current local map, then add the difference to local map The subtraction between the two clouds is done by looking: for each point in the new scan, if there is a point the local map inside the subtract radius from that point, then don't add it to local map. If the new point found no points from the local map inside that radius, then the point is added to local map. Ideally, we would want to keep the same density set to local map (the voxel size), so it is why I generally set the same value for the subtract radius.

[1] The subtract filtering is not done when no new key frame is required. The local map is then a combination of multiple KeyFrames, the Point Cloud Map in this figure. It is the reference cloud on which the next scan is registered to (ICP).

With rviz, you can subscribe to odom_local_scan_map to visualize the Point Cloud Map from icp_odometry. The topic odom_last_frame is the output just after Point Cloud Filtering. Those 2 clouds are registered with ICP.

cheers,
Mathieu