LOAM: Lidar Odometry and Mapping in Real-time
目录
文章主要算法分为5个小部分:
A. Feature Point Extraction
定义评价表面平滑程度smoothness的计算方法如下:

根据smoothness程度选取关键特征点,一帧内最大的几个点为edge points,一帧内比较小的几个点为planar points。
为了均匀的分配环境的特征点,我们把一根扫描线scan分为4块相同的子区域。每一个子区域提供最大2个边线点和4个平面点。一个点能被选成一个边线或者平面点的条件是:只有它的c值大于或者小于一个阈值,同时被选中的点的数目不能超过最大值。
两种情况下的点不能被选为特征点:
-
平行于雷达发射laser beam的点不能选
-
在遮挡处的角点不能选,换了个角度可能就是一个普通可观测的点
B. Finding Feature Point Correspondence
论文里面讲的是里程计估计的是一帧内(a sweep)的运动,用 T k T_k Tk表示一帧数据k的开始。在每一帧扫描的末尾,会把这期间扫描到的点云 P k P_k Pk 重投影到第k+1帧 t k + 1 t_{k+1} tk+1,同时用符号 P k ˉ \bar{P_k} Pkˉ表示重投影的点云。在下一帧k+1扫描的时候, P k ˉ \bar{P_k} Pkˉ和 P k + 1 P_{k+1} Pk+1被一起用来估计lidar的运动。
假设现在 P k ˉ \bar{P_k} Pkˉ和 P k + 1 P_{k+1} Pk+1两帧数据都有了,然后现在通过这两帧数据来找相关性correspondences。根据 P k + 1 P_{k+1} Pk+1数据,我们可以通过上一节提到的方法来找到边界点和平面点。我们用 ξ k + 1 \xi_{k+1} ξk+1和 H k + 1 H_{k+1} Hk+1分别表示边界点和平面点的集合。我们可以从 P k ˉ \bar{P_k} Pkˉ找到边界线与 ξ k + 1 \xi_{k+1} ξk+1里面的点对应,平面点和 H k + 1 H_{k+1} Hk+1中的点对应。
在第K+1帧数据sweep刚开始扫描的时候, P k + 1 P_{k+1} Pk+1还是一个空的集合。当随着雷达扫描的时候, P k + 1 P_{k+1} Pk+1里面的点慢慢变多。随着 P k + 1 P_{k+1} Pk+1集合里面的点慢慢变多,里程计递归的估计雷达6自由度的姿态运动估计。在每次迭代的过程中, ξ k + 1 \xi_{k+1} ξk+1和 H k + 1 H_{k+1} Hk+1都会被重投影到当前的位姿估计下的帧的开始处。我们用 ξ ~ k + 1 \widetilde\xi_{k+1} ξ

LOAM算法通过特征点提取、对应寻找、运动估计和里程计算法实现激光雷达的实时定位与建图。首先,根据表面平滑度选取边点和平面点;然后,通过重投影和3D-kdtree寻找特征点对应;接着,利用边点和平面点估计雷达运动;最后,在建图阶段,将每一帧无畸变的点云配准到全局地图中,扩展地图并更新雷达在地图中的位姿。整个过程在低频率下进行,保证了实时性能。
最低0.47元/天 解锁文章
1275

被折叠的 条评论
为什么被折叠?



