1、3D激光SLAM
1.1、基于Point to Plane ICP的帧间匹配
1.2、基于3D描述子ICP的帧间匹配
1.3、基于NDT的帧间匹配
2、LOAM
2.1、里程计
2.1.1 特征点检测
2.1.2 特征点匹配
2.1.3 运动估计
2.2 建图
1、3D激光SLAM
2D激光SLAM三个自由度(x、y、theta),3D激光雷达6DoF。
3D地图
2D激光SLAM 3D激光SLAM
单线激光雷达 多线激光雷达(300线激光雷达和depth相机一样了)
二维栅格地图 三维点云地图或者三维栅格地图
室内移动机器人 室外移动机器人
1.1、基于Point to Plane ICP的帧间匹配
3D 激光SLAM中,回环、前端都是帧间匹配,常用的例如:point to plane点面距离:
1.2、基于3D描述子ICP的帧间匹配
和视觉提取特征点类似 ,这里是已经对应点的ICP匹配问题,比较简单。
1.3、基于NDT的帧间匹配
下图中,步骤1、2就是NDT算法核心了。
步骤1中,将点云空间划分出多个方格。
步骤2中,利用观测值xi计算二维高斯分布协方差矩阵、期望值。
步骤3中,将预测值(和VSLAM一样)代入高斯分布中,经过归一化打分。
步骤4为一帧激光数据的目标函数。
NDT算法和似然场差不多,只不过NDT中的Gaussian分布是连续的,似然长是离散的(必要的时候,需要插值)。
NDT也不需要搜索,因为目标函数是连续的。好的SLAM算法更加依赖于公式,公式是重要,但在工程化过程中,实践技巧更加重要。以上三种算法在PCL中都有实现。
3D激光雷达中,里程计、回环本质都是帧间匹配,后端都是一个套路。和VSLAM比起来,激光SLAM精度相当高,例如:双目SLAM中,点匹配差一个像素,深度误差达到8cm。所以,在小场景,激光SLAM不做回环,大场景还是要做。
2、loam
loam没有回环,主要包含两个部分:里程计+mapping;主要是提取特征点。
如下是框架图:1、2没啥好说了。0处的点云注册是啥意思?首先,一帧完整的激光点云数据包含多个scan,例如:16线激光雷达就对应16个scan,下图中 Point Cloud Registeration 表示将多个scan拼接到一起的过程(2D 激光SLAM依靠电机,雷达绑到步进电机上,所以角度是知道的),然后给Lidar Odometry。后面位姿集成,没看懂。
激光里程计输出的1Hz、10Hz是怎么计算输出的?
2.1、里程计
2.1.1 特征点检测
如下图,这里曲率计算公式如下图,思想和我所理解的不一样。如下图,直线L1、L2,向量aa1 – 向量aa2 = 0向量,而向量bb1 – 向量bb2很大,理论上夹角越小,得到的至越大,曲率越大。
一个水平激光帧对应一个scan,一个scan分为四个区域,分别提取特征点,我猜目的就是为了就是让特征不那么集中。
去除不稳定特征点:如下图1,B点,如果激光束再偏一点点,B点就没了;如下图2,A点是边缘特征点,但是如果激光雷达再向左边平移一点点,A点就成了平面点。
2.1.2 特征点匹配
tk -> tk+1才是一个完整的扫描周期。特征点检测上一节已经讲解,这里说下如何匹配的。
边缘特征点的匹配:如下图,当前帧点云橙色,投影(依据什么投影的?ICP?)到参考帧点云中,例如:对于当前帧边缘点j,在参考帧中找一次近边缘点l(note:这两点必定不在同一个scan序列中,最近边缘点是当期帧的点i),所以特征匹配目标函数就是最小化:点i到直线lj的距离。
平面特征点的匹配:同理。
特征点无脑匹配,很简单,总共的点也不多(需要最小化误差函数,才能求解出粗略位姿)。
2.1.3 运动估计
对前面三个小结进行总结(其中不懂的变量,可对比上图进行对比观看):
特征点检测
寻找匹配点
构建非线性方程组
求解非线性方程组
如果到了当前帧的末尾,则投影到当前帧的时刻,开始进行下一帧的求解(这一句你好好理解!!!!!!)
上图变量不懂,可以看下图
2.2 建图
Qk一横(你懂得) 表示完整的,去除了运动几遍的sweep,其与局部子图Qk-1进行匹配,得到位姿得到Tk(如下图)。
参考:https://zhuanlan.zhihu.com/p/111388877
至少到现在,应该直到 scan to scan 和 map to map的区别了
这里有个cubic的限制,其目的在于:多找几个边缘点,方便后续作基于SVD的3D直线拟合(这玩意我以前是做过的,不多BB),下面链接有个动态图,很好说明了SVD中最大奇异值对应的右奇异矩阵第一列就是:这堆3D点的方向向量。
链接:https://zhuanlan.zhihu.com/p/111388877
对于点-平面匹配,原理一样。
不同于里程计,mapping这里在计算直线、平面方程的时候,采取的点数量更多。
CV&DL