文档维护:Arvin
网页部署:Arvin
▶
写在前面:这篇的内容主要来自于《slam十四讲:从入门到实践》中的第三、四章,是为了引出李群李代数,文章大多记录了一些结论,如果对推导有兴趣可以去看书中详细的过程。

基础知识
三维空间刚体运动
旋转矩阵
1.反对称矩阵
设A=(aij)n×n,若其中元素满足aij=aji,∀i,j⇔AT=A,则称A是对称矩阵;若其元素满足aij=−aji,∀i,j⇔AT=−A,则称A为反对称矩阵。
若A是反对称矩阵,则aij=−aij,当i=j时,便有aij=0,即反对称矩阵对角线上的元全为零,而位于主对角线两侧对称的元素反号。
2.旋转矩阵
欧氏变换由旋转和平移组成。我们首先考虑旋转。设某个单位正交基(e1,e2,e3)经过一次旋转变成了(e1′,e2′,e3′)。那么,对于同一个向量a,它在两个坐标系下的坐标分别为[a1,a2,a3]T和[a1′,a2′,a3′]T。有:
\symbfit{a}=[\boldsymbol{e}_1,\boldsymbol{e}_2,\boldsymbol{e}_3]\begin{bmatrix}a_1\\\\a_2\\\\a_3\end{bmatrix}=[\boldsymbol{e}_1',\boldsymbol{e}_2',\boldsymbol{e}_3']\begin{bmatrix}a_1'\\\\a_2'\\\\a_3'\end{bmatrix}
左乘e1Te2Te3T,得到:
a1a2a3=e1Te1′e2Te1′e3Te1′e1Te2′e2Te2′e3Te2′e1Te3′e2Te3′e3Te3′a1′a2′a3′a3′=defRa′
我们称R为旋转矩阵,也叫做方向余弦矩阵。
旋转矩阵是一个行列式为1的正交矩阵。反之,行列式为1的正交矩阵也是一个旋转矩阵。所以,可以将n维旋转矩阵的集合定义如下:
SO(n)={R∈Rn×n∣RRT=I,det(R)=1}
SO(n)是一个特殊正交群。
3.变换矩阵
欧式变换中,除了旋转还有平移。用公式表示:
a′=Ra+t
其中R为旋转矩阵,t为平移向量。但若经过多次变换,这里并非完全线性关系,如:
b=R1a+t1,c=R2b+t2
c=R2(R1a+t1)+t2
为了化简,我们引入齐次坐标和变换矩阵:
a′1=[R0Tt1]a1=defTa1
在一个三维向量的末尾添加1,将其变成四维矩阵,成为齐次坐标。矩阵T成为变换矩阵。这种矩阵又被称为特殊欧式群:
SE(3)={T=[R0Tt1]∈R4×4∣R∈SO(3),t∈R3}
旋转向量和欧拉角
1.旋转向量
任意旋转都可以用一个旋转轴和一个旋转角来刻画。我们使用一个向量,其方向与旋转轴一致,而长度等于旋转角,这种向量称为旋转向量。
假设有一个旋转矩阵R。假设旋转轴为一个单位长度的向量n,角度为θ,那么θn也可以描述这个旋转。从旋转向量到旋转矩阵的转换过程有罗德里格斯公式表明:
R=cosθI+(1−cosθ)nnT+sinθn∧
从旋转矩阵到旋转向量:
因为
tr(R)=cosθtr(I)+(1−cosθ)tr(nnT)+sinθtr(n∧)=3cosθ+(1−cosθ)=1+2cosθ
所以
θ=arccos2tr(R)−1
关于转轴n,旋转轴上的向量在旋转后不发生改变,说明:
Rn=n
因此,转轴n是矩阵R特征值1对应的特征向量。
2.欧拉角
欧拉角使用了3个分离的转角,把一个旋转分解成3次不同轴的旋转。一般情况下,我们使用”偏航-俯仰-滚转“(yaw-pitch-roll)3个角度来描述一个旋转。它等价于ZYX轴的旋转:
- 绕物体的Z轴旋转,得到偏航角yaw。
- 绕旋转之后的Y轴旋转,得到俯仰角pitch。
- 绕旋转之后的X轴旋转,得到滚转角。
四元数
1.定义
在二维情况下,旋转可以由单位复数来描述。类似地,我们用四元数描述三维旋转:
一个四元数q拥有一个实部和三个虚部:
q=q0+q1i+q2j+q3k
其中,i,h,k为四元数的三个虚部。满足:
⎩⎨⎧i2=j2=k2=−1ij=k,ji=−kjk=i,kj=−iki=j,ik=−j
2.转换成旋转矩阵
用四元数表示旋转
把三维空间点p用一个虚四元数来描述:
p=[0,x,y,z]T=[0,v]T
则旋转后的p′可表示为:
p′=qpq−1
我们换另一种写法,先定义如下的符号q+和q⊕
q+=sv−vTsI+v∧,q⊕=sv−vTsI−v∧
有:
q1+q2=s1v1−v1Ts1I+v1∧s2v2=−v1Tv2+s1s2s1v2+s2v1+v1∧v2=q1q2
则:
p′=qpq−1=q+p+q−1=q+q−1⊕p
q+(q−1)⊕=sv−vTsI+v∧s−vvTsI+v∧=[10T0vvT+s2I+2sv∧+(v∧)2]
得:
R=vvT+s2I+2sv∧+(v∧)2(1)
3.转换成旋转向量
对式(1)两侧求迹,得
tr(R)=tr(vvT+3s2+2s⋅0+tr((v∧)2)=v12+v22+v32+3s2−2(v12+v22+v32)=(1−s2)+3s2−2(1−s2)=4s2−1
由旋转向量和旋转矩阵之间得转换公式得
θ=arccos2tr(R−1)=arccos(2s2−1).
即
cosθ=2s2−1=2cos22θ−1
所以
θ=2arccoss
总之,四元数到旋转向量的转换公式如下:
{θ=2arccosq0[nx,ny,nz]T=[q1,q2,q3]T/sin2θ
李群李代数
群
SO(3)={R∈R3×3∣RRT=I,det(R)=1},SE(3)=⎩⎨⎧T=R0Tt1∈R4×4∣R∈SO(3),t∈R3⎭⎬⎫
上式分别为三维旋转矩阵集合和三维变换矩阵集合,分别构成了特殊正交群SO(3)和特殊欧式群SE(3)。
群是一种集合加上一种运算的代数结构。我们把集合记作A,运算记作$\cdot ,那么群可以记作G=(A,\cdot)$。群要求这个运算满足以下几个条件:
- 封闭性:∀a1,a2∈A,a1⋅a2∈A
- 结合律:∀a1,a2,a3∈A,(a1⋅a2)⋅a3=a1⋅(a2⋅a3)
- 幺元:∃a0∈A,s.t.∀a∈A,a0⋅a=a⋅a0=a
- 逆:∀a∈A,∃a−1∈A,s.t.a⋅a−1=a0
李群是指具有连续光滑性质的群。
李代数
李代数描述了李群的局部性质。准确的讲是单位元附近的正切空间。
李代数由一个集合V、一个数域F和一个二元运算[,]组成。如果满足以下几条性质,则称(V,F,[,])为一个李代数,记作g。
-
封闭性:∀X,Y∈V,[X,Y]∈V
-
双线性:∀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
-
雅可比等价:∀X,Y,Z∈V,[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0
李代数so(3)
SO(3)对应的李代数是定义在R3上的向量,我们记作ϕ,其反对称矩阵为:
Φ=ϕ∧=0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10∈R3×3
此定义下,李括号为:
[ϕ1,ϕ2]=(Φ1Φ2−Φ2Φ1)∨
则so(3)为:
so(3)={ϕ∈R3,Φ=ϕ∧∈R3×3}
三维旋转矩阵R(李群)与l李代数so(3)的关系由指数映射恒定:
R=exp(ϕ∧)
李代数se(3)
与旋转矩阵类似地,对于SE(3)也有对应的李代数se(3)。其定义为:
sc(3)=⎩⎨⎧ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ∧=ϕ∧0Tρ0∈R4×4⎭⎬⎫
我们把每个se(3)元素记作ξ,它是一个六维向量。前三维为平移(但含义与变换矩阵中的平移不同),记作ρ;后三维为旋转,记作ϕ,实质上是元素so(3)。同时,我们拓展了^符号的含义。在se(3)中,同样使用^符号,将一个六维向量转换成四维矩阵,但这里不再表示反对称:
ξ∧=[ϕ∧0Tρ0]∈R4×4
李括号定义为:
[ξ1,ξ2]=(ξ1∧ξ2∧−ξ2∧ξ1∧)∨
指数映射与对数映射

其中,由于ϕ是三维向量,我们可以定义它的模长和方向,分别记作θ和a
ϕ=θa
BCH公式与近似形式
ln(exp(ϕ1∧)exp(ϕ2∧))∨≈{Jl(ϕ2)−1ϕ1+ϕ2Jr(ϕ1)−1ϕ2+ϕ1当ϕ1为小量,当ϕ2为小量.
以第一个近似为例。该式告诉我们,当对一个旋转矩阵R2(李代数为ϕ2)左乘一个微小旋转矩阵R1(李代数为ϕ1)时,可以近似地看作,在原有的李代数ϕ2上加上了一项Jl(ϕ2)−1ϕ1。同理,第二个近似描述了右乘一个微小位移的情况。于是,李代数在BCH近似下,分成了左乘近似和右乘近似两种,在使用时我们须注意使用的是左乘模型还是右乘模型。
以左乘为例:
Jl=J=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧
它的逆为:
Jr(ϕ)=Jl(−ϕ)
所以在SO(3)中,有
exp(Δϕ∧)exp(ϕ∧)=exp((ϕ+Jl−1(ϕ)Δϕ)∧)
exp((ϕ+Δϕ)↑)=exp((JlΔϕ)↑)exp(ϕ↑)=exp(ϕ↑)exp((JrΔϕ)↑)
同样的在SE(3)中,有
exp(Δξ∧)exp(ξ∧)exp(ξ∧)exp(Δξ∧)≈exp((Jl−1Δξ+ξ)∧)≈exp((Jr−1Δξ+ξ)∧)
李代数求导
**SO(3)**上的李代数求导:
∂ϕ∂(exp(ϕ∧)p)=δϕ→0limδϕexp((ϕ+δϕ)∧)p−exp(ϕ∧)p=δϕ→0limδϕexp((Jlδϕ)∧)exp(ϕ∧)p−exp(ϕ∧)p=δϕ→0limδϕ(I+(Jlδϕ)∧)exp(ϕ∧)p−exp(ϕ∧)p=δϕ→0limδϕ(Jlδϕ)∧exp(ϕ∧)p=δϕ→0limδϕ−(exp(ϕ∧)p)∧Jlδϕ=−(Rp)∧Jl
扰动模型(左乘):
∂φ∂(Rp)=φ→0limφexp(φ∧)exp(ϕ∧)p−exp(ϕ∧)p=φ→0limφ(I+φ∧)exp(ϕ∧)p−exp(ϕ∧)p=φ→0limφφ∧Rp=φ→0limφ−(Rp)∧φ=−(Rp)∧
**SE(3)**上的李代数求导
∂δξ∂(Tp)=δξ→0limδξexp(δξ∧)exp(ξ∧)p−exp(ξ∧)p=δξ→0limδξ(I+δξ∧)exp(ξ∧)p−exp(ξ∧)p=δξ→0limδξδξ∧exp(ξ∧)p=δξ→0limδξ[δϕ∧0Tδρ0]Rp+t1=δξ→0lim[δρ,δϕ]T[δϕ∧(Rp+t)+δρ0T]=[I0T−(Rp+t)∧0T]=def(Tp)⊙