Hungarian Algorithm
对论文 IMLS-SLAM: Scan-to-Model Matching Based on 3D Data (ICRA, 2022) 的阅读整理。
论文情况
- 题目:IMLS-SLAM: Scan-to-Model Matching Based on 3D Data
- 期刊/会议:ICRA 2018
- 作者:Jean-Emmanuel Deschaud
1 预备知识
1.1 一种直接获得法向量的方法
-
来自论文:Fast and Accurate Computation of Surface Normals from Range Images
-
论文简述:论文提出一种通过对来自 Spherical Range Image(SRI)的表面求导,直接获得法向量的方法。
-
研究背景:在之前的研究中,要获得一个点的切平面或者法向量,都是对该点的邻域采用最小二乘法,但是该方法计算代价昂贵。而在研究一个点的切平面或者法向量时,该点一定不是一个孤独的点,附近一定有邻域点。
-
具体推理流程:
-
定义球面坐标系中一点 ,其对应着笛卡尔坐标系一点
-
某一点的切平面与法向量为:
- 切平面: 或
- 法向量:
-
SRI 定义:是一个函数 ,指从坐标系原点出发,沿着 方向,深度为 的某一点。
-
Fast Approximate Least Squares:
首先,确定球面坐标系与笛卡尔坐标系之间的转换关系(此处 为向量与 xOy 平面的夹角):
设 ,则上面的式子可以表示为 。目标优化的损失函数是尽量使得点都满足平面约束方程,即找到 和 使得在领域内的点 满足:
用来自 Unconstrained Least Squares 的思路:
- 对目标函数两侧除以 :
- 用 替换上式,把 提出到括号外:
- 默认同一个邻域内的点深度 都近似相等,因此可以进一步简化:
- 使用最小二乘思想或者下式即可求解(上式对 求一阶导并取 0 可以得到下面的式子):
-
使用 SRI 方法:
- 设 DEL 算子(Nabla 算子)在笛卡尔坐标系下为下式,其中 分别对应 x,y,z 轴上的单位向量:
- 由前笛卡尔坐标系和球面坐标系的关系,可以得到 , 为一个转换函数,则:
同理可以计算 和 。
- 有了算子 ,则可以对 求导,由 SRI 函数的定义,可知此导数即为所求法向量(类似于梯度):
-
1.2 点云局部集合结构具有以下三种性质
-
来自论文:Dimensionality based Scale Selection in 3D Lidar Point Clouds
-
对点云点集的协方差矩阵进行 PCA 主成分析,得到 3 个特征值 分别对应下列三种性质:
- 线性性(linear):线性性大于其他两个性质。
- 平面性(planar):平面性最突出。
- 空间性(volumetric):如果形成一个弥合球面,则点云具有空间性。
-
实现细节:
获取点 的邻域点云 ,使得:- 如何选取?
给定一个 的上下界,采样边界中的 16 个值,对比发现使得 熵最小化的 就是最优半径,此处熵的计算公式为:
- 如何计算 ?(利用 PCA 计算)
假设现在获取了一个邻域点云,首先对点去质心得到 ,即:
计算特征矩阵:
对该矩阵进行特征分解可以得到特征值的开根 (从小到大排列),从而可以得到:
注意,最后一定满足 。
2 MLS(移动最小二乘法,Moving Least Squares)
-
出自论文:Mesh-Independent Surface Interpolation
-
移动最小二乘法(MLS,Moving Least Squares)是建立大量离散数据拟合曲线的理想方法。当大量离散数据的分布较为杂乱时, 使用传统的最小二乘法,往往需要对数据进行分段拟合,此外还要避免相邻分段上的拟合曲线不连续不平滑的问题。而 MLS 在处理相同问题时则不需要上述这些繁琐的步骤,简单易于实现。
在 MLS 法中,需要在一组不同位置的节点(node)附近建立拟合曲线,每个节点都有自己的一组系数 用于定义该位置附近拟合曲线的形态。因此,在计算某个节点附近的拟合曲线(曲面)时,只需要计算该点的该组系数值 即可。
此外,每个节点的系数 取值只考虑其临近采样点,且距离节点越近的采样点贡献越大,对于位置较远的点则不予考虑。
2.1 拟合函数
-
相比于传统最小二乘法,MLS 法中的拟合函数不是一个多项式,而是一组系数向量函数 和 ,其中 为空间坐标。
-
某个节点 node 附近的拟合函数为 ,具体定义为:
其中, 为节点的空间坐标, 为节点 node 附近的某一个位置坐标, 即为用于定义节点 node 附近拟合曲线(曲面)的一组系数, 则是一组基函数, 为基函数个数,常用形式如下:
空间维度 一阶形式 二阶形式 1 维: 2 维: 3 维: -
MLS 法中,通过调整系数 ,使得节点 node 附近 个采样点取值与拟合函数在采样点之间差的加权平方和最小,由此可以建立最优化模型 :
其中, 为节点 node 的空间位置, 为采样点, 为采样点个数, 为采样点 的空间位置, 为采样点 的取值 ,此处 。
图-1 MLS 采样点 p 和 node 的关系 -
上式中 为权函数,保证距离 node 越近的采样点,对函数 的贡献越大,常用形式如下(三次样条曲线):
其中, 表示矢量 的摸。当采样点 与节点 node 的距离大于一定值时(上式中取 2),权重函数衰减为 0。
-
求解出在问题域上全部节点的系数,即可得到全域上的拟合曲线。
2.2 系数计算
由上述,每个节点 node 都有一组系数 用于定义该位置附近拟合曲线(曲面)的形态,本部分介绍这个系数的具体求解方法。
-
已经获得了参数为系数 的最优化模型 ,当 取值最小时,则可获得节点 node 附近的拟合曲线(曲面) 。
-
求解最优化模型最直接的方式即为求导:
当上式取 0 时, 取最小值,因此:
引入下述符号简化表达:
因此,可以将 整理为如下线性方程组,也称此方程组为法方程:
此方程组写成矩阵形式为 ,其中 为基函数构成的系数矩阵, 表示 node 系数(未知数)向量,因此求解也变为 。解此线性方程组,即可求解系数 。
-
进一步,可以将任意位置上的拟合函数()写为:
因此可以在任意点 上计算出拟合函数及其取值。
2.3 拓展
MLS 法其实是一种广义的最小二乘法方法。MLS 法的核心优化模型 :
-
当权重函数 时,则 MLS 方法退化为标准最小二乘法。对应 SLAM 中 ICP 算法,将 视为 需要对齐的地图上的点, 视为对 的位姿变换。
-
当权重函数为高斯函数或样条曲线时(如下图),则 MLS 退化为固定点最小二乘法(FLS,Fixed Least Squares)。
图-2 权重函数为高斯函数 -
当权函数曲线为如下形式时,则 MLS 退化为多固定点最小二乘法(MFLS,Multiple Fixed Least Squares)。
图-3 权重函数较为复杂
3 Scan Egomotion and Dynamic Object Removal
3.1 Scan Egomotion
3.1.1 Egomotion
- egomotion:The movement of the vehicle during the acquisition time of a scan.
- egomotion 是指在获取激光雷达数据的过程中,vehicle 也在运动,这个过程有一个 movement(即 egmotion)需要补偿。
3.1.2 Scan Egomotion
-
由于数据获取过程中,vehicle 也在移动,因此需要在创建点云时考虑这个问题。
-
IMLS-SLAM 认为,上一次扫描结束的位姿 和本次扫描结束的位姿 是线性关系,能够在 这段时间内进行线性插值。
-
为获取局部无偏点云(Local Deskewed Point Cloud),需要估计当前时间 的位姿 ,考虑线性关系,假设两次扫描之间的位姿变换是相对相近的(即短时间内 vehicle 的运动是相对平滑且连续的),由于已经知道位姿 ,则可以使用如下的求解方式:
3.1.3 个人理解
-
如在 LOAM 中,构建局部无偏点云地图可能需要将扫描点云都投影到本次扫描的开始时刻(或结束时刻),此时就会使用到此次扫描开始时刻的位姿(上一次扫描结束的位姿)和此次扫描结束时刻的位姿之间的线性关系,即可能需要使用到此次扫描结束的位姿。
-
然而由于本轮扫描尚未结束,扫描点无法获取到位姿,因此可以使用 Scan Egomotion 的方式来解决这一问题。
3.2 Dynamic Object Removal
-
IMLS-SLAM 采用了一种暴力的方式去除存在动态可能性的物体,即认为一个大小为 的物体一定是动态的,需要去除。
-
具体去除方法:
- 首先,使用一个容器存储地面点,并在原点云中去除这些点;
- 使用聚类思想,只要相邻数据点之间的距离小于 就将它们聚集(cluster)在容器,形成一个 bounding box;
- 如果形成的 bounding box 相对雷达坐标系三个坐标轴()上的长度小于 ,则认为 bounding box 中的物体为人、车等具有动态可能性的物体,因此丢弃此 bounding box 中的点。
- 处理完所有 cluster 后,把地面点重新加回点云。
经过上面的方法,就除去了动态物体所对应的点。这一思想可能是认为激光雷达获得的数据点很多,因此尽管去除了大量点,也依然可以得到尽可能多的关键点,但是此种去除方法就先对较为暴力。
4 Scan Sampleing Strategy
4.1 提出原因
-
在之前的一些 ICP 版本中,提取点的特征时往往是先计算协方差矩阵,然后对矩阵计算特征值,根据特征值对特征分类,同时提取主轴方向,根据主轴方向和特征值进行点筛选。
-
IMLS-SLAM 不太认可这种方式,而是认为主轴方向为雷达的方向,直接把激光雷达的三个主轴作为点云的三个主轴。这样的话,大部分平面会直接被分配到每个轴上,比如地面就相当于沿着 z 轴观测,而一些物体立着的面就相当于沿着 x,y 轴发生移动。
-
其次,提取点是为了匹配得到位姿,不同的点对位姿精度的贡献不一样,如果能直接提取出对位姿贡献大的点,既可以很大程度上减少点的数量,又可以取得很好的精度。
-
所以,这个问题就演变成了,怎样去判断哪些点对位姿精度贡献大,对算法来讲,就是设计一些指标,去把这些点筛选出来。
4.2 采样步骤
-
使用前面的 SRI 求导法计算每一个点的法线,并使用 PCA 分析点云的三个特征值 ;
-
提出了 9 个评价指标,其中前 6 个是点对 rotation 精度的贡献的定量评价,后 3 个是点对 translation 精度的贡献的定量评价:
其中, 为局部地图下坐标轴的三个方向向量。
-
对每一个点都计算这 9 个指标,得到 9 个 list,对这 9 个 list 按照降序排序。
-
取每一个 list 中的第一个值所对应的点 ,在这个点附近找 个点,并遵循下列条件,其中 为人为设定的参数:
-
这样便得到 个点,即所寻找的点。
- 如下图中红色的点,即为经过此方法采样得到的点:
- 可以看到远离传感器中心的点可以更好地锁定旋转和大部分平面区域上点,以便更好地匹配。
5 Scan-to-Model Matching with IMLS Surface Representation
5.1 IMLS
-
在进行了数据采样后,就到了优化求解 的部分,这里用到了 IMLS 方法(Provably Good Moving Least Squares)。
-
IMLS 起源于 MLS,仿照 MLS 构建了一个隐函数:
- 其中 代表权重, 为 IMLS 模型的参数,与点云采样密度和噪声有关,隐函数 能够描述目标点到目标曲面的距离。观察此权重函数会发现,在 距离 较远时,会迅速减小,当距离为 时 ,所以,应用该式时只需要考虑以 为中心 为半径的邻域。
- 的解近似于要估计的目标曲面。
5.2 利用 IMLS 求解 和
-
从 IMLS-SLAM 的角度,假设现在有一个点 ,要估计它相邻两个时刻的 和 ,则利用 IMLS 就能很好地解决这个问题:
-
设 , 是对应到 map 中,以 为球心,半径为 的领域内的点。
-
得到隐函数(可以理解为点到面的距离的变形表示)
其中 是 的法向量,求法向量的方法即为之前的 SRI 求导法。此隐函数表示的是点 到需要对齐的 map 中的曲面上的点 距离平方的加权平均。
-
然后,求得每一个变换后的点到曲面的距离,并令这个距离最小:
此处则存在一个问题, 隐函数里有指数函数( 函数),这个非线性项不允许做线性最小二乘,因此不能直接使用 ICP 点到面的对齐方式优化求解 和 。
-
5.3 IMLS-SLAM 提出的求解方法
-
首先,把点投影到 IMLS 曲面上,投影结果为 (类比向量到平面的投影):
其中, 是 最近邻点 的法线。
图-5 向量到平面的投影 -
经过变换后的点,应该要落在平面上,因此有:
-
如下图为 ICP 和 IMLS 的对比。蓝点是来自先前 次扫描的带有噪声的点云 ,红点是新扫描的点。
- 第一行显示了 ICP 点到面匹配的第一次和最后一次迭代的示例:在每次迭代中,最小化到最近点的距离。
- 第二行显示了第一次和最后一次迭代 IMLS 点到模型的距离示例:黑色虚线是 IMLS 表面,在每次迭代中,最小化到 IMLS 表面的距离之和。
图-6 ICP 和 IMLS 对比
5.4 IMLS 的基本思想
- 选择具有代表性的激光点来进行匹配,既能减少计算量同时又能减少激光点分布不均匀导致的计算结果出现偏移。
- 点云中隐藏着真实的曲面,最好的做法就是能从参考帧点云中把曲面重建出来。
- 曲面重建的越准确,对真实世界描述越准确,匹配的精度就越高。
参考
References.1 IMLS-SLAM
- https://blog.csdn.net/shuang_yu_/article/details/88978235
- https://jamesgzl.github.io/2021/10/01/论文阅读-IMLS-SLAM/
- https://github.com/qianqian121/Papers/blob/master/IMLS-SLAM.md
- https://zhuanlan.zhihu.com/p/94685161
References.2 MLS 和 IMLS
- https://blog.csdn.net/dreliveam/article/details/111666235
- https://blog.csdn.net/Evanismlii/article/details/111868631?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1-111868631-blog-88978235.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1-111868631-blog-88978235.pc_relevant_aa&utm_relevant_index=1