激光雷达SLAM激光的前端配准算法
ICP匹配方法
两组三维点集的最小二乘拟合
给定两个三维点集:
{ x i } = { x 1 , x 2 , … , x N } { p i } = { p 1 , p 2 , … , p N } \{x_i\} = \{x_1, x_2, \dots, x_{N}\} \\ \{p_i\} = \{p_1, p_2, \dots, p_{N}\} {xi}={x1,x2,…,xN}{pi}={p1,p2,…,pN}
点集 { x i } \{x_i\} {xi}和点集 { p i } \{p_i\} {pi}的集合转换关系如下所示:
p i = R x i + T + N i p_i = Rx_i + T + N_i pi=Rxi+T+Ni
其中, R R R是一个 3 × 3 3 \times 3 3×3的旋转矩阵, T T T是一个三维的平移向量, N i N_i Ni是噪声项。
我们可以通过最小化下式,求得旋转矩阵 R R R和平移向量 T T T。
∑ 2 = ∑ i = 1 N ∣ ∣ p i − ( R x i + T ) ∣ ∣ 2 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \sum^2 = \sum\limits_{i=1}^N{||p_i - (Rx_i + T)||}^2 ∑2=i=1∑N∣∣pi−(Rxi+T)∣∣2
为了实现最小二乘过程的 R R R、 T T T变量解耦,做去中心化处理,假设 R ^ \hat{R} R^和 T ^ \hat{T} T^是我们的最小二乘解,,定义以下变量。
x i ′ = x i − 1 N ∑ i = 1 N x i p i ′ = p i − 1 N ∑ i = 1 N p 1 x'_i = x_i - \frac{1}{N}\sum_{i=1}^N x_i \\ p'_i = p_i - \frac{1}{N}\sum_{i=1}^N p_1 \\ xi′=xi−N1i=1∑Nxipi′=pi−N1i=1∑Np1
此时我们有
∑
2
=
∑
i
=
1
N
∣
∣
p
i
′
−
R
x
i
′
∣
∣
2
\ \ \ \ \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \sum^2 = \sum\limits_{i=1}^N{||p'_i - Rx'_i||}^2
∑2=i=1∑N∣∣pi′−Rxi′∣∣2
首先我们可以求得最小二乘解 R ^ \hat{R} R^,然后由下式求得 T ^ \hat{T} T^
T ^ = p ′ − R ^ p \hat{T} = p' - \hat{R}p T^=p′−R^p
∑ i = 1 N ∣ ∣ p i ′ − R x i ′ ∣ ∣ 2 = ∑ i = 1 N ( p i ′ − R x i ′ ) t ( p i ′ − R x i ′ ) = ∑ i = 1 N ( p i ′ t p i ′ + x i ′ t x i ′ − 2 p i ′ t R x i ) \sum_{i=1}^N{||p'_i - Rx'_i||}^2 = \sum_{i=1}^N (p'_i - Rx'_i)^t(p'_i - R x'_i) \\ =\sum_{i=1}^N({p'_i}^tp'_i + {x'_i}^tx'_i - 2{p'_i}^tRx_i) i=1∑N∣∣pi′−Rxi′∣∣2=i=1∑N(pi′−Rxi′)t(pi′−Rxi′)=i=1∑N(pi′tpi′+xi′txi′−2pi′tRxi)
所以最小化
F = ∑ i = 1 N p i ′ t R x i = T r a c e ( ∑ i = 1 N R x i ′ p i ′ t ) = T r a c e ( R H ) F = \sum_{i=1}^N {p'_i}^tRx_i \\ =Trace(\sum_{i=1}^N Rx'_i{p'_i}^t) = Trace(RH) F=i=1∑Npi′tRxi=Trace(i=1∑NRxi′pi′t)=Trace(RH)
由定理:
对于任意的对称正定矩阵
A
A
T
AA^T
AAT和任意的正交矩阵
B
B
B,都有
T r a c e ( A A T ) ≥ T r a c e ( B A A T ) Trace(AA^T) \geq Trace(BAA^T) Trace(AAT)≥Trace(BAAT)
对
H
H
H进行
S
V
D
SVD
SVD分解得到
H
=
U
M
V
T
H = UMV^T
H=UMVT,令
X
=
V
U
T
X = VU^T
X=VUT,则有,
X
H
=
V
M
V
T
XH = VMV^T
XH=VMVT
所以,
T
r
a
c
e
(
X
H
)
≥
T
r
a
c
e
(
B
X
H
)
Trace(XH) \geq Trace(BXH)
Trace(XH)≥Trace(BXH)
因此,如果
X
X
X矩阵的行列式为1,则
T
^
=
X
\hat{T} = X
T^=X