前言: 之前看r2live遇到一个些许困难,不清楚强度和曲率,于是老师让我先看看loam,然后这段时间看了A-LOAM。
**摘要:**该论文主要是针对两轴单线激光雷达来生成实时激光里程计并建图,提出了一个构建实时里程计的难点在于获取的点云并不是在相同的时间里获得,因为点云中的点随着lidar的运动会产生运动畸变,换句话说,点云中的点会相对实际的环境中的object表面上的点会有误差,这会使得点云的匹配时发生误差,从而不能正确获得两帧点云的相对位姿(相对位置关系)。论文提出的核心思想是将定位和建图分割,定位是执行高频率的里程计不过是低精度的运动估计,而建图是比定位要低频的执行匹配和注册点云信息,将两个算法结合,将各自的优势互补得到高精度、实时性的激光里程计。
核心方法:
该项目主要有三个模块scanRegistration、laserOdometry和laserMapping构成。
1.在scanRegistration里,主要是对得到的点云依据曲率来分成四类平面点、较曲的平面点、边缘点、和较不曲的边缘点,因为点太多,最后会降采样。其中曲率由(1)得到,是根据点前后相邻的5个点来计算曲率的。
选出来的平面点和边缘点就可以代替所有的点云。
2.在laserOdometry里,接受scanRegistration处理后的数据,进行特征匹配,从而计算k to k+1的位姿,匹配分为两种边缘点匹配与平面点匹配。
(1)边缘点匹配
主要是依据点到直线的距离来建立边缘点的优化方程,其中为了建立三角形,会用kd-tree算法找到距离j最近的点l,然后就可以依据我们小学二年级学的知识(长*高=面积)建立优化方程了。
(2)平面点匹配
主要是依据点到平面的距离来建立平面点的优化方程。
如图,其中l是距离i最近的点,而m是距离j最近的点,然后三点可以确立一个平面。(最近的点也可依据kd tree获得),然后依据我们小学二年级学的(体积=高*面积)建立方程。
有了这两个距离的关系,就可以优化使得d最小。最后会得到两帧之间的相对位姿T。
3.在laserMapping里,从前面获得很多相邻帧的位姿变换信息后,就要让其和全局地图匹配,将得到的点云放入cube里。将点云分块处理,寻找最近邻的匹配点,且用于计算点云簇的法向量,实现点到线及点到面的约束,最后得到去漂的优化定位值。低频输出。
**心得体会:**目前只对前端比较熟悉,明白了曲率的作用。想到上次看的r2live的intensity和曲率的区别。还专门看了kdtree算法是如何获得最近的点。思路还可以借鉴一下。以后也可以依据点云的曲率可以分类点的特征。