L-SLAM相关论文
LOAM: Lidar Odometry and Mapping in Real-time, 2014
概述:该论文是Lidar 3D SLAM的经典之作,作者另辟蹊径将复杂的SLAM问题分为:1. 高频的运动估计; 2. 低频的环境建图,巧妙地解决了实时性的难题。该解决方案也长期位居KITTI Odometry评测榜的前3名。
论文笔记:
LOAM 论文原理分析
简述
LOAM源码主要由四个节点构成,分别完成特征点提取,高频低精度odom, 低频高精度odom, 双频odom融合的功能,每个节点以rosnode的形式存在, 也就是说是独立的进程,进程间通过rostopic传递点云, odom等数据。
ScanRegistration节点
根据VLP16的激光扫描模型, 对单帧点云(paper中称为一个Sweep)进行分线束(分为16束), 每束称为一个Scan, 并记录每个点所属线束和每个点在此帧点云内的相对扫描时间(相对于本帧第一个点)。
针对单个Scan提取特征点, 而相对时间会在laserOdometry中用于运动补偿.所有Scan的特征点,拼到两个点云中(因为是corner和surface两种特征点,所以是两个点云).至此,每帧点云,输出两帧对应的特征点云, 给下一个节点laserOdometry。
laserOdometry节点
实现运动补偿和帧间配准.每帧激光都会参与(所以帧率同VLP16的扫描帧率,10hz).通过对每一帧激光的配准,可以得到一个精度较差的ODOM,帧与帧配准的初始POSE可以由IMU得到,或者在没有IMU的时候由匀速运动模型(简单的说就是假设这一帧运动量与上一帧一致)得到。
本节点输出的ODOM频率为10hz.此ODOM的作用:
(a) 在laserMapping中用于位姿的预测。
(b) 在transformMaintenance中为laserMapping输出的低频ODOM提供插值,以获得高频(10HZ)的ODOM.
在实际应用中,帧间匹配实现的ODOM,可以由IMU, 视觉里程计,底盘编码器等替代.而运动补偿在高速场景是不可或缺的.
LaserMapping节点
本节点实现了一个较为完整的SLAM过程,也就是同时建图和定位.主要工作:
(a)通过将多帧的激光特征点云基于POSE拼接,形成特征点云地图.前面有提到特征包含corner和surface两种,那么这里就是建立了两种特征点云地图.
(b)将新入的帧与地图作配准,得到更精准的POSE.我们又将基于这个POSE执行a过程进行建图。
由于单帧与地图配准计算量较大,本节点没有将所有帧与地图进行配准,而是间隔几帧,比如每5帧配准一次(那么频率就是2hz).如果你的应用场景运算性能完全够, 你可以一帧一匹配.如果这样, transformMaintenance这个节点就没有存在的意义了.
如果你能将本节点生成的特征地图存下来, 那么就可以将这些地图作为离线地图。我们可以在在线场景中, 把这个地图输入给laserMapping节点,实现定位的功能.
laserOdometry和laserMapping中都涉及到点云配准问题.
点云的配准问题一般有一个source和一个target,配准的目的是旋转和平移source点云使得source点云与target点云尽量重叠.
在laserOdometry中配准的source是新一帧的点云,target是前一帧的点云.
在laserMapping中配准的source是新一帧的点云,target是前面的点云拼接成的地图.
当然,我们这里说的点云指的是特征点云, 分为corner和surface两种,corner对应corner map, surface对应surface map.
优化流程:
通过ODOM预测得到初始位姿,source中的corner在target的corner中寻找对应直线, source中的surface在target的surface中寻找对应平面,
通过点-线和点面关联共同构建约束, 以点线距离和点面距离作为loss, 基于非线性最小二乘的方法进行优化.求解得出最优pose.
TransformMaintenance节点
使用laserOdometry输出的odom(高频率)对laserMapping输出的odom(低频率)进行插值。
论文见附件
https://frc.ri.cmu.edu/~zhangji/publications/RSS_2014.pdf