算法流程分三步:
- 对环境进行 cell 的划分,为每一个 cell 构造一个高斯分布
- 根据初始解把当前帧的激光点转换到参考帧上,并确定属于哪个 cell
- 用牛顿法/高斯牛顿法进行迭代求解
- 为什么想到用正态分布表示描述点云
几个点在一条直线上,则容易知道该协方差矩阵的秩为1;而当这几个点近似在一条直线上时,则协方差矩阵的一个特征值会明显大于另外一个。当大致均匀分布时,两个特征值会大小类似。所以说点云能够反映点云的局部形态。
NDT 改进方向
- 对点云进行预处理(在 3D 情况下尤其需要进行下采样)
- 取 cell 的策略:有以下几种思路:
- 固定尺寸进行划分
- 八叉树划分
- 通过聚类后再取栅格
- 增加鲁棒性
- 上面提到我们将空间划分成不同 cell,每个 cell 中维护一个高斯分布,那这样不可避免地在相邻栅格地交界处,分布会出现不连续性,因此一个思路可以是在每两个栅格之间通过插值计算出交界处附近的分布
目前的nod_omp
是改进版本,使用OpenMP多线程,以及提升了搜索速度