1 前置知识
2 正态分布变换(NDT)
以往的激光匹配方法有ICP方法及基于特征提取的方法,基于ICP方法因为需要绝对对应有可能出现不能收敛的情况,基于特征方法大多数需要做额外的复杂数据预处理,论文作者提出了一种基于概率的方法,NDT匹配
2.1 基本思路
这里首先针对一帧单独的点云。
NDT通过局部正态分布的集合来构建一次激光扫描的所有2D点的分布。首先,将机器人周围的二维空间划分成固定大小的栅格,然后,对于每个栅格有三件事要做:
- 收集所有的2D点\(\bold x_{i=1...n}\)包含在这个格子里
- 计算每个格子的均值\(q=\frac{1}{n} \sum_i \bold x_i\)
- 计算每个格子的协方差矩阵\(\Sigma=\frac{1}{n}\sum_i {\bold x_i-\bold q)(\bold x_i-\bold q)^T}\)
每个格子的2D点样本的概率可以用正态分布来描述\(N(q,\Sigma)\):
这和占用栅格有点类似,都维护了平面内的有规律的子区域。但这两者不一样,占用栅格表示栅格被占据的概率,而NDT表示栅格中每个位置的分布情况。但这种描述还存在两个问题:
-
离散化过程中必然边界效应(即点落在栅格边界)。论文作者采取了一种办法,即使用四个重叠的栅格,分别是:
- 第一个栅格按原始单元格的边长𝑙放置。
- 第二个栅格水平移动 𝑙/2
- 第三个栅格垂直移动 𝑙/2
- 第四个栅格同时水平和垂直移动 𝑙/2
-
对于无噪声的世界,协方差矩阵将变得奇异并且不可求逆
TODO...
2.2 扫描匹配
扫描匹配的目的是获取两帧激光帧的位姿变换参数,即平移和旋转\((\theta,t_x,t_y)\)。被给两帧扫描:
-
构建第一帧的NDT
-
初始化参数估计(通常置0或采用里程计数据)
-
对于第二帧的每个栅格,根据位姿变换参数映射2D点到第一帧的坐标系中
-
对于每次映射的点确定正态分布变换
-
通过评估每个被映射点的分布并求和来决定位姿变换参数的得分score
-
通过最优化score来计算一个新的参数估计。最优化方法使用牛顿法
-
回到步骤3直到满足收敛准则