LOAM: Lidar Odometry and Mapping in Real-time使用IMU作为辅助手段有效祛除非线性运动,处理线性运动
值得注意的是,后续里程计处理的点全部经过预处理:
1)利用来自惯性测量单元Xsens MTi-10 IMU的方向,旋转在一次扫描中接收的点云,以与激光雷达在该扫描中的初始方向对齐,
2)利用加速度测量,运动失真被部分消除,就像激光雷达在扫描期间以恒定速度移动一样。点云然后由激光雷达里程计和绘图程序处理。
中心思想:
作者把复杂的SLAM问题一分为二,一个算法是高频率(10hz)低精度的odometry过程,另外一个算法是低频率(1hz)高精度的mapping过程,两者结合起来,可以做到低计算量、低漂移和高精度SLAM。如果IMU可用,则其速度测量值可以作为算法一的先验。为了确保odometry的实时性,两个算法都需要提取线特征和面特征。而在mapping算法中,地图的一致性是由局部点云簇的几何分布决定的,通过计算其特征值和特征向量。mapping过程使用icp算法来保证其高精度。
作者认为车辆在SLAM过程中是随着时间持续的匀速平滑运动,并且没有突变。需要注意的是lidar坐标系为左x,上y,前z。问题简化为:给定连续的点云帧Pk,计算每连续两帧点云间车辆的运动位姿变换,并且构建这段时间内的场景地图。其系统架构如下:
算法步骤:
1)、特征点提取:
在每一个sweep中,根据曲率对点进行排序,来作为评价局部表面平滑性的标准。曲率最大的为边缘点,曲率最小的为平面点。每一个局部区域必须提取2个边缘点和4个平面点。提取过程中避免提取两类点:即 :大致位于平行于激光束的曲面片上的点和被遮挡物体的边缘点。
2)、运动估计
作者认为激光雷达扫描一圈过程中,车辆是匀速运动的,在此过程中,可以对平移T进行线性插值。
两帧之间的变换为
用罗德里格斯公式表示旋转矩阵R
连续两帧,两种特征点的几何关系
联立非线性方程
最后计算雅克比矩阵J,用非线性优化的办法最小化d
算法步骤如下:
建图:
可以参考的优秀博文:
LOAM-SLAM原理的深度解析