在前面的刚体运动中我们提到了两个群 S O ( 3 ) SO(3) SO(3)和 S E ( 3 ) SE(3) SE(3),这两个群为所谓的李群。注意到这两个群对于加法是不封闭的,但对于乘法是封闭的,即两个旋转矩阵相加不再是一个旋转矩阵,相乘则还是一个旋转矩阵(从 d e t ( R ) = 1 det(R)=1 det(R)=1这点上很好理解)。下面给出群的定义: G r o u p = s e t ( G ) + o p e r a t i o n ( ⋅ ) Group=set(G)+operation(\cdot) Group=set(G)+operation(⋅),其满足如下几个条件:
- 封闭性: g 1 ⋅ g 2 ∈ G , ∀ g 1 , g 2 ∈ G g_1 \cdot g_2 \in G,\forall g_1,g_2 \in G g1⋅g2∈G,∀g1,g2∈G
- 结合律: ( g 1 ⋅ g 2 ) ⋅ g 3 = g 1 ⋅ ( g 2 ⋅ g 3 ) , ∀ g 1 , g 2 , g 3 ∈ G (g_1 \cdot g_2)\cdot g_3 = g_1 \cdot (g_2\cdot g_3), \forall g_1,g_2,g_3 \in G (g1⋅g2)⋅g3=g1⋅(g2⋅g3),∀g1,g2,g3∈G
- 幺元: ∃ e ∈ G : e ⋅ g = g ⋅ e = g , ∀ g ∈ G \exist e \in G: e \cdot g = g \cdot e = g, \forall g \in G ∃e∈G:e⋅g=g⋅e=g,∀g∈G
- 逆: ∃ g − 1 ∈ G : g ⋅ g − 1 = g − 1 ⋅ g = e , ∀ g ∈ G \exist g^{-1} \in G: g \cdot g^{-1} = g^{-1} \cdot g = e, \forall g \in G ∃g−1∈G:g⋅g−1=g−1⋅g=e,∀g∈G
李群与李代数
李群是指具有连续光滑性质的群,由
R
R
T
=
I
RR^T=I
RRT=I,我们可以得到
d
d
t
(
R
R
T
)
=
R
˙
R
T
+
R
R
˙
T
⇒
R
˙
R
T
=
−
(
R
˙
R
T
)
T
\frac{d}{dt}(RR^T)=\dot{R}R^T+R\dot{R}^T \Rightarrow \dot{R}R^T=-(\dot{R}R^T)^T
dtd(RRT)=R˙RT+RR˙T⇒R˙RT=−(R˙RT)T
所以可以看到
R
˙
R
T
\dot{R}R^T
R˙RT是一个反对称矩阵,可以用
w
^
\hat{w}
w^表示,
^
\hat{\quad}
^符号将一个三维的向量映射为一个
3
×
3
3\times3
3×3的反对称矩阵,若
ϕ
=
[
ϕ
1
,
ϕ
2
,
ϕ
3
]
\phi=[\phi_1,\phi_2,\phi_3]
ϕ=[ϕ1,ϕ2,ϕ3],则
ϕ
^
=
[
0
−
ϕ
3
ϕ
2
ϕ
3
0
−
ϕ
1
−
ϕ
2
ϕ
1
0
]
\hat{\phi}= \begin{bmatrix} 0 & -\phi_3 & \phi_2 \\ \phi_3 & 0 & -\phi_1 \\ -\phi_2 & \phi_1 & 0 \end{bmatrix}
ϕ^=⎣⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎤
所以可得
R
˙
(
t
)
R
T
(
t
)
=
ϕ
^
(
t
)
\dot{R}(t)R^T(t)=\hat{\phi}(t)
R˙(t)RT(t)=ϕ^(t),即
R
˙
(
t
)
=
ϕ
^
(
t
)
R
(
t
)
\dot{R}(t)=\hat{\phi}(t)R(t)
R˙(t)=ϕ^(t)R(t)
这里的
ϕ
^
\hat{\phi}
ϕ^即为
S
O
(
3
)
SO(3)
SO(3)所对应的李代数
s
o
(
3
)
so(3)
so(3),可以看到,李代数实际上反映了李群的正切空间,反映了李群的局部导数,这一点在后面的优化问题中十分重要,因为优化问题经常需要求变量的导数。
现在给出李代数的定义,李代数由一个集合
V
V
V,一个数域
F
F
F和一个二元运算
[
,
]
[,]
[,](李括号)组成,满足如下几条性质
- 封闭性: ∀ X , Y ∈ V , [ X , Y ] ∈ V \forall X,Y \in V, [X,Y] \in V ∀X,Y∈V,[X,Y]∈V
- 双线性: ∀ X , Y , Z ∈ V , a , b ∈ F , [ a X + b Y , Z ] = a [ X , Z ] + b [ Y , Z ] , [ Z , a X + b Y ] = a [ Z , X ] + b [ Z , Y ] \forall X,Y,Z \in V, a,b \in F, [aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y] ∀X,Y,Z∈V,a,b∈F,[aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y]
- 自反性: ∀ X ∈ V , [ X , X ] = 0 \forall X \in V,[X,X]=0 ∀X∈V,[X,X]=0
- 雅可比等价:
∀
X
,
Y
,
Z
∈
V
,
[
X
,
[
Y
,
Z
]
]
+
[
Z
,
[
X
,
Y
]
]
+
[
Y
,
[
Z
,
X
]
]
=
0
\forall X,Y,Z \in V, [X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0
∀X,Y,Z∈V,[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0
对应于 S O ( 3 ) SO(3) SO(3)的李代数如下:
s o ( 3 ) = { Φ = ϕ ^ ∈ R 3 × 3 ∣ ϕ ∈ R 3 } so(3)=\lbrace \Phi=\hat{\phi} \in R^{3\times3}| \phi \in R^3 \rbrace so(3)={Φ=ϕ^∈R3×3∣ϕ∈R3}
李括号如下
[ ϕ 1 , ϕ 2 ] = [ Φ 1 Φ 2 − Φ 2 Φ 1 ] ⋁ [\phi_1,\phi_2] = [\Phi_1 \Phi_2-\Phi_2 \Phi_1] ^{\bigvee} [ϕ1,ϕ2]=[Φ1Φ2−Φ2Φ1]⋁
对应于 S E ( 3 ) SE(3) SE(3)的李代数如下:
s e ( 3 ) = { ξ ^ = [ ϕ ^ ρ 0 T 0 ] ∈ R 4 × 4 ∣ ρ ∈ R 3 , ϕ ^ ∈ s o ( 3 ) } se(3) = \lbrace \hat{\xi} = \begin{bmatrix} \hat{\phi} & \rho\\ 0^T & 0 \end{bmatrix} \in R^{4\times4} | \rho \in R^3, \hat{\phi} \in so(3) \rbrace se(3)={ξ^=[ϕ^0Tρ0]∈R4×4∣ρ∈R3,ϕ^∈so(3)}
李括号如下
[ ξ 1 , ξ 2 ] = ( ξ 1 ^ ξ 2 ^ − ξ 2 ^ ξ 1 ^ ) ⋁ [\xi_1,\xi_2]=(\hat{\xi_1}\hat{\xi_2}-\hat{\xi_2}\hat{\xi_1})^{\bigvee} [ξ1,ξ2]=(ξ1^ξ2^−ξ2^ξ1^)⋁
Exponential and Logarithm
SO(3)与so(3)
由
R
˙
(
t
)
=
ϕ
^
R
(
t
)
R
(
0
)
=
I
\dot{R}(t)=\hat{\phi}R(t) \\ R(0) = I
R˙(t)=ϕ^R(t)R(0)=I
解得
R
(
t
)
=
e
x
p
(
ϕ
^
t
)
R(t)=exp(\hat{\phi}t)
R(t)=exp(ϕ^t)
由指数函数的泰勒展开:
e
x
p
(
ϕ
^
)
=
∑
n
=
0
∞
1
n
!
(
ϕ
^
)
n
exp(\hat{\phi})=\sum_{n=0}^{\infty} \frac{1}{n!}(\hat{\phi})^n
exp(ϕ^)=n=0∑∞n!1(ϕ^)n
令
ϕ
=
θ
a
,
θ
=
∣
ϕ
∣
\phi=\theta a,\theta = |\phi|
ϕ=θa,θ=∣ϕ∣,这里
a
a
a有如下性质
a
^
2
=
a
a
T
−
I
,
a
^
3
=
−
a
^
\hat{a}^2=aa^T-I, \hat{a}^3=-\hat{a}
a^2=aaT−I,a^3=−a^
带入上式中得
e
x
p
(
ϕ
^
)
=
e
x
p
(
θ
a
^
)
=
∑
n
=
0
∞
1
n
!
(
θ
a
^
)
n
exp(\hat{\phi})=exp(\theta \hat{a})=\sum_{n=0}^{\infty} \frac{1}{n!} (\theta \hat{a})^n
exp(ϕ^)=exp(θa^)=n=0∑∞n!1(θa^)n
由上述
a
a
a的性质可得(中间主要是展开公式并合并
a
^
\hat{a}
a^和
a
^
2
\hat{a}^2
a^2项,并利用了三角函数的泰勒展开形式)
e
x
p
(
ϕ
^
)
=
c
o
s
θ
+
(
1
−
c
o
s
θ
)
a
a
T
+
s
i
n
θ
a
^
exp(\hat{\phi})=cos\theta + (1-cos\theta)aa^T+sin\theta \hat{a}
exp(ϕ^)=cosθ+(1−cosθ)aaT+sinθa^
此时便完成了由李代数到李群的映射,由李群到李代数的映射通常用trace的性质计算,得到其旋转向量和转角
若
R
=
(
r
i
j
)
R=(r_{ij})
R=(rij),则
θ
=
c
o
s
−
1
(
t
r
a
c
e
(
R
)
−
1
2
)
a
=
1
2
s
i
n
θ
[
r
32
−
r
23
r
13
−
r
31
r
21
−
r
12
]
\theta = cos^{-1}(\frac{trace(R)-1}{2})\\ a=\frac{1}{2sin\theta} \begin{bmatrix} r_{32}-r_{23}\\ r_{13}-r_{31}\\ r_{21}-r_{12} \end{bmatrix}
θ=cos−1(2trace(R)−1)a=2sinθ1⎣⎡r32−r23r13−r31r21−r12⎦⎤
SE(3)与se(3)
这里仅给出公式:
e
x
p
(
ξ
^
)
=
[
R
J
ρ
0
T
1
]
exp(\hat{\xi})= \begin{bmatrix} R & J\rho\\ 0^T & 1 \end{bmatrix}
exp(ξ^)=[R0TJρ1]
R
R
R可以通过
ξ
\xi
ξ中的
ϕ
\phi
ϕ计算得到,而
J
J
J的形式如下
J
=
s
i
n
θ
θ
I
+
(
1
−
s
i
n
θ
θ
)
a
a
T
+
1
−
c
o
s
θ
θ
a
^
J=\frac{sin\theta}{\theta}I+(1-\frac{sin\theta}{\theta})aa^T+\frac{1-cos\theta}{\theta}\hat{a}
J=θsinθI+(1−θsinθ)aaT+θ1−cosθa^
李代数求导
BCH近似
BCH近似的目的是如何用李代数上的加法来代替李群上的矩阵乘法,当对一个旋转矩阵
R
2
R_2
R2左乘一个微小量
R
1
R_1
R1,近似看作在原有李代数
ϕ
2
\phi_2
ϕ2基础上加上一项
J
l
(
ϕ
2
)
−
1
ϕ
1
J_l(\phi_2)^{-1}\phi_1
Jl(ϕ2)−1ϕ1,当对一个旋转矩阵
R
1
R_1
R1右乘一个微小量
R
2
R_2
R2,近似看作在原有李代数
ϕ
1
\phi_1
ϕ1基础上加上一项
J
r
(
ϕ
1
)
−
1
ϕ
2
J_r(\phi_1)^{-1}\phi_2
Jr(ϕ1)−1ϕ2,其中
J
l
=
s
i
n
θ
θ
I
+
(
1
−
s
i
n
θ
θ
)
a
a
T
+
1
−
c
o
s
θ
θ
a
^
J_l=\frac{sin\theta}{\theta}I+(1-\frac{sin\theta}{\theta})aa^T+\frac{1-cos\theta}{\theta}\hat{a}
Jl=θsinθI+(1−θsinθ)aaT+θ1−cosθa^
J
l
−
1
=
θ
2
c
o
t
θ
2
I
+
(
1
−
θ
2
c
o
t
θ
2
)
a
a
T
−
θ
2
a
^
J_l^{-1}=\frac{\theta}{2}cot\frac{\theta}{2}I + (1-\frac{\theta}{2}cot\frac{\theta}{2})aa^T-\frac{\theta}{2}\hat{a}
Jl−1=2θcot2θI+(1−2θcot2θ)aaT−2θa^
J
r
(
ϕ
)
=
J
l
(
−
ϕ
)
J_r(\phi)=J_l(-\phi)
Jr(ϕ)=Jl(−ϕ)
假设对某个旋转
R
R
R,对应的李代数为
ϕ
\phi
ϕ,做成一个
Δ
R
\Delta R
ΔR,对应李代数为
Δ
ϕ
\Delta \phi
Δϕ,则在李代数上
e
x
p
(
Δ
ϕ
^
)
e
x
p
(
ϕ
^
)
=
e
x
p
(
(
ϕ
+
J
l
−
1
(
ϕ
)
Δ
ϕ
)
∧
)
exp(\Delta \hat{\phi})exp(\hat{\phi})=exp((\phi+J_l^{-1}(\phi)\Delta \phi)^{\land})
exp(Δϕ^)exp(ϕ^)=exp((ϕ+Jl−1(ϕ)Δϕ)∧)
同理,
e
x
p
(
(
ϕ
+
Δ
ϕ
)
∧
)
=
e
x
p
(
ϕ
^
)
e
x
p
(
(
J
r
Δ
ϕ
)
∧
)
exp((\phi+\Delta \phi)^{\land})=exp(\hat{\phi})exp((J_r \Delta \phi)^{\land})
exp((ϕ+Δϕ)∧)=exp(ϕ^)exp((JrΔϕ)∧)
对于
S
E
(
3
)
SE(3)
SE(3),也有如上公式
e
x
p
(
Δ
ξ
^
)
e
x
p
(
ξ
^
)
=
e
x
p
(
(
ϕ
+
J
l
−
1
(
ξ
)
Δ
ξ
)
∧
)
exp(\Delta \hat{\xi})exp(\hat{\xi})=exp((\phi+J_l^{-1}(\xi)\Delta \xi)^{\land})
exp(Δξ^)exp(ξ^)=exp((ϕ+Jl−1(ξ)Δξ)∧)
e x p ( ( ξ + Δ ξ ) ∧ ) = e x p ( ξ ^ ) e x p ( ( J r Δ ξ ) ∧ ) exp((\xi+\Delta \xi)^{\land})=exp(\hat{\xi})exp((J_r \Delta \xi)^{\land}) exp((ξ+Δξ)∧)=exp(ξ^)exp((JrΔξ)∧)
李代数上的求导
使用李代数解决求导问题的思路分为两种:
- 用李代数表示姿态,根据李代数加法对李代数求导
- 对李群左乘或右乘微小扰动,对该扰动求导
李代数求导
∂
(
R
P
)
∂
R
=
∂
(
e
x
p
(
ϕ
^
)
p
)
∂
ϕ
=
−
(
R
p
)
∧
J
l
\frac{\partial(RP)}{\partial R}=\frac{\partial(exp(\hat{\phi})p)}{\partial \phi}=-(Rp)^{\land}J_l
∂R∂(RP)=∂ϕ∂(exp(ϕ^)p)=−(Rp)∧Jl
由于结果中含有
J
l
J_l
Jl,这个矩阵形式较为复杂,故我们使用下面的扰动模型
扰动模型
以左扰动为例,在
R
R
R的左边乘一个微小量
Δ
R
\Delta R
ΔR,对应的李代数为
φ
\varphi
φ,对
φ
\varphi
φ求导
∂
(
R
P
)
∂
φ
=
lim
φ
→
0
e
x
p
(
φ
^
)
e
x
p
(
ϕ
^
)
p
−
e
x
p
(
ϕ
^
)
p
φ
=
lim
φ
→
0
(
1
+
φ
^
)
e
x
p
(
ϕ
^
)
p
−
e
x
p
(
ϕ
^
)
p
φ
=
lim
φ
→
0
φ
^
R
p
φ
=
lim
φ
→
0
−
(
R
p
)
∧
φ
φ
=
−
(
R
p
)
∧
\frac{\partial(RP)}{\partial \varphi}=\lim_{\varphi \to 0} \frac{exp(\hat{\varphi})exp(\hat{\phi})p-exp(\hat{\phi})p}{\varphi}\\ =\lim_{\varphi \to 0} \frac{(1+\hat{\varphi})exp(\hat{\phi})p-exp(\hat{\phi})p}{\varphi} \\ =\lim_{\varphi \to 0} \frac{\hat{\varphi}Rp}{\varphi}=\lim_{\varphi \to 0}\frac{-(Rp)^{\land}\varphi}{\varphi}=-(Rp)^{\land}
∂φ∂(RP)=φ→0limφexp(φ^)exp(ϕ^)p−exp(ϕ^)p=φ→0limφ(1+φ^)exp(ϕ^)p−exp(ϕ^)p=φ→0limφφ^Rp=φ→0limφ−(Rp)∧φ=−(Rp)∧
这里相比较上一种求导方式省去了
J
l
J_l
Jl的计算
SE(3)上求导
同样的利用扰动模型,在
T
T
T上左乘一个扰动
Δ
T
=
e
x
p
(
δ
ξ
^
)
\Delta T=exp(\delta \hat{\xi})
ΔT=exp(δξ^),设扰动项的李代数为
δ
ξ
=
[
δ
ρ
,
δ
ϕ
]
T
\delta \xi=[\delta \rho, \delta \phi]^T
δξ=[δρ,δϕ]T
∂
(
T
p
)
∂
δ
ξ
=
[
I
−
(
R
p
+
t
)
∧
0
T
0
T
]
\frac{\partial(Tp)}{\partial \delta \xi}= \begin{bmatrix} I & -(Rp+t)^{\land}\\ 0^T & 0^T \end{bmatrix}
∂δξ∂(Tp)=[I0T−(Rp+t)∧0T]
最后结果为一个
4
×
6
的
矩
阵
4\times6的矩阵
4×6的矩阵
综上所述,SLAM中李群和李代数的定义主要是为了方便计算变换矩阵的导数, S O ( 3 ) SO(3) SO(3)和 S E ( 3 ) SE(3) SE(3)分别代表了旋转和三维刚体运动, s o ( 3 ) so(3) so(3)和 s e ( 3 ) se(3) se(3)定义了其上的李代数,代表了李群上的正切空间,最后通过扰动模型可以方便的计算出李群上的导数,而避免了计算复杂的雅可比矩阵。
参考文献
[1] 高翔, 张涛, 颜沁睿, 刘毅, 视觉SLAM十四讲:从理论到实践, 电子工业出版社, 2017
[2] https://vision.in.tum.de/teaching/ss2019/mvg2019
[3] Barfoot T D. State Estimation for Robotics[M]. Cambridge University Press, 2017.