NDT-Scan Alignment-Algorithm
作者QQ:845421543。NDT是scan-match中经典的方法之一。NDT算法相对于ICP算法速度更快,稳健性更强。
原文地址:The Normal Distributions Transform: A New Approach to Laser Scan Matching
输入:两帧点云数据 S 1 , S 2 S_1,S_2 S1,S2
输出:位姿变换参数 R , t R,t R,t
- 对 S 1 S_1 S1 计算正太分布变换(NDT);
- 初始化需要估计的参数 R , t R,t R,t,设置为0或者采用里程计数据;
- 根据参数 R , t R,t R,t 将 S 2 S_2 S2 中的所有样本点投影到对应的坐标系下;
- 确定每一个映射点对应的正态分布即 S 2 S_2 S2 映射点属于 S 1 S_1 S1 中的哪一个cell;
- 通过评估每个映射点的分布并对结果求和来确定参数的得分 s c o r e score score;
- 通过尝试优化分数来计算新的参数估计。这是通过执行牛顿算法(非线性最小二乘中一种方法)的一个步骤来实现的;
- 转到3,直到满足收敛条件。
详解:
N
D
T
NDT
NDT
将2D空间划分为具有固定大小的元胞(cell),分别对每一个元胞进行如下操作:
- 1)确定cell中的点云 x i = 1... n x_{i=1...n} xi=1...n
- 2)计算均值 q = 1 n ∑ i = 1 n x i q = {\frac 1n}{\sum_{i=1}^n}x_i q=n1∑i=1nxi
- 3)计算协方差矩阵 Σ = 1 n ∑ i = 1 n ( x i − q ) ( x i − q ) t \Sigma={\frac 1n}{\sum_{i=1}^n}(x_i-q)(x_i-q)^t Σ=n1∑i=1n(xi−q)(xi−q)t
Cell中每一个点的概率服从正态分布
N
(
q
,
Σ
)
N(q,\Sigma)
N(q,Σ),概率可以表示为:
p
(
x
)
∼
e
−
(
x
−
q
)
t
Σ
−
1
(
x
−
q
)
2
p(x) \sim e^{-\frac {(x-q)^t\Sigma^{-1}(x-q)}2}
p(x)∼e−2(x−q)tΣ−1(x−q)
S
C
O
R
E
SCORE
SCORE
s
c
o
r
e
(
p
)
=
∑
i
=
1
n
e
−
(
x
i
′
−
q
i
)
t
Σ
i
−
1
(
x
i
′
−
q
i
)
2
score(p)=\sum_{i=1}^ne^{-\frac {(x_i^{'}-q_i)^t\Sigma^{-1}_i(x_i^{'}-q_i)}2}
score(p)=∑i=1ne−2(xi′−qi)tΣi−1(xi′−qi)
其中
x
i
′
x_i^{'}
xi′ 代表
S
2
S_2
S2 中的点
x
i
x_i
xi 映射到
S
1
S_1
S1 坐标系之后对应的点;
q
i
q_i
qi 代表
x
i
′
,
Σ
i
x_i^{'},\Sigma_i
xi′,Σi 在
S
1
S_1
S1 中所处的元胞cell的均值和协方差