视觉SLAM十四讲学习4 (2)李代数求导
- 前言
- 回顾
- 李群与李代数求导
- BCH公式
- 李代数求导
- 扰动模型
- S E ( 3 ) SE(3) SE(3)的扰动模型
- 后记
前言
本篇继续李群和李代数。
回顾
群是一种集合加上一种运算,满足封闭性,结合律,幺元和逆。
李群是一种连续群,李代数表达李群在局部上的性质。
正交群 S O ( 3 ) = { R 3 × 3 ∣ R R T = I } SO(3)=\{R_{3\times 3}|RR^T=I \} SO(3)={R3×3∣RRT=I}与李代数 s o ( 3 ) = { ϕ 3 ∣ ϕ ∧ ∈ R 3 × 3 } so(3)=\{\phi_3|\phi^\land \in {\bf R^{3\times 3}} \} so(3)={ϕ3∣ϕ∧∈R3×3}存在指数映射 R = e ϕ ∧ R=e^{\phi^\land} R=eϕ∧,可以通过罗德里格斯公式进行转换: R = n n T ( 1 − cos θ ) + I cos θ + n ∧ sin θ , ϕ = θ n R=nn^T(1-\cos \theta)+I\cos\theta+n^\land\sin \theta,\phi=\theta n R=nnT(1−cosθ)+Icosθ+n∧sinθ,ϕ=θn。李括号可表示为: [ ϕ 1 , ϕ 2 ] = ( ϕ 1 ∧ ϕ 2 ∧ − ϕ 2 ∧ ϕ 1 ∧ ) ∨ [\phi_1,\phi_2]=(\phi_1^\land\phi_2^\land-\phi_2^\land\phi_1^\land)^\lor [ϕ1,ϕ2]=(ϕ1∧ϕ2∧−ϕ2∧ϕ1∧)∨。
欧式群
S
E
(
3
)
=
{
T
∣
T
=
[
R
t
0
1
]
,
R
∈
S
O
(
3
)
,
t
3
×
1
}
SE(3)=\{T|T=\begin{bmatrix}R & t \\ 0 & 1 \end{bmatrix},R\in SO(3),t_{3\times1}\}
SE(3)={T∣T=[R0t1],R∈SO(3),t3×1}与李代数
s
e
(
3
)
=
{
δ
∣
δ
=
[
ρ
ϕ
]
,
δ
∧
=
[
ϕ
∧
ρ
0
0
]
∈
R
4
×
4
}
se(3)=\{\delta|\delta=\begin{bmatrix}\rho \\ \phi \end{bmatrix},\delta^\land=\begin{bmatrix}\phi^\land &\rho \\ 0 & 0 \end{bmatrix}\in {\bf R^{4\times 4}}\}
se(3)={δ∣δ=[ρϕ],δ∧=[ϕ∧0ρ0]∈R4×4}也存在指数映射
T
=
e
δ
∧
T=e^{\delta^\land}
T=eδ∧。
T
T
T与
δ
\delta
δ的转换关系为:
T
=
[
R
t
0
1
]
=
e
δ
∧
=
[
e
ϕ
∧
J
ρ
0
1
]
J
=
sin
θ
θ
I
+
(
1
−
sin
θ
θ
)
n
n
T
+
1
−
cos
θ
θ
n
∧
ϕ
=
θ
n
T=\begin{bmatrix} R & t \\ 0 & 1 \\ \end{bmatrix}=e^{\delta^\land} =\begin{bmatrix} e^{\phi^\land} &J\rho \\ 0 & 1 \\ \end{bmatrix} \\ \quad \\ J=\frac{\sin \theta}{\theta}I+(1-\frac{\sin\theta}{\theta})nn^T+\frac{1-\cos \theta}{\theta}n^\land \\ \phi = \theta n
T=[R0t1]=eδ∧=[eϕ∧0Jρ1]J=θsinθI+(1−θsinθ)nnT+θ1−cosθn∧ϕ=θn
李括号表示为
[
δ
1
,
δ
2
]
=
(
δ
1
∧
δ
2
∧
−
δ
2
∧
δ
1
∧
)
∨
[\delta_1,\delta_2]=(\delta_1^\land\delta_2^\land-\delta_2^\land\delta_1^\land)^{\lor}
[δ1,δ2]=(δ1∧δ2∧−δ2∧δ1∧)∨
李群与李代数求导
BCH公式
S O ( 3 ) , S E ( 3 ) SO(3),SE(3) SO(3),SE(3)与它们的李代数具有指数映射的关系。在实数域中,指数上的加法等同于两个指数的乘法。然而在李群上并不成立。
两个李代数的指数映射的乘积符合BCH公式:
e
ϕ
1
∧
e
ϕ
2
∧
=
e
ϕ
1
∧
+
ϕ
2
∧
+
1
2
[
ϕ
1
,
ϕ
2
]
∧
+
…
e^{\phi_1^\land}e^{\phi_2^\land}=e^{\phi_1^\land+\phi_2^\land+\frac{1}{2}[\phi_1,\phi_2]^\land+\dots}
eϕ1∧eϕ2∧=eϕ1∧+ϕ2∧+21[ϕ1,ϕ2]∧+…
对于
S
O
(
3
)
SO(3)
SO(3)与
s
o
(
3
)
so(3)
so(3),当指数乘积有一方是小量时,可以将BCH公式的高阶小量省去:
e
Δ
ϕ
∧
e
ϕ
∧
=
e
(
J
l
(
ϕ
)
−
1
Δ
ϕ
+
ϕ
)
∧
e
ϕ
∧
e
Δ
ϕ
∧
=
e
(
ϕ
+
J
r
(
ϕ
)
−
1
Δ
ϕ
)
∧
e
(
ϕ
+
Δ
ϕ
)
∧
=
e
(
J
l
(
ϕ
)
Δ
ϕ
)
∧
e
ϕ
∧
=
e
ϕ
∧
e
(
J
r
(
ϕ
)
Δ
ϕ
)
∧
J
l
(
ϕ
)
=
sin
θ
θ
I
+
(
1
−
sin
θ
θ
)
n
n
T
+
1
−
cos
θ
θ
n
∧
J
r
(
ϕ
)
=
J
l
(
−
ϕ
)
ϕ
=
θ
n
e^{\Delta\phi^\land}e^{\phi^\land}= e^{(J_l(\phi)^{-1}\Delta\phi+\phi)^\land} \\ e^{\phi^{\land}}e^{\Delta\phi^\land}=e^{(\phi+J_r(\phi)^{-1}\Delta\phi)^\land} \\ \quad \\ e^{(\phi+\Delta \phi)^\land}=e^{(J_l(\phi)\Delta\phi)^\land}e^{\phi^\land}=e^{\phi^\land}e^{(J_r(\phi)\Delta\phi)^\land} \\ \quad \\ J_l(\phi)=\frac{\sin \theta}{\theta}I+(1-\frac{\sin \theta}{\theta})nn^T+\frac{1-\cos \theta}{\theta}n^\land \\ J_r(\phi)=J_l(-\phi) \\ \phi = \theta n
eΔϕ∧eϕ∧=e(Jl(ϕ)−1Δϕ+ϕ)∧eϕ∧eΔϕ∧=e(ϕ+Jr(ϕ)−1Δϕ)∧e(ϕ+Δϕ)∧=e(Jl(ϕ)Δϕ)∧eϕ∧=eϕ∧e(Jr(ϕ)Δϕ)∧Jl(ϕ)=θsinθI+(1−θsinθ)nnT+θ1−cosθn∧Jr(ϕ)=Jl(−ϕ)ϕ=θn
对于 S E ( 3 ) SE(3) SE(3)与 s e ( 3 ) se(3) se(3)也有与以上相同的BCH近似表达式,但是并不常用。
李代数求导
对于一个向量旋转
R
p
Rp
Rp,求其关于旋转的导数时,不能表示为
∂
R
p
/
∂
R
\partial Rp/\partial R
∂Rp/∂R,这是因为旋转矩阵
R
R
R对于加减法是不连续的。而向量加法是连续的,因此要旋转求导时,要从
S
O
(
3
)
SO(3)
SO(3)转换为李代数的形式:
∂
e
ϕ
∧
p
∂
ϕ
=
e
(
ϕ
+
Δ
ϕ
)
∧
p
−
e
ϕ
∧
p
Δ
ϕ
=
e
(
J
l
(
ϕ
)
Δ
ϕ
)
∧
e
ϕ
∧
p
−
e
ϕ
∧
p
Δ
ϕ
=
(
e
(
J
l
(
ϕ
)
Δ
ϕ
)
∧
−
1
)
e
ϕ
∧
p
Δ
ϕ
=
(
J
l
(
ϕ
)
Δ
ϕ
)
∧
e
ϕ
∧
p
Δ
ϕ
=
(
J
l
(
ϕ
)
Δ
ϕ
)
∧
R
p
Δ
ϕ
=
−
(
R
p
)
∧
J
l
(
ϕ
)
Δ
ϕ
Δ
ϕ
=
−
(
R
p
)
∧
J
l
(
ϕ
)
\frac{\partial e^{\phi^\land}p}{\partial \phi} = \frac {e^{(\phi+\Delta \phi)^\land}p-e^{\phi^\land}p}{\Delta \phi} \\ = \frac {e^{(J_l(\phi)\Delta \phi)^\land}e^{\phi^\land}p-e^{\phi^\land}p}{\Delta \phi}\\ = \frac {(e^{(J_l(\phi)\Delta \phi)^\land}-1)e^{\phi^\land}p}{\Delta \phi}\\ = \frac {(J_l(\phi)\Delta \phi)^\land e^{\phi^\land}p}{\Delta \phi}\\ = \frac {(J_l(\phi)\Delta \phi)^\land Rp}{\Delta \phi}\\ = -\frac {(Rp)^\land J_l(\phi)\Delta \phi}{\Delta \phi}\\ = -(Rp)^\land J_l(\phi)\\
∂ϕ∂eϕ∧p=Δϕe(ϕ+Δϕ)∧p−eϕ∧p=Δϕe(Jl(ϕ)Δϕ)∧eϕ∧p−eϕ∧p=Δϕ(e(Jl(ϕ)Δϕ)∧−1)eϕ∧p=Δϕ(Jl(ϕ)Δϕ)∧eϕ∧p=Δϕ(Jl(ϕ)Δϕ)∧Rp=−Δϕ(Rp)∧Jl(ϕ)Δϕ=−(Rp)∧Jl(ϕ)
扰动模型
除了通过李代数定义求导,还可以通过旋转左乘微小扰动的扰动模型求导:
∂
e
Δ
ϕ
∧
e
ϕ
∧
p
∂
Δ
ϕ
=
lim
Δ
ϕ
→
0
e
Δ
ϕ
∧
e
ϕ
∧
p
−
e
ϕ
∧
p
Δ
ϕ
=
lim
Δ
ϕ
→
0
(
1
+
Δ
ϕ
∧
)
e
ϕ
∧
p
−
e
ϕ
∧
p
Δ
ϕ
=
lim
Δ
ϕ
→
0
Δ
ϕ
∧
(
e
ϕ
∧
p
)
Δ
ϕ
=
lim
Δ
ϕ
→
0
−
(
e
ϕ
∧
p
)
∧
Δ
ϕ
Δ
ϕ
=
−
(
R
p
)
∧
\frac{\partial e^{\Delta \phi ^\land}e^{\phi^\land}p}{\partial \Delta\phi} =\lim_{\Delta\phi \to 0} \frac {e^{\Delta \phi ^\land}e^{\phi^\land}p-e^{\phi^\land}p} {\Delta \phi} \\ = \lim_{\Delta\phi \to 0}\frac {(1+\Delta \phi^\land)e^{\phi^\land}p - e^{\phi^\land }p }{\Delta \phi} \\ = \lim_{\Delta\phi \to 0}\frac{\Delta \phi^\land (e^{\phi^\land}p)}{\Delta \phi}\\ =\lim_{\Delta\phi \to 0} -\frac {(e^{\phi^\land}p)^\land \Delta \phi}{\Delta \phi}\\ = -(Rp)^\land\\
∂Δϕ∂eΔϕ∧eϕ∧p=Δϕ→0limΔϕeΔϕ∧eϕ∧p−eϕ∧p=Δϕ→0limΔϕ(1+Δϕ∧)eϕ∧p−eϕ∧p=Δϕ→0limΔϕΔϕ∧(eϕ∧p)=Δϕ→0lim−Δϕ(eϕ∧p)∧Δϕ=−(Rp)∧
扰动模型比直接李代数求导更加简洁。
S E ( 3 ) SE(3) SE(3)的扰动模型
现在来求欧式群的扰动模型:
∂
e
Δ
δ
∧
e
δ
∧
p
∂
Δ
δ
=
lim
Δ
δ
→
0
e
Δ
δ
∧
e
δ
∧
p
−
e
δ
∧
p
Δ
δ
=
lim
Δ
δ
→
0
Δ
δ
∧
(
e
δ
∧
p
)
Δ
δ
=
lim
Δ
δ
→
0
[
Δ
ϕ
∧
Δ
ρ
0
0
]
[
e
ϕ
∧
p
+
J
ρ
1
]
[
Δ
ρ
Δ
ϕ
]
=
lim
Δ
δ
→
0
[
Δ
ϕ
∧
(
e
ϕ
∧
p
+
J
ρ
)
+
Δ
ρ
0
]
[
Δ
ρ
Δ
ϕ
]
=
[
I
−
(
R
p
+
t
)
∧
0
T
0
T
]
\frac{\partial e^{\Delta \delta ^\land}e^{\delta^\land}p}{\partial \Delta\delta} =\lim_{\Delta\delta \to 0} \frac {e^{\Delta \delta ^\land}e^{\delta^\land}p-e^{\delta^\land}p} {\Delta \delta} \\ = \lim_{\Delta\delta \to 0}\frac{\Delta \delta^\land (e^{\delta^\land}p)}{\Delta \delta}\\ \quad \\ =\lim_{\Delta\delta \to 0} \frac {\begin{bmatrix} {\Delta \phi^\land} & \Delta\rho \\ 0 & 0 \end{bmatrix} \begin{bmatrix} e^{\phi^\land}p + J\rho \\ 1 \end{bmatrix}} {\begin{bmatrix} \Delta\rho \\ \Delta\phi \end{bmatrix}} \\ \quad \\ =\lim_{\Delta\delta \to 0} \frac {\begin{bmatrix} {\Delta \phi^\land}(e^{\phi^\land}p + J\rho)+\Delta\rho \\ 0 \end{bmatrix}}{\begin{bmatrix} \Delta\rho \\ \Delta\phi \end{bmatrix}} \\ \quad \\ = \begin{bmatrix} I & -(Rp+t)^\land \\ 0^T & 0^T \end{bmatrix} \\
∂Δδ∂eΔδ∧eδ∧p=Δδ→0limΔδeΔδ∧eδ∧p−eδ∧p=Δδ→0limΔδΔδ∧(eδ∧p)=Δδ→0lim[ΔρΔϕ][Δϕ∧0Δρ0][eϕ∧p+Jρ1]=Δδ→0lim[ΔρΔϕ][Δϕ∧(eϕ∧p+Jρ)+Δρ0]=[I0T−(Rp+t)∧0T]
后记
本篇记录了李代数求导的方法,包括定义求导与扰动模型求导。下一篇将学习非线性优化,然后就是Eigen库、
Sophus库、ceres库和g2o库的使用实战。
