在机器人应用开发过程中,通常需要先对环境进行建图处理,然后基于建好的地图进行定位与导航,那一种思路就是对SLAM算法进行修改,用来做定位;还有就是重新设计定位框架啦,当然定位中点云与地图的匹配过程与SLAM中还是基本一致的。
下面列举几种开源的定位框架,大家做参考:
一、 mcl_3dl
基于点云地图的蒙特卡洛定位,可提供3自由度或6自由度的定位信息。目前适用于差分底盘。
可以选择使用或不使用odometry及IMU。
如果要执行全局定位,可执行
rosservice call /global_localization
二、 ROLL:A real-time, robust LiDAR-inertial localization system
这个工作还是挺有意思的,是一个long-term的激光定位方法,适用于动态场景的定位。
首先,提出了一个基于LOAM的全局matching的模块,包含temporary mapping,能够有效防止在场景发生比较大变化或者地图未覆盖的定位失败问题。当检测匹配可靠时,建好的temporary map就会被合并到全局地图。
其次,提出了一个Pose Fusion模块,对LIO的位姿和global matching的位姿进行一致性检查,并输出融合后的位姿。
论文:IROS 2022ROLL: Long-Term Robust LiDAR-based Localization With Temporary Mapping in Changing Environments
三、 LOL: Lidar-only Odometry and Localization in 3D point cloud maps
1. 基于LOAM和SegMap两种sota算法,提出了一种纯激光的里程计和定位系统。为了纠正LOAM里程计的累积漂移,应用SegMap位置识别方法来检测在线3D点云和先前离线地图之间的几何相似位置。
2. 基于RANSAC进行几何验证,以减少在线点云与离线地图之间的虚假匹配数量;
3. 细粒度的ICP对齐,以在检测到良好匹配时优化重新定位的准确性。
论文:
LOL: Lidar-only Odometry and Localization in 3D point cloud maps
四、DLL: Direct Lidar Localization
本身是为无人机开发。DLL实现了基于点云到地图的配准,基于点与地图之间的距离的非线性优化,因此不需要特征,也不需要点对应。给定初始姿态,该方法能够通过从里程计预测姿态进行细化来跟踪机器人的姿态。该方法宣称比蒙特卡罗定位方法表现更好,并且达到了与其他基于优化的方法相当的精度,但速度快一个数量级。该方法在里程计有误差的情况下也很稳健。
虽然建议使用里程计系统进行快速和准确的定位,但如果机器人移动平稳,DLL在没有里程计信息的情况下也能表现良好。
论文:IROS 2021
DLL: Direct LIDAR Localization. A map-based localization approach for aerial robots