Forcing 3DoF won't work on localization using libpointmatcher

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

Forcing 3DoF won't work on localization using libpointmatcher

Shoi.H
Hello,

When I run rtabmap in localization mode (forcing 3DoF using libpointmatcher, icp odometry),
the transform /map->/odom evaluates all the 6 DoF anyway.
This problem won't happens in mapping mode.

I'm using libpointmatcher because "ICP PointToPlane ignored for 2d scans with PCL registration" warning occured when setting Icp/PointToPlane to true.
I'm not sure whether this is an issue of rtabmap or a libpointmatcher.
I'm using 2D LiDAR, and latest source of rtabmap, rtabmap_ros, libpointmatcher.
This is my icp_odometry parameters:
 * /rtabmap/icp_odometry/Icp/CorrespondenceRatio: 0.1
 * /rtabmap/icp_odometry/Icp/DownsamplingStep: 1
 * /rtabmap/icp_odometry/Icp/Epsilon: 0.01
 * /rtabmap/icp_odometry/Icp/Iterations: 10
 * /rtabmap/icp_odometry/Icp/MaxCorrespondenceDistance: 0.3
 * /rtabmap/icp_odometry/Icp/MaxTranslation: 0
 * /rtabmap/icp_odometry/Icp/PM: true
 * /rtabmap/icp_odometry/Icp/PMOutlierRatio: 0.65
 * /rtabmap/icp_odometry/Icp/PointToPlane: true
 * /rtabmap/icp_odometry/Icp/VoxelSize: 0.3
 * /rtabmap/icp_odometry/Odom/ResetCountdown: 1
 * /rtabmap/icp_odometry/Odom/Strategy: 1
 * /rtabmap/icp_odometry/Reg/Force3DoF: true
 * /rtabmap/icp_odometry/config_path: 
 * /rtabmap/icp_odometry/frame_id: base_link
 * /rtabmap/icp_odometry/ground_truth_base_frame_id: 
 * /rtabmap/icp_odometry/ground_truth_frame_id: 
 * /rtabmap/icp_odometry/guess_frame_id: 
 * /rtabmap/icp_odometry/guess_min_rotation: 0.0
 * /rtabmap/icp_odometry/guess_min_translation: 0.0
 * /rtabmap/icp_odometry/odom_frame_id: odom
 * /rtabmap/icp_odometry/queue_size: 10
 * /rtabmap/icp_odometry/wait_for_transform_duration: 0.2

Thanks.
Reply | Threaded
Open this post in threaded view
|

Re: Forcing 3DoF won't work on localization using libpointmatcher

matlabbe
Administrator
Hi,

You should set the following parameters:
Icp/CorrespondenceRatio: 0.1
Icp/DownsamplingStep: 1
Icp/Epsilon: 0.01
Icp/Iterations: 10
Icp/MaxCorrespondenceDistance: 0.3
Icp/MaxTranslation: 0
Icp/PM: true
Icp/PMOutlierRatio: 0.65
Icp/PointToPlane: true
Icp/VoxelSize: 0.3
Reg/Force3DoF: true

to rtabmap node too with also "Reg/Strategy: 1" (not needed for icp_odometry, it is already set to that by default).

For more help, can you provide the launch file?

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

Re: Forcing 3DoF won't work on localization using libpointmatcher

Shoi.H
Hi, Mathieu
Thanks for your reply.

The parameters you suggested were already set.
I'll attach launch files.

rtabmap_localization_icp.launch
rtabmap_custom_icp.launch
Reply | Threaded
Open this post in threaded view
|

Re: Forcing 3DoF won't work on localization using libpointmatcher

matlabbe
Administrator
Hi,

I see "Reg/Force3DoF" set to "true" for rgbd_odometry and icp_odometry nodes, but not for rtabmap node.

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

Re: Forcing 3DoF won't work on localization using libpointmatcher

Shoi.H
Hi, Mathieu
Thanks for your reply.

After setting "Reg/Force3DoF" to "true" for rtabmap node and recreating the map,
It worked well.

Regards,
Shoi