- 前言
- 群定义
- 李群与李代数的引出
- 正交群与欧式群
- 李代数的引出
- 李代数
- s o ( 3 ) so(3) so(3)的几何意义
- 李群与李代数的转换
- 后记
本篇记录SLAM十四讲中的,李群与李代数。本篇与群论相关,因此相当不是很好理解。我反复看了五遍以上才稍微弄懂这一章。
群定义群是一个集合 G G G与一种运算 ◊ \Diamond ◊的复合,满足: 1.封闭性: ∀ a , b ∈ G , a ◊ b ∈ G \forall a,b\in G, a\Diamond b\in G ∀a,b∈G,a◊b∈G 2.结合律: ∀ a , b ∈ G , a ◊ b = b ◊ a \forall a,b\in G, a\Diamond b=b\Diamond a ∀a,b∈G,a◊b=b◊a 3.幺元 ∃ e ∈ G , ∀ a ∈ G , a ◊ e = e ◊ a = a \exist e\in G,\forall a\in G, a\Diamond e=e\Diamond a=a ∃e∈G,∀a∈G,a◊e=e◊a=a 4.逆元: ∀ a ∈ G , ∃ b ∈ G , a ◊ b = b ◊ a = e \forall a\in G,\exist b \in G,a\Diamond b=b\Diamond a=e ∀a∈G,∃b∈G,a◊b=b◊a=e
比如实数集与加法组成一个群: a + b ∈ R a + b + c = a + ( b + c ) a + 0 = 0 + a = a a + ( − a ) = 0 a+b \in R \\ a+b+c=a+(b+c) \\ a+0=0+a=a \\ a + (-a) =0 a+b∈Ra+b+c=a+(b+c)a+0=0+a=aa+(−a)=0
李群与李代数的引出之前提到的刚体变换的矩阵表示方法,即旋转矩阵 R R R和变换矩阵 T T T,都存在参数冗余以及自约束的问题。因而需要引入更方便数值计算的方法。
所谓李群,是实数域上的具有连续性质的群,并且局部可导。下面着重介绍正交群 S O ( 3 ) SO(3) SO(3)与欧式群 S E ( 3 ) SE(3) SE(3)。
正交群与欧式群特殊正交群记为 S O ( 3 ) = { R 3 × 3 ∣ R R T = I , d e t ( R ) = 1 } SO(3)=\{R_{3\times 3}|RR^T=I,det(R)=1 \} SO(3)={R3×3∣RRT=I,det(R)=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},可用于表示三维空间中的欧式变换。
李代数的引出假设当前的旋转 R R R是时间 t t t的函数 R ( t ) R(t) R(t),并且当 t = 0 t=0 t=0时, R ( 0 ) = I R(0)=I R(0)=I。现在需要求旋转的速度: R ( t ) R ( t ) T = I R ˙ ( t ) R ( t ) T + R ( t ) R ˙ ( t ) T = 0 R ˙ ( t ) R ( t ) T = − R ( t ) R ˙ ( t ) T = − ( R ˙ ( t ) R ( t ) T ) T R(t)R(t)^T=I \\ \dot R(t)R(t)^T+R(t)\dot R(t)^T=0 \\ \dot R(t)R(t)^T = -R(t)\dot R(t)^T=-(\dot R(t)R(t)^T)^T R(t)R(t)T=IR˙(t)R(t)T+R(t)R˙(t)T=0R˙(t)R(t)T=−R(t)R˙(t)T=−(R˙(t)R(t)T)T 因为 R ˙ ( t ) R ( t ) T \dot R(t)R(t)^T R˙(t)R(t)T是一个反对称矩阵,因此可以找到一个向量 ϕ ( t ) \phi(t) ϕ(t),其反对称矩阵满足 ϕ ( t ) ∧ = R ˙ ( t ) R ( t ) T \phi(t)^\land=\dot R(t)R(t)^T ϕ(t)∧=R˙(t)R(t)T,有: R ˙ ( t ) = ϕ ( t ) ∧ R ( t ) R ( 0 ) = I \dot R(t)=\phi(t)^\land R(t) \\ R(0)=I R˙(t)=ϕ(t)∧R(t)R(0)=I 上面的式子是一个带初值条件的矩阵微分方程,求解方法与普常微分方程类似: R ( t ) = e ϕ ( t ) ∧ t R(t)=e^{\phi(t)^\land t} R(t)=eϕ(t)∧t 因此,任意时刻的旋转矩阵 R R R都与一个特定的向量 ϕ \phi ϕ的反对称矩阵具有指数映射的关系。 ϕ \phi ϕ就是 R R R对应的李代数 s o ( 3 ) so(3) so(3)。
李代数对于不满足加运算的李群,不能直接通过李群求导,因此需要借助李代数来求导。
李代数是由一个集合、一个数域和一个二元运算李括号组成,李括号表示为: [ x , y ] [x,y] [x,y]。对于每个李群,都有对应的李代数,不同李代数的李括号并不相同。 s o ( 3 ) so(3) so(3)的李括号表示为: [ ϕ 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 o ( 3 ) = { ϕ ∈ R 3 , ϕ ∧ ∈ R 3 × 3 } so(3)=\{\phi \in {\bf R^3},\phi ^\land\in {\bf R^{3\times 3}} \} so(3)={ϕ∈R3,ϕ∧∈R3×3}
s o ( 3 ) so(3) so(3)的几何意义 如上图所示是一个向量
P
P
P绕着单位向量
n
n
n旋转
θ
\theta
θ角度后得到
P
′
P'
P′。假设
t
=
0
t=0
t=0时,
P
(
0
)
=
P
P(0)=P
P(0)=P,绕
n
n
n旋转的角速度为1rad/s,则t时刻的向量位置可表示为
P
(
t
)
P(t)
P(t),并且
P
(
θ
)
=
P
′
P(\theta)=P'
P(θ)=P′。
P
(
t
)
P(t)
P(t)的瞬时速度
P
′
(
t
)
P'(t)
P′(t)是
P
P
P绕
n
n
n的线速度:
P
′
(
t
)
=
n
×
P
(
t
)
P
˙
(
t
)
=
n
∧
P
(
t
)
P'(t)=n\times P(t) \\ \dot P(t)=n^\land P(t)
P′(t)=n×P(t)P˙(t)=n∧P(t) 这与上面李代数与旋转
R
R
R的映射表达式相同。
已知 S O ( 3 ) SO(3) SO(3)与 s o ( 3 ) so(3) so(3)之间的映射为 R = e ϕ ∧ t R=e^{\phi^\land t} R=eϕ∧t,现在需要进行 s o ( 3 ) 与 S O ( 3 ) so(3)与SO(3) so(3)与SO(3)之间的转换: e ϕ ∧ t = I + ϕ ∧ + 1 2 ( ϕ ∧ ) 2 + 1 3 ! ( ϕ ∧ ) 3 + 1 4 ! ( ϕ ∧ ) 4 + … e^{\phi^\land t}=I+\phi^\land +\frac{1}{2}(\phi^\land)^2+\frac{1}{3!}(\phi^\land)^3+\frac{1}{4!}(\phi^\land)^4+\dots eϕ∧t=I+ϕ∧+21(ϕ∧)2+3!1(ϕ∧)3+4!1(ϕ∧)4+… 对于以上展开式,需要通过 ϕ ∧ \phi^\land ϕ∧的化简进行: ϕ = θ n , ∣ ∣ n ∣ ∣ 2 = 1 ϕ ∧ = θ n ∧ n ∧ n ∧ = n n T − I n ∧ n ∧ n ∧ = − n ∧ \phi = \theta n,||n||_2=1 \\ \phi^\land=\theta n^\land \\ n^\land n^\land=nn^T-I\\ n^\land n^\land n^\land=-n^\land ϕ=θn,∣∣n∣∣2=1ϕ∧=θn∧n∧n∧=nnT−In∧n∧n∧=−n∧ 代回展开式: e ϕ ∧ t = n n T − n ∧ n ∧ + θ n ∧ + θ 2 2 ! ( n n T − I ) + θ 3 3 ! ( − n ∧ ) + … = n n T + ( θ − θ 3 3 ! + θ 5 5 ! + … ) n ∧ − ( 1 − θ 2 2 ! + θ 4 4 ! + … ) n ∧ n ∧ = n n T + n ∧ sin θ − n ∧ n ∧ cos θ = n n T + n ∧ sin θ − n n T cos θ + I cos θ = n n T ( 1 − cos θ ) + n ∧ sin θ + I cos θ e^{\phi^\land t}=nn^T-n^\land n^\land+\theta n^\land +\frac{\theta^2}{2!}(nn^T-I)+\frac{\theta^3}{3!}(-n^\land) + \dots \\ =nn^T+ (\theta -\frac{\theta^3}{3!}+\frac{\theta^5}{5!}+\dots)n^\land -(1-\frac{\theta^2}{2!}+\frac{\theta^4}{4!}+\dots)n^\land n^\land \\ = nn^T +n^\land \sin\theta - n^\land n^\land \cos \theta \\ = nn^T + n^\land \sin \theta - nn^T\cos \theta +I\cos \theta \\ = nn^T(1-\cos\theta) +n^\land \sin \theta + I\cos \theta\\ eϕ∧t=nnT−n∧n∧+θn∧+2!θ2(nnT−I)+3!θ3(−n∧)+…=nnT+(θ−3!θ3+5!θ5+…)n∧−(1−2!θ2+4!θ4+…)n∧n∧=nnT+n∧sinθ−n∧n∧cosθ=nnT+n∧sinθ−nnTcosθ+Icosθ=nnT(1−cosθ)+n∧sinθ+Icosθ 实际上就是刚体变换中的罗德里格斯公式。这也表明了 s o ( 3 ) so(3) so(3)与 S O ( 3 ) SO(3) SO(3)的关系,就是旋转矩阵与旋转向量之间的关系。
后记由于李群这章比较长,因此下次再记录李群求导的方法。