MaverickPeter / MR_SLAM

[IEEE T-RO 2023] A modularized multi-robot SLAM system with elevation mapping and a costmap converter for easy navigation. Different odometry and loop closure algorithms can be easily integrated into the system.
MIT License
262 stars 20 forks source link

ICP fitness score is larger than threshold, reject the loop. #26

Open DioBakery opened 2 months ago

DioBakery commented 2 months ago

为什么其他数据集一直都是ICP fitness score is larger than threshold, reject the loop.,像m2dgr,graco这些都试过了,disco和scancontext也都试过了,readme里提供的数据集能够很好地实现回环检测,但是换数据集后fitness一直没有达到阈值,是否有其他的初始设置我没有做?比如frame_id、初始位姿啥的?我只调整了fastlio的相关配置,这一块能够正常输出submap,loopdetection里的num_xxx这些参数也尝试调整过了但是没有效果。请问用其他数据集有哪些要注意的? image

MaverickPeter commented 2 months ago

@DioBakery 你可以在loopdetection/xxx/main.py 里把icp_fitness_score 调大,以应对不同的数据。不同激光的数据密度不一样,直接影响了icp最后的匹配效果,在提供的数据集里为了减少outlier,icp_fitness_score参数设的比较严格,直接应用到别的数据集会导致一直reject。

DioBakery commented 2 months ago

@DioBakery 你可以在loopdetection/xxx/main.py 里把icp_fitness_score 调大,以应对不同的数据。不同激光的数据密度不一样,直接影响了icp最后的匹配效果,在提供的数据集里为了减少outlier,icp_fitness_score参数设的比较严格,直接应用到别的数据集会导致一直reject。

但是这似乎很少有明显很小的fitness产生,几乎都差不很多,如果提高阈值,似乎会产生一些不正常的机器人间回环。是不是在生成scancontext或进行fastgicp这些地方的参数也需要调整?应该如何调整?

MaverickPeter commented 2 months ago

这个得看具体点云数据的情况,现在默认fast_gicp对输入点云有0.2的voxelize,可能也可以调整到0.1看下。还有就是输入点云的xyz轴的大小,在load_pc_infer里面,需要针对性修改