李群与李代数
引入李群与李代数的原因:旋转矩阵自身是带有约束的(正交且行列式为1).它们作为优化变量时,会引入额外的约束,使优化变得困难。通过李群——李代数间的转换关系,我们希望把位姿估计变成无约束的优化问题,简化求解方式。
4.1 李群与李代数基础
三维旋转矩阵构成了特殊正交群SO(3)
变换矩阵构成了特殊欧式群SE(3)
S
O
(
3
)
=
{
R
∈
R
3
×
3
∣
R
R
T
=
I
,
det
(
R
)
=
1
}
S
E
(
3
)
=
{
T
=
[
R
t
0
T
1
]
∈
R
4
×
4
∣
R
∈
S
O
(
3
)
,
t
∈
R
3
}
\begin{array}{l} \mathrm{SO}(3)=\left\{\boldsymbol{R} \in \mathbb{R}^{3 \times 3} | \boldsymbol{R} \boldsymbol{R}^{\mathrm{T}}=\boldsymbol{I}, \operatorname{det}(\boldsymbol{R})=1\right\} \\ \mathrm{SE}(3)=\left\{\boldsymbol{T}=\left[\begin{array}{ll} \boldsymbol{R} \boldsymbol{t} \\ \mathbf{0}^{\mathrm{T}} 1 \end{array}\right] \in \mathbb{R}^{4 \times 4} | \boldsymbol{R} \in \mathrm{SO}(3), \boldsymbol{t} \in \mathbb{R}^{3}\right\} \end{array}
SO(3)={R∈R3×3∣RRT=I,det(R)=1}SE(3)={T=[Rt0T1]∈R4×4∣R∈SO(3),t∈R3}
乘法对应着旋转或变换的集合,两个旋转矩阵相乘表示做了两次旋转。对于这种只有一个(良好的,封闭的)运算的集合,我们称之为群。
4.1.1 群
群的定义:群是一种集合
加上一种运算
的代数结构。
运算对象:集合记作
A
A
A。
运算符:运算记作
⋅
\cdot
⋅
群的标记:
G
=
(
A
,
⋅
)
G=(A,\cdot)
G=(A,⋅)
群对运算的要求(封结幺逆 = 丰俭由你):
-
封闭性
: ∀ a 1 , a 2 ∈ A , a 1 ⋅ a 2 ∈ A {\forall a_{1}, a_{2} \in A, \ \ \ \ \ a_{1} \cdot a_{2} \in A} ∀a1,a2∈A, a1⋅a2∈A. -
结合律
: ∀ a 1 , a 2 , a 3 ∈ A , ( a 1 ⋅ a 2 ) ⋅ a 3 = a 1 ⋅ ( a 2 ⋅ a 3 ) { \forall a_{1}, a_{2}, a_{3} \in A, \ \ \ \ \ \left(a_{1} \cdot a_{2}\right) \cdot a_{3}=a_{1} \cdot\left(a_{2} \cdot a_{3}\right)} ∀a1,a2,a3∈A, (a1⋅a2)⋅a3=a1⋅(a2⋅a3). -
幺元
: ∃ a 0 ∈ A , { \exists a_{0} \in A, \ \ \ \ \ } ∃a0∈A, s.t. ∀ a ∈ A , a 0 ⋅ a = a ⋅ a 0 = a { \forall a \in A, \ \ \ \ \ a_{0} \cdot a=a \cdot a_{0}=a} ∀a∈A, a0⋅a=a⋅a0=a. -
逆
: ∀ a ∈ A , ∃ a − 1 ∈ A , { \forall a \in A, \ \ \ \ \ \exists a^{-1} \in A, \ \ \ \ \ } ∀a∈A, ∃a−1∈A, s.t. a ⋅ a − 1 = a 0 { a \cdot a^{-1}=a_{0}} a⋅a−1=a0.
李群的定义:李群是指具有连续(光滑)性质的群。
4.1.2 李代数的引出
R
\boldsymbol{R}
R是某个相机的旋转,它会随时间连续地变化,即为时间的函数:
R
(
t
)
\boldsymbol{R}(t)
R(t),有:
R
(
t
)
R
(
t
)
T
=
I
(4.5)
\boldsymbol{R}(t)\boldsymbol{R}(t)^T=\boldsymbol{I}\tag{4.5}
R(t)R(t)T=I(4.5)
在等式两边对时间求导,得到
R
˙
(
t
)
R
(
t
)
T
+
R
(
t
)
R
˙
(
t
)
T
=
0
\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^{\mathrm{T}}+\boldsymbol{R}(t) \dot{\boldsymbol{R}}(t)^{\mathrm{T}}=0
R˙(t)R(t)T+R(t)R˙(t)T=0
整理得
R
˙
(
t
)
R
(
t
)
T
=
−
(
R
˙
(
t
)
R
(
t
)
T
)
T
(4.6)
\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^{\mathrm{T}}=-\left(\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^{\mathrm{T}}\right)^{\mathrm{T}}\tag{4.6}
R˙(t)R(t)T=−(R˙(t)R(t)T)T(4.6)
R
˙
(
t
)
R
(
t
)
T
\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^{\mathrm{T}}
R˙(t)R(t)T是一个反对称矩阵。
∧
^\wedge
∧符号可以将一个向量转成反对称矩阵。反对称矩阵,也能找到唯一与之对应的向量。
a
∧
=
A
=
[
0
−
a
3
a
2
a
3
0
−
a
1
−
a
2
a
1
0
]
,
A
∨
=
a
(4.7)
\boldsymbol{a}^{\wedge}=\boldsymbol{A}=\left[\begin{array}{ccc} 0 & -a_{3} & a_{2} \\ a_{3} & 0 & -a_{1} \\ -a_{2} & a_{1} & 0 \end{array}\right], \boldsymbol{A}^{\vee}=\boldsymbol{a}\tag{4.7}
a∧=A=⎣⎡0a3−a2−a30a1a2−a10⎦⎤,A∨=a(4.7)
于是,由于
R
˙
(
t
)
R
(
t
)
T
\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^{\mathrm{T}}
R˙(t)R(t)T是一个反对称矩阵,我们可以找到一个三维向量
ϕ
(
t
)
∈
R
3
\boldsymbol{\phi}(t)\in\mathbb{R}^3
ϕ(t)∈R3与之对应:
R
˙
(
t
)
R
(
t
)
T
=
ϕ
(
t
)
∧
\dot{\boldsymbol{R}}(t) \boldsymbol{R}(t)^{\mathrm{T}}=\boldsymbol{\phi}(t)^{\wedge}
R˙(t)R(t)T=ϕ(t)∧
等式两边右乘
R
(
t
)
{\boldsymbol{R}(t)}
R(t), 由于
R
{\boldsymbol{R}}
R 为正交阵, 可以消去左边的
R
T
{\boldsymbol{R}}^T
RT
R
˙
(
t
)
=
ϕ
(
t
)
∧
R
(
t
)
=
[
0
−
ϕ
3
ϕ
2
ϕ
3
0
−
ϕ
1
−
ϕ
2
ϕ
1
0
]
R
(
t
)
(4.8)
\dot{\boldsymbol{R}}(t)=\boldsymbol{\phi}(t)^{\wedge} \boldsymbol{R}(t)=\left[\begin{array}{ccc} 0 & -\phi_{3} & \phi_{2} \\ \phi_{3} & 0 & -\phi_{1} \\ -\phi_{2} & \phi_{1} & 0 \end{array}\right] \boldsymbol{R}(t)\tag{4.8}
R˙(t)=ϕ(t)∧R(t)=⎣⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎤R(t)(4.8)
旋转矩阵的导数:只需左乘一个
ϕ
(
t
)
∧
\boldsymbol{\phi}(t)^{\wedge}
ϕ(t)∧即可。考虑
t
0
=
0
t_0=0
t0=0时,设此时旋转矩阵为
R
(
0
)
=
I
\boldsymbol{R}(0)=\boldsymbol{I}
R(0)=I。按照导数定义,可以把
R
(
t
)
\boldsymbol{R}(t)
R(t)在
t
=
0
t=0
t=0附近进行一阶泰勒展开:
R
(
t
)
≈
R
(
t
0
)
+
R
˙
(
t
0
)
(
t
−
t
0
)
=
I
+
ϕ
(
t
0
)
∧
R
(
t
0
)
(
t
)
=
I
+
ϕ
(
t
0
)
∧
(
t
)
(4.9)
\boldsymbol{R}(t) \approx \boldsymbol{R}\left(t_{0}\right)+\dot{\boldsymbol{R}}\left(t_{0}\right)\left(t-t_{0}\right) \\ =\boldsymbol{I}+\boldsymbol{\phi}\left(t_{0}\right)^{\wedge}\boldsymbol{R}(t_{0})(t)\\ =\boldsymbol{I}+\boldsymbol{\phi}\left(t_{0}\right)^{\wedge}(t)\tag{4.9}
R(t)≈R(t0)+R˙(t0)(t−t0)=I+ϕ(t0)∧R(t0)(t)=I+ϕ(t0)∧(t)(4.9)
ϕ
\boldsymbol{\phi}
ϕ的定义:在SO(3)
原点附近的正切空间,它反映了
R
\boldsymbol{R}
R的导数性质
在
t
0
t_0
t0附近,设
ϕ
\boldsymbol{\phi}
ϕ保持为常数
ϕ
(
t
0
)
=
ϕ
0
\boldsymbol{\phi}(t_0)=\boldsymbol{\phi}_0
ϕ(t0)=ϕ0。根据式(4.8),有
R
˙
(
t
)
=
ϕ
(
t
0
)
∧
R
(
t
)
=
ϕ
0
∧
R
(
t
)
\dot{\boldsymbol{R}}(t)=\boldsymbol{\phi}\left(t_{0}\right)^{\wedge} \boldsymbol{R}(t)=\boldsymbol{\phi}_{0}^{\wedge} \boldsymbol{R}(t)
R˙(t)=ϕ(t0)∧R(t)=ϕ0∧R(t)
上式是一个关于
R
\boldsymbol{R}
R的微分方程,而且有初始值
R
(
0
)
=
I
\boldsymbol{R}(0)=\boldsymbol{I}
R(0)=I,解得
R
(
t
)
=
exp
(
ϕ
0
∧
t
)
(4.10)
\boldsymbol{R}(t)=\exp \left(\boldsymbol{\phi}_{0}^{\wedge} t\right)\tag{4.10}
R(t)=exp(ϕ0∧t)(4.10)
式(4.10)推导:
R ˙ ( t ) = ϕ ( t 0 ) ∧ R ( t ) = ϕ 0 ∧ R ( t ) = d R ( t ) d t \dot{\boldsymbol{R}}(t)=\boldsymbol{\phi}\left(t_{0}\right)^{\wedge} \boldsymbol{R}(t)= \boldsymbol{\phi}_{0}^{\wedge} \boldsymbol{R}(t)=\frac{d\boldsymbol{R}(t)}{dt} R˙(t)=ϕ(t0)∧R(t)=ϕ0∧R(t)=dtdR(t)
方法1. 转为一阶齐次线性微分方程标准形式
d R ( t ) d t − ϕ 0 ∧ R ( t ) = 0 \frac{d\boldsymbol{R}(t)}{dt}-\boldsymbol{\phi}_{0}^{\wedge} \boldsymbol{R}(t)=0 dtdR(t)−ϕ0∧R(t)=0
得到通解形式:
R ( t ) = exp ( ϕ 0 ∧ t ) \boldsymbol{R}(t)=\exp \left(\boldsymbol{\phi}_{0}^{\wedge} t\right) R(t)=exp(ϕ0∧t)
方法2. 或者逐步推导,由
d R ( t ) R ( t ) = ϕ 0 ∧ d t \frac{d\boldsymbol{R}(t)}{R(t)}=\boldsymbol{\phi}_{0}^{\wedge}{dt} R(t)dR(t)=ϕ0∧dt
l n ∣ R ( t ) ∣ = ∫ ϕ 0 ∧ d t + C ln|\boldsymbol{R}(t)|=\int \boldsymbol{\phi}_{0}^{\wedge}{dt}+C ln∣R(t)∣=∫ϕ0∧dt+C
∣ R ( t ) ∣ = e ϕ 0 ∧ d t + C = e C e ϕ 0 ∧ d t = R ( 0 ) e ϕ 0 ∧ d t |\boldsymbol{R}(t)|=e^{\boldsymbol{\phi}_{0}^{\wedge}{dt}+C}=e^Ce^{\boldsymbol{\phi}_{0}^{\wedge}{dt}}=\boldsymbol{R}(0)e^{\boldsymbol{\phi}_{0}^{\wedge}{dt}} ∣R(t)∣=eϕ0∧dt+C=eCeϕ0∧dt=R(0)eϕ0∧dt
由于初始值 R ( 0 ) = I \boldsymbol{R}(0)=\boldsymbol{I} R(0)=I,因此同样可以得到结果
R ( t ) = exp ( ϕ 0 ∧ t ) \boldsymbol{R}(t)=\exp \left(\boldsymbol{\phi}_{0}^{\wedge} t\right) R(t)=exp(ϕ0∧t)
总结
- 给定某时刻的 R \boldsymbol{R} R,我们就能求得一个 ϕ \boldsymbol{\phi} ϕ,它描述了 R \boldsymbol{R} R在局部的倒数关系。与 R \boldsymbol{R} R对应的 ϕ \boldsymbol{\phi} ϕ正是对应到 S O ( 3 ) SO(3) SO(3)的李代数 s o ( 3 ) \mathfrak{s o}(3) so(3)
- 李群与李代数间的指数/对数映射,给出了向量 ϕ \boldsymbol{\phi} ϕ与 R \boldsymbol{R} R一一对应的关系。
- 有朋友可能还在困惑,到底 ϕ \boldsymbol{\phi} ϕ怎么求取。实际上,利用式(4.9),只需要知道 R ( t ) \boldsymbol{R}(t) R(t)和 R ( t 0 ) \boldsymbol{R}(t_0) R(t0)即可求得 ϕ \boldsymbol{\phi} ϕ。
4.1.3 李代数的定义
李代数由一个集合 V \mathbb{V} V、一个数域 F \mathbb{F} F和一个二元运算 [ , ] [,] [,]组成。如果它们满足以下几条性质,则称 ( V , F , [ , ] ) (\mathbb{V},\mathbb{F},[,]) (V,F,[,])为一个李代数,记作 g \mathfrak{g} g。
-
封闭性: ∀ X , Y ∈ V , [ X , Y ] ∈ V . \quad \forall \boldsymbol{X}, \boldsymbol{Y} \in \mathbb{V},[\boldsymbol{X}, \boldsymbol{Y}] \in \mathbb{V} . ∀X,Y∈V,[X,Y]∈V.
-
双线性: ∀ X , Y , Z ∈ V , a , b ∈ F \forall \boldsymbol{X}, \boldsymbol{Y}, \boldsymbol{Z} \in \mathbb{V}, a, b \in \mathbb{F} ∀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 ] [a \boldsymbol{X}+b \boldsymbol{Y}, \boldsymbol{Z}]=a[\boldsymbol{X}, \boldsymbol{Z}]+b[\boldsymbol{Y}, \boldsymbol{Z}], \quad[\boldsymbol{Z}, a \boldsymbol{X}+b \boldsymbol{Y}]=a[\boldsymbol{Z}, \boldsymbol{X}]+b[\boldsymbol{Z}, \boldsymbol{Y}] [aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y] -
自反性: ∀ X ∈ V , [ X , X ] = 0. \quad \forall \boldsymbol{X} \in \mathbb{V},[\boldsymbol{X}, \boldsymbol{X}]=\mathbf{0} . ∀X∈V,[X,X]=0.
-
雅可比等价: ∀ X , Y , Z ∈ V , [ X , [ Y , Z ] ] + [ Z , [ X , Y ] ] + [ Y , [ Z , X ] ] = 0. \quad \forall \boldsymbol{X}, \boldsymbol{Y}, \boldsymbol{Z} \in \mathbb{V},[\boldsymbol{X},[\boldsymbol{Y}, \boldsymbol{Z}]]+[\boldsymbol{Z},[\boldsymbol{X}, \boldsymbol{Y}]]+[\boldsymbol{Y},[\boldsymbol{Z}, \boldsymbol{X}]]=\mathbf{0} . ∀X,Y,Z∈V,[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0.
其中二元运算被称为李括号。作为例子,三维向量 R 3 \mathbb{R}^3 R3上定义的叉积 × \times ×是一种李括号,因此 g = ( R 3 , R , × ) \mathfrak{g}=(\mathbb{R}^3,\mathbb{R},\times) g=(R3,R,×)构成了一种李代数。
4.1.4 李代数 s o ( 3 ) \mathfrak{s o}(3) so(3)
前面提到的
ϕ
\boldsymbol{\phi}
ϕ,事实上是一种李代数。SO(3)对应的李代数是定义在
R
3
\mathbb{R}^3
R3上的向量,我们记作
ϕ
\boldsymbol{\phi}
ϕ。每个
ϕ
\boldsymbol{\phi}
ϕ都可以生成一个反对称矩阵:
Φ
=
ϕ
∧
=
[
0
−
ϕ
3
ϕ
2
ϕ
3
0
−
ϕ
1
−
ϕ
2
ϕ
1
0
]
∈
R
3
×
3
(4.11)
\boldsymbol{\Phi}=\phi^{\wedge}=\left[\begin{array}{ccc} 0 & -\phi_{3} & \phi_{2} \\ \phi_{3} & 0 & -\phi_{1} \\ -\phi_{2} & \phi_{1} & 0 \end{array}\right] \in \mathbb{R}^{3 \times 3}\tag{4.11}
Φ=ϕ∧=⎣⎡0ϕ3−ϕ2−ϕ30ϕ1ϕ2−ϕ10⎦⎤∈R3×3(4.11)
在此定义下,两个向量
ϕ
1
\boldsymbol{\phi}_1
ϕ1,
ϕ
2
\boldsymbol{\phi}_2
ϕ2的李括号为:
[
ϕ
1
,
ϕ
2
]
=
(
Φ
1
Φ
2
−
Φ
2
Φ
1
)
∨
(4.12)
\left[\boldsymbol{\phi}_{1}, \boldsymbol{\phi}_{2}\right]=\left(\boldsymbol{\Phi}_{1} \boldsymbol{\Phi}_{2}-\boldsymbol{\Phi}_{2} \boldsymbol{\Phi}_{1}\right)^{\vee}\tag{4.12}
[ϕ1,ϕ2]=(Φ1Φ2−Φ2Φ1)∨(4.12)
由于向量
ϕ
\boldsymbol{\phi}
ϕ与反对称矩阵是一一 对应的, 在不引起歧义的情况下, 就说
s
o
(
3
)
\mathfrak{s o}(3)
so(3) 的元素是三维向量或者三维反对称矩阵, 不加区别:
s
o
(
3
)
=
{
ϕ
∈
R
3
,
Φ
=
ϕ
∧
∈
R
3
×
3
}
(4.13)
\mathfrak{s o}(3)=\left\{\phi \in \mathbb{R}^{3}, \boldsymbol{\Phi}=\phi^{\wedge} \in \mathbb{R}^{3 \times 3}\right\}\tag{4.13}
so(3)={ϕ∈R3,Φ=ϕ∧∈R3×3}(4.13)
s
o
(
3
)
\mathfrak{s o}(3)
so(3)是一个由三维向量组成的集合, 每个向量对应一个反对称矩阵, 可以用于表达旋转矩阵的导数。它与
S
O
(
3
)
\mathrm{SO}(3)
SO(3) 的关系由指数映射给定:
R
=
exp
(
ϕ
∧
)
(4.14)
\boldsymbol{R}=\exp \left(\boldsymbol{\phi}^{\wedge}\right)\tag{4.14}
R=exp(ϕ∧)(4.14)
由于
ϕ
\phi
ϕ与反对称矩阵关系很紧密,在不引起歧义的情况下,就说
s
o
(
3
)
\mathfrak{s o}(3)
so(3)的元素是3维向量或者3维反对称矩阵,不加区别:
s
o
(
3
)
=
{
Φ
=
ϕ
∧
∈
R
3
×
3
∣
ϕ
∈
R
3
}
\mathfrak{s o}(3)=\left\{\Phi=\phi^{\wedge} \in \mathbb{R}^{3 \times 3} \mid \phi \in \mathbb{R}^{3}\right\}
so(3)={Φ=ϕ∧∈R3×3∣ϕ∈R3}
4.1.5 李代数 s e ( 3 ) \mathfrak{s e}(3) se(3)
对于SE(3),它也有对应的李代数
s
e
(
3
)
\mathfrak{s e}(3)
se(3)。
s
e
(
3
)
\mathfrak{s e}(3)
se(3)位于
R
6
\mathbb{R}^6
R6空间中:
s
e
(
3
)
=
{
ξ
=
[
ρ
ϕ
]
∈
R
6
,
ρ
∈
R
3
,
ϕ
∈
s
o
(
3
)
,
ξ
∧
=
[
ϕ
∧
ρ
0
T
0
]
∈
R
4
×
4
}
\mathfrak{s e}(3)=\left\{\boldsymbol{\xi}=\left[\begin{array}{l} \rho \\ \phi \end{array}\right] \in \mathbb{R}^{6}, \boldsymbol{\rho} \in \mathbb{R}^{3}, \phi \in \mathfrak{s o}(3), \boldsymbol{\xi}^{\wedge}=\left[\begin{array}{cc} \phi^{\wedge} & \rho \\ 0^{\mathrm{T}} & 0 \end{array}\right] \in \mathbb{R}^{4 \times 4}\right\}
se(3)={ξ=[ρϕ]∈R6,ρ∈R3,ϕ∈so(3),ξ∧=[ϕ∧0Tρ0]∈R4×4}
我们把每个
s
e
(
3
)
\mathfrak{s e}(3)
se(3) 元素记作
ξ
\boldsymbol{\xi}
ξ , 它是一个六维向量。前三维为平移(但含义与变换矩阵中的平移 不同, 分析见后 ), 记作
ρ
\rho
ρ ; 后三维为旋转, 记作
ϕ
\phi
ϕ , 实质上是
s
o
(
3
)
\mathfrak{s o}(3)
so(3) 元素
⊙
^{\odot}
⊙ 。同时, 我们拓展了
∧
^{\wedge}
∧ 符号的含义。在
s
e
(
3
)
\mathfrak{s e}(3)
se(3) 中, 同样使用
∧
^{\wedge}
∧ 符号, 将一个六维向量转换成四维矩阵, 但这里不再表示反对称:
ξ
∧
=
[
ϕ
∧
ρ
0
T
0
]
∈
R
4
×
4
\boldsymbol{\xi}^{\wedge}=\left[\begin{array}{ll} \phi^{\wedge} & \rho \\ \mathbf{0}^{\mathrm{T}} & 0 \end{array}\right] \in \mathbb{R}^{4 \times 4}
ξ∧=[ϕ∧0Tρ0]∈R4×4
我们仍使用
∧
^{\wedge}
∧ 和
∨
\vee
∨ 符号指代 “从向量到矩阵”和 “从矩阵到向量”的关系, 以保持和
s
o
(
3
)
\mathfrak{s o}(3)
so(3) 上 的一致性。它们依旧是一一对应的。读者可以简单地把
s
e
(
3
)
\mathfrak{s e}(3)
se(3) 理解成 “由一个平移加上一个
s
o
(
3
)
\mathfrak{s o}(3)
so(3) 元素构成的向量” ( 尽管这里的
ρ
\rho
ρ 还不直接是平移)。同样, 李代数
s
e
(
3
)
\mathfrak{s e}(3)
se(3) 也有类似于
s
o
(
3
)
\mathfrak{s o}(3)
so(3) 的李括号:
[
ξ
1
,
ξ
2
]
=
(
ξ
1
∧
ξ
2
∧
−
ξ
2
∧
ξ
1
∧
)
∨
\left[\boldsymbol{\xi}_{1}, \boldsymbol{\xi}_{2}\right]=\left(\boldsymbol{\xi}_{1}^{\wedge} \boldsymbol{\xi}_{2}^{\wedge}-\boldsymbol{\xi}_{2}^{\wedge} \boldsymbol{\xi}_{1}^{\wedge}\right)^{\vee}
[ξ1,ξ2]=(ξ1∧ξ2∧−ξ2∧ξ1∧)∨
4.2 指数与对数映射
4.2.1 SO(3)上的指数映射
首先,回忆任意矩阵的指数映射。它可以写成一个泰勒展开,但是只有在收敛的情况下才会有结果,其结果仍是一个矩阵。
exp
(
A
)
=
∑
n
=
0
∞
1
n
!
A
n
(4.18)
\exp(\mathbf{A}) = \sum\limits_{n = 0}^\infty {\frac{1}{{n!}}{ \mathbf{A}^n}}\tag{4.18}
exp(A)=n=0∑∞n!1An(4.18)
同样地,对
s
o
(
3
)
\mathfrak{so}(3)
so(3)中任意一元素
ϕ
\phi
ϕ,我们亦可按此方式定义它的指数映射:
exp
(
ϕ
∧
)
=
∑
n
=
0
∞
1
n
!
(
ϕ
∧
)
n
(4.19)
\exp(\mathbf{\phi}^\wedge) = \sum\limits_{n = 0}^\infty {\frac{1}{{n!}}{ (\mathbf{\phi}^{\wedge})^n}}\tag{4.19}
exp(ϕ∧)=n=0∑∞n!1(ϕ∧)n(4.19)
现在我们来仔细看看它的含义。由于
ϕ
\phi
ϕ是三维向量,我们可以定义它的模长和它的方向,分别记作
θ
\mathbf{\theta}
θ和
a
\mathbf{a}
a(
∣
a
∣
=
1
|\mathbf{a}|=1
∣a∣=1),那么按照上式,可以推出式(4.20),注意中间使用了上面讲到了两个反对称矩阵的性质:
反对称矩阵有一些重要的性质,重点包括以下两条:
ϕ ϕ T = ϕ ∧ ϕ ∧ + ∥ ϕ ∥ 2 I 3 × 3 \phi \phi^{T}=\phi^{\wedge} \phi^{\wedge}+\|\phi\|^{2} \mathbf{I}_{3 \times 3} ϕϕT=ϕ∧ϕ∧+∥ϕ∥2I3×3
当 ϕ \phi ϕ为单位向量时,进而有:
ϕ ∧ ϕ ∧ = [ − a 2 2 − a 3 2 a 1 a 2 a 1 a 3 a 1 a 2 − a 1 2 − a 3 2 a 2 a 3 a 1 a 3 a 2 a 3 − a 1 2 − a 2 2 ] = ϕ ϕ T − I \phi^{\wedge} \phi^{\wedge}=\left[\begin{array}{ccc} -a_{2}^{2}-a_{3}^{2} & a_{1} a_{2} & a_{1} a_{3} \\ a_{1} a_{2} & -a_{1}^{2}-a_{3}^{2} & a_{2} a_{3} \\ a_{1} a_{3} & a_{2} a_{3} & -a_{1}^{2}-a_{2}^{2} \end{array}\right]=\phi \phi^{T}-\mathbf{I} ϕ∧ϕ∧=⎣⎡−a22−a32a1a2a1a3a1a2−a12−a32a2a3a1a3a2a3−a12−a22⎦⎤=ϕϕT−I
以及
ϕ ∧ ϕ ∧ ϕ ∧ = ϕ ∧ ( ϕ ϕ T − I ) = − ϕ ∧ \phi^{\wedge} \phi^{\wedge} \phi^{\wedge}=\phi^{\wedge}(\phi\phi^T-\mathbf{I})=-\phi^{\wedge} ϕ∧ϕ∧ϕ∧=ϕ∧(ϕϕT−I)=−ϕ∧
exp ( ϕ ∧ ) = exp ( θ a ∧ ) = ∑ n = 0 ∞ 1 n ! ( θ a ∧ ) n = I + θ a ∧ + 1 2 ! θ 2 a ∧ a ∧ + 1 3 ! θ 3 a ∧ a ∧ a ∧ + 1 4 ! θ 4 ( a ∧ ) 4 + ⋯ = a a T − a ∧ a ∧ + θ a ∧ + 1 2 ! θ 2 a ∧ a ∧ − 1 3 ! θ 3 a ∧ − 1 4 ! θ 4 ( a ∧ ) 2 + ⋯ = a a T + ( θ − 1 3 ! θ 3 + 1 5 ! θ 5 − ⋯ ) ⏟ sin θ a ∧ − ( 1 − 1 2 ! θ 2 + 1 4 ! θ 4 − ⋯ ) ⏟ cos θ a ∧ a ∧ = a ∧ a ∧ + I + sin θ a ∧ − cos θ a ∧ a ∧ = ( 1 − cos θ ) a ∧ a ∧ + I + sin θ a ∧ = cos θ I + ( 1 − cos θ ) a a T + sin θ a ∧ (4.20) \begin{aligned} \exp \left(\phi^{\wedge}\right) &=\exp \left(\theta \boldsymbol{a}^{\wedge}\right)=\sum_{n=0}^{\infty} \frac{1}{n !}\left(\theta \boldsymbol{a}^{\wedge}\right)^{n} \\ &=\boldsymbol{I}+\theta \boldsymbol{a}^{\wedge}+\frac{1}{2 !} \theta^{2} \boldsymbol{a}^{\wedge} \boldsymbol{a}^{\wedge}+\frac{1}{3 !} \theta^{3} \boldsymbol{a}^{\wedge} \boldsymbol{a}^{\wedge} \boldsymbol{a}^{\wedge}+\frac{1}{4 !} \theta^{4}\left(\boldsymbol{a}^{\wedge}\right)^{4}+\cdots \\ &=\boldsymbol{a} \boldsymbol{a}^{\mathrm{T}}-\boldsymbol{a}^{\wedge} \boldsymbol{a}^{\wedge}+\theta \boldsymbol{a}^{\wedge}+\frac{1}{2 !} \theta^{2} \boldsymbol{a}^{\wedge} \boldsymbol{a}^{\wedge}-\frac{1}{3 !} \theta^{3} \boldsymbol{a}^{\wedge}-\frac{1}{4 !} \theta^{4}\left(\boldsymbol{a}^{\wedge}\right)^{2}+\cdots \\ &=\boldsymbol{a} \boldsymbol{a}^{\mathrm{T}}+\underbrace{\left(\theta-\frac{1}{3 !} \theta^{3}+\frac{1}{5 !} \theta^{5}-\cdots\right)}_{\sin \theta} \boldsymbol{a}^{\wedge}-\underbrace{\left(1-\frac{1}{2 !} \theta^{2}+\frac{1}{4 !} \theta^{4}-\cdots\right)}_{\cos \theta} \boldsymbol{a}^{\wedge} \boldsymbol{a}^{\wedge} \\ &=\boldsymbol{a}^{\wedge} \boldsymbol{a}^{\wedge}+\boldsymbol{I}+\sin \theta \boldsymbol{a}^{\wedge}-\cos \theta \boldsymbol{a}^{\wedge} \boldsymbol{a}^{\wedge} \\ &=(1-\cos \theta) \boldsymbol{a}^{\wedge} \boldsymbol{a}^{\wedge}+\boldsymbol{I}+\sin \theta \boldsymbol{a}^{\wedge} \\ &=\cos \theta \boldsymbol{I}+(1-\cos \theta) \boldsymbol{a} \boldsymbol{a}^{\mathrm{T}}+\sin \theta \boldsymbol{a}^{\wedge} \end{aligned}\tag{4.20} exp(ϕ∧)=exp(θa∧)=n=0∑∞n!1(θa∧)n=I+θa∧+2!1θ2a∧a∧+3!1θ3a∧a∧a∧+4!1θ4(a∧)4+⋯=aaT−a∧a∧+θa∧+2!1θ2a∧a∧−3!1θ3a∧−4!1θ4(a∧)2+⋯=aaT+sinθ (θ−3!1θ3+5!1θ5−⋯)a∧−cosθ (1−2!1θ2+4!1θ4−⋯)a∧a∧=a∧a∧+I+sinθa∧−cosθa∧a∧=(1−cosθ)a∧a∧+I+sinθa∧=cosθI+(1−cosθ)aaT+sinθa∧(4.20)
式(4.20)详细推导过程(实际上也是罗德里格斯公式的推导过程):
先再次观察 so(3),so(3) 中的元素可以看成矩阵,这个矩阵为反对称矩阵,我们用 Ω \Omega Ω来表示:
Ω = [ ω ] x = [ 0 − ω 3 ω 2 ω 3 0 − ω 1 − ω 2 ω 1 0 ] \Omega=[\boldsymbol{\omega}]_{x}=\left[\begin{array}{ccc} 0 & -\omega_{3} & \omega_{2} \\ \omega_{3} & 0 & -\omega_{1} \\ -\omega_{2} & \omega_{1} & 0 \end{array}\right] Ω=[ω]x=⎣⎡0ω3−ω2−ω30ω1ω2−ω10⎦⎤
这个矩阵可以看成是
E 1 = [ 0 0 0 0 0 − 1 0 1 0 ] , E 2 = [ 0 0 1 0 0 0 − 1 0 0 ] , E 3 = [ 0 − 1 0 1 0 0 0 0 0 ] E_{1}=\left[\begin{array}{ccc}0 & 0 & 0 \\ 0 & 0 & -1 \\ 0 & 1 & 0\end{array}\right], E_{2}=\left[\begin{array}{ccc}0 & 0 & 1 \\ 0 & 0 & 0 \\ -1 & 0 & 0\end{array}\right], E_{3}=\left[\begin{array}{ccc}0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0\end{array}\right] E1=⎣⎡0000010−10⎦⎤,E2=⎣⎡00−1000100⎦⎤,E3=⎣⎡010−100000⎦⎤
组合而成, Ω = ω 1 E 1 + ω 2 E 2 + ω 3 E 3 \Omega=\omega_{1} E_{1}+\omega_{2} E_{2}+\omega_{3} E_{3} Ω=ω1E1+ω2E2+ω3E3 也就是:
ω ∈ R 3 ω 1 E 1 + ω 2 E 2 + ω 3 E 3 ∈ s o ( 3 ) \begin{aligned} &\boldsymbol{\omega} \in R^{3} \\ \omega_{1} E_{1}+\omega_{2} E_{2}&+\omega_{3} E_{3} \in s o(3) \end{aligned} ω1E1+ω2E2ω∈R3+ω3E3∈so(3)
观察 ω = [ ω 1 ω 2 ω 3 ] \boldsymbol{\omega}=\left[\begin{array}{l}\omega_{1} \\ \omega_{2} \\ \omega_{3}\end{array}\right] ω=⎣⎡ω1ω2ω3⎦⎤ , 作为向量, 它的模长:
θ 2 = ω 1 2 + ω 2 2 + ω 3 2 θ 2 = [ ω 1 ω 2 ω 3 ] ⋅ [ ω 1 ω 2 ω 3 ] = ω T ω \begin{array}{c} \theta^{2}=\omega_{1}^{2}+\omega_{2}^{2}+\omega_{3}^{2} \\ \theta^{2}=\left[\begin{array}{lll} \omega_{1} & \omega_{2} & \omega_{3} \end{array}\right] \cdot\left[\begin{array}{c} \omega_{1} \\ \omega_{2} \\ \omega_{3} \end{array}\right]=\omega^{T} \boldsymbol{\omega} \end{array} θ2=ω12+ω22+ω32θ2=[ω1ω2ω3]⋅⎣⎡ω1ω2ω3⎦⎤=ωTω
计算 Ω n , n = 1 , 2 , … \Omega^{n}, n=1,2, \ldots Ωn,n=1,2,… :Ω 0 = I Ω = [ 0 − ω 3 ω 2 ω 3 0 − ω 1 − ω 2 ω 1 0 ] Ω 2 = [ 0 − ω 3 ω 2 ω 3 0 − ω 1 − ω 2 ω 1 0 ] [ 0 − ω 3 ω 2 ω 3 0 − ω 1 − ω 2 ω 1 0 ] = [ − ω 3 2 − ω 2 2 ω 1 ω 2 ω 1 ω 3 ω 2 ω 1 − ω 3 2 − ω 1 2 ω 2 ω 3 ω 3 ω 1 ω 2 ω 3 − ω 1 2 − ω 2 2 ] \begin{array}{c} \Omega^{0}=I \\ \Omega=\left[\begin{array}{ccc} 0 & -\omega_{3} & \omega_{2} \\ \omega_{3} & 0 & -\omega_{1} \\ -\omega_{2} & \omega_{1} & 0 \end{array}\right] \\ \Omega^{2}=\left[\begin{array}{ccc} 0 & -\omega_{3} & \omega_{2} \\ \omega_{3} & 0 & -\omega_{1} \\ -\omega_{2} & \omega_{1} & 0 \end{array}\right]\left[\begin{array}{ccc} 0 & -\omega_{3} & \omega_{2} \\ \omega_{3} & 0 & -\omega_{1} \\ -\omega_{2} & \omega_{1} & 0 \end{array}\right]=\left[\begin{array}{ccc} -\omega_{3}^{2}-\omega_{2}^{2} & \omega_{1} \omega_{2} & \omega_{1} \omega_{3} \\ \omega_{2} \omega_{1} & -\omega_{3}^{2}-\omega_{1}^{2} & \omega_{2} \omega_{3} \\ \omega_{3} \omega_{1} & \omega_{2} \omega_{3} & -\omega_{1}^{2}-\omega_{2}^{2} \end{array}\right] \end{array} Ω0=IΩ=⎣⎡0ω3−ω2−ω30ω1ω2−ω10⎦⎤Ω2=⎣⎡0ω3−ω2−ω30ω1ω2−ω10⎦⎤⎣⎡0ω3−ω2−ω30ω1ω2−ω10⎦⎤=⎣⎡−ω32−ω22ω2ω1ω3ω1ω1ω2−ω32−ω12ω2ω3ω1ω3ω2ω3−ω12−ω22⎦⎤
由于我们知道反对称矩阵的通用性质:
ϕ ϕ T = ϕ ∧ ϕ ∧ + ∥ ϕ ∥ 2 I 3 × 3 \phi \phi^{T}=\phi^{\wedge} \phi^{\wedge}+\|\phi\|^{2} \mathbf{I}_{3 \times 3} ϕϕT=ϕ∧ϕ∧+∥ϕ∥2I3×3
ϕ ∧ ϕ ∧ = ϕ ϕ T − ∥ ϕ ∥ 2 I 3 × 3 \phi^{\wedge} \phi^{\wedge} =\phi \phi^{T}-\|\phi\|^{2} \mathbf{I}_{3 \times 3} ϕ∧ϕ∧=ϕϕT−∥ϕ∥2I3×3
左右两边左乘一个 ϕ ∧ \phi^{\wedge} ϕ∧:
ϕ ∧ ϕ ∧ ϕ ∧ = ϕ ∧ ϕ ϕ T − ∥ ϕ ∥ 2 ϕ ∧ \phi^{\wedge}\phi^{\wedge} \phi^{\wedge} =\phi^{\wedge}\phi \phi^{T}-\|\phi\|^{2} \phi^{\wedge} ϕ∧ϕ∧ϕ∧=ϕ∧ϕϕT−∥ϕ∥2ϕ∧
由于 ϕ ∧ ϕ = 0 \phi^{\wedge}\phi=0 ϕ∧ϕ=0,因此得
ϕ ∧ ϕ ∧ ϕ ∧ = − ∥ ϕ ∥ 2 ϕ ∧ \phi^{\wedge}\phi^{\wedge} \phi^{\wedge} =-\|\phi\|^{2} \phi^{\wedge} ϕ∧ϕ∧ϕ∧=−∥ϕ∥2ϕ∧
由于有 ∣ ∣ ω ∣ ∣ 2 = ( ω 1 2 + ω 2 2 + ω 3 2 ) = θ 2 ||\boldsymbol{\omega}||^2=\left(\omega_{1}^{2}+\omega_{2}^{2}+\omega_{3}^{2}\right)=\theta^{2} ∣∣ω∣∣2=(ω12+ω22+ω32)=θ2。让 Ω \Omega Ω代入上式,所以有 Ω 3 = − θ 2 Ω \Omega^{3}=-\theta^{2} \Omega Ω3=−θ2Ω ,继续:
继续让式子左右两边左乘一个 ϕ ∧ \phi^{\wedge} ϕ∧:
ϕ ∧ ϕ ∧ ϕ ∧ ϕ ∧ = − ∥ ϕ ∥ 2 ϕ ∧ ϕ ∧ \phi^{\wedge}\phi^{\wedge}\phi^{\wedge} \phi^{\wedge} =-\|\phi\|^{2} \phi^{\wedge}\phi^{\wedge} ϕ∧ϕ∧ϕ∧ϕ∧=−∥ϕ∥2ϕ∧ϕ∧
ϕ ∧ ϕ ∧ ϕ ∧ ϕ ∧ ϕ ∧ = − ∥ ϕ ∥ 2 ϕ ∧ ϕ ∧ ϕ ∧ = ∥ ϕ ∥ 4 ϕ ∧ \phi^{\wedge}\phi^{\wedge}\phi^{\wedge}\phi^{\wedge} \phi^{\wedge} =-\|\phi\|^{2} \phi^{\wedge}\phi^{\wedge}\phi^{\wedge}=\|\phi\|^{4} \phi^{\wedge} ϕ∧ϕ∧ϕ∧ϕ∧ϕ∧=−∥ϕ∥2ϕ∧ϕ∧ϕ∧=∥ϕ∥4ϕ∧
如此类推可得到
Ω 4 = Ω Ω 3 = − θ 2 Ω 2 Ω 5 = Ω 2 Ω 3 = − Ω 2 θ 2 Ω = − θ 2 Ω 3 = θ 4 Ω ⋯ \begin{array}{c} \Omega^{4}=\Omega \Omega^{3}=-\theta^{2} \Omega^{2} \\ \Omega^{5}=\Omega^{2} \Omega^{3}=-\Omega^{2} \theta^{2} \Omega=-\theta^{2} \Omega^{3}=\theta^{4} \Omega \\ \cdots \end{array} Ω4=ΩΩ3=−θ2Ω2Ω5=Ω2Ω3=−Ω2θ2Ω=−θ2Ω3=θ4Ω⋯
所以有
θ 2 = ω T ω Ω 2 i + 1 = ( − 1 ) i θ 2 i Ω Ω 2 i + 2 = ( − 1 ) i θ 2 i Ω 2 \begin{aligned} \theta^{2} &=\boldsymbol{\omega}^{T} \boldsymbol{\omega} \\ \Omega^{2 i+1} &=(-1)^{i} \theta^{2 i} \Omega \\ \Omega^{2 i+2} &=(-1)^{i} \theta^{2 i} \Omega^{2} \end{aligned} θ2Ω2i+1Ω2i+2=ωTω=(−1)iθ2iΩ=(−1)iθ2iΩ2
展开:
exp ( Ω ) = ∑ n = 0 ∞ 1 n ! Ω n = I + ( ∑ i = 0 ∞ ( − 1 ) i θ 2 i ( 2 i + 1 ) ! ) Ω + ( ∑ i = 0 ∞ ( − 1 ) i θ 2 i ( 2 i + 2 ) ! ) Ω 2 = I + ( 1 − θ 2 3 ! + θ 4 5 ! + ⋯ ) Ω + ( 1 2 ! − θ 2 4 ! + θ 4 6 ! + ⋯ ) Ω 2 \begin{aligned} \exp (\Omega) &=\sum_{n=0}^{\infty} \frac{1}{n !} \Omega^{n} \\ &=I+\left(\sum_{i=0}^{\infty} \frac{(-1)^{i} \theta^{2 i}}{(2 i+1) !}\right) \Omega+\left(\sum_{i=0}^{\infty} \frac{(-1)^{i} \theta^{2 i}}{(2 i+2) !}\right) \Omega^{2} \\ &=I+\left(1-\frac{\theta^{2}}{3 !}+\frac{\theta^{4}}{5 !}+\cdots\right) \Omega+\left(\frac{1}{2 !}-\frac{\theta^{2}}{4 !}+\frac{\theta^{4}}{6 !}+\cdots\right) \Omega^{2} \end{aligned} exp(Ω)=n=0∑∞n!1Ωn=I+(i=0∑∞(2i+1)!(−1)iθ2i)Ω+(i=0∑∞(2i+2)!(−1)iθ2i)Ω2=I+(1−3!θ2+5!θ4+⋯)Ω+(2!1−4!θ2+6!θ4+⋯)Ω2
有欧拉公式:
sin x = x − x 3 3 ! + x 5 5 ! − x 7 7 ! + ⋯ cos x = 1 − x 2 2 ! + x 4 4 ! − x 6 6 ! + ⋯ \begin{array}{l} \sin x=x-\frac{x^{3}}{3 !}+\frac{x^{5}}{5 !}-\frac{x^{7}}{7 !}+\cdots \\ \cos x=1-\frac{x^{2}}{2 !}+\frac{x^{4}}{4 !}-\frac{x^{6}}{6 !}+\cdots \end{array} sinx=x−3!x3+5!x5−7!x7+⋯cosx=1−2!x2+4!x4−6!x6+⋯
所以:
exp ( Ω ) = I + ( sin θ θ ) Ω + ( 1 − cos θ θ 2 ) Ω 2 \exp (\Omega)=I+\left(\frac{\sin \theta}{\theta}\right) \Omega+\left(\frac{1-\cos \theta}{\theta^{2}}\right) \Omega^{2} exp(Ω)=I+(θsinθ)Ω+(θ21−cosθ)Ω2
如果我们需要更严密一点的话 expso ( 3 ) → S O ( 3 ) \operatorname{expso}(3) \rightarrow \mathrm{SO}(3) expso(3)→SO(3) :Ω ∈ s o ( 3 ) θ = − 1 2 tr ( Ω 2 ) exp ( Ω ) = { I θ ≃ 0 I + ( sin θ θ ) Ω + ( 1 − cos θ θ 2 ) Ω 2 θ ≠ 0 \begin{array}{c} \Omega \in s o(3) \\ \theta=\sqrt{-\frac{1}{2} \operatorname{tr}\left(\Omega^{2}\right)} \\ \exp (\Omega)=\left\{\begin{array}{ll} I & \theta \simeq 0 \\ I+\left(\frac{\sin \theta}{\theta}\right) \Omega+\left(\frac{1-\cos \theta}{\theta^{2}}\right) \Omega^{2} & \theta \neq 0 \end{array}\right. \end{array} Ω∈so(3)θ=−21tr(Ω2)exp(Ω)={II+(θsinθ)Ω+(θ21−cosθ)Ω2θ≃0θ=0
同样 S O ( 3 ) → s o ( 3 ) \mathrm{SO}(3) \rightarrow \mathrm{so}(3) SO(3)→so(3) ,也就是旋转矩阵到旋转向量。如果也更严密一点,首先就是我们限制旋转角 店在 [ 0 , π ] [0, \pi] [0,π] 间, 毕竟可能要用 a c o s acos acos函数和保证一对一, 否则角度加上 2 π 2 \pi 2π 计算出来的 sin cos \sin \cos sincos 总是 相等,其次就是当 θ \theta θ 足够小的时候的处理:
R ∈ S O ( 3 ) θ = arccos ( 1 2 [ tr ( R ) − 1 ] ) log ( R ) = { θ [ 0 − 1 1 1 0 − 1 − 1 1 0 ] θ ≃ 0 θ sin θ ( R − R T ) θ ≠ 0 \begin{array}{c} R \in S O(3) \\ \theta=\arccos \left(\frac{1}{2}[\operatorname{tr}(R)-1]\right) \\ \log (R)=\left\{\begin{array}{ll} \theta\left[\begin{array}{ccc} 0 & -1 & 1 \\ 1 & 0 & -1 \\ -1 & 1 & 0 \end{array}\right] \quad \theta \simeq 0 \\ \frac{\theta}{\sin \theta}\left(R-R^{T}\right) & \theta \neq 0 \end{array}\right. \end{array} R∈SO(3)θ=arccos(21[tr(R)−1])log(R)=⎩⎪⎪⎨⎪⎪⎧θ⎣⎡01−1−1011−10⎦⎤θ≃0sinθθ(R−RT)θ=0
最后,得到罗德里格斯公式
exp
(
θ
a
∧
)
=
cos
θ
I
+
(
1
−
cos
θ
)
a
a
T
+
sin
θ
a
∧
(4.22)
\exp \left(\theta \boldsymbol{a}^{\wedge}\right)=\cos \theta \boldsymbol{I}+(1-\cos \theta) \boldsymbol{a} \boldsymbol{a}^{\mathrm{T}}+\sin \theta \boldsymbol{a}^{\wedge}\tag{4.22}
exp(θa∧)=cosθI+(1−cosθ)aaT+sinθa∧(4.22)
这表明,
s
o
(
3
)
\mathfrak{s o}(3)
so(3) 实际上就是 由所谓的旋转向量组成的空间, 而指数映射即罗德里格斯公式。通过它们, 我们把
s
o
(
3
)
\mathfrak{s o}(3)
so(3) 中任意一个向量对应到了一个位于
S
O
(
3
)
\mathrm{SO}(3)
SO(3) 中的旋转矩阵。反之, 如果定义对数映射, 也能把
S
O
(
3
)
\mathrm{SO}(3)
SO(3) 中的元素对应到
s
o
(
3
)
\mathfrak{s o}(3)
so(3) 中:
ϕ
=
ln
(
R
)
∨
=
(
∑
n
=
0
∞
(
−
1
)
n
n
+
1
(
R
−
I
)
n
+
1
)
∨
(4.23)
\phi=\ln (\boldsymbol{R})^{\vee}=\left(\sum_{n=0}^{\infty} \frac{(-1)^{n}}{n+1}(\boldsymbol{R}-\boldsymbol{I})^{n+1}\right)^{\vee}\tag{4.23}
ϕ=ln(R)∨=(n=0∑∞n+1(−1)n(R−I)n+1)∨(4.23)
和指数映射医院,我们没必要直接用泰勒展开计算对数映射,只需要使用常规的旋转矩阵转旋转向量公式即可:
转角:
tr
(
R
)
=
cos
θ
tr
(
I
)
+
(
1
−
cos
θ
)
tr
(
n
n
T
)
+
sin
θ
tr
(
n
∧
)
=
3
cos
θ
+
(
1
−
cos
θ
)
=
1
+
2
cos
θ
(3.16)
\begin{aligned} \operatorname{tr}(\boldsymbol{R})=& \cos \theta \operatorname{tr}(\boldsymbol{I})+(1-\cos \theta) \operatorname{tr}\left(\boldsymbol{n} \boldsymbol{n}^{\mathrm{T}}\right)+\sin \theta \operatorname{tr}\left(\boldsymbol{n}^{\wedge}\right) \\ =& 3 \cos \theta+(1-\cos \theta) \\ =& 1+2 \cos \theta \\ \end{aligned}\tag{3.16}
tr(R)===cosθtr(I)+(1−cosθ)tr(nnT)+sinθtr(n∧)3cosθ+(1−cosθ)1+2cosθ(3.16)
θ
=
arccos
tr
(
R
)
−
1
2
(3.17)
\theta=\arccos \frac{\operatorname{tr}(\boldsymbol{R})-1}{2} \tag{3.17}
θ=arccos2tr(R)−1(3.17)
转轴:
转轴
n
\boldsymbol{n}
n是矩阵
R
\boldsymbol{R}
R特征值1对应的特征向量。
如果我们把旋转角度固定在 ± π ±\pi ±π之间,那么李群和李代数元素是一一对应的。
4.2.2 SE(3)上的指数映射
s
e
(
3
)
\mathfrak{s e}(3)
se(3)上的指数映射形式:
exp
(
ξ
∧
)
=
[
∑
n
=
0
∞
1
n
!
(
ϕ
∧
)
n
∑
n
=
0
∞
1
(
n
+
1
)
!
(
ϕ
∧
)
n
ρ
0
T
1
]
≜
[
R
J
ρ
0
T
1
]
=
T
(4.25)
\begin{aligned} \exp \left(\boldsymbol{\xi}^{\wedge}\right) &=\left[\begin{array}{cc} \sum_{n=0}^{\infty} \frac{1}{n !}\left(\phi^{\wedge}\right)^{n} & \sum_{n=0}^{\infty} \frac{1}{(n+1) !}\left(\phi^{\wedge}\right)^{n} \rho \\ 0^{\mathrm{T}} & 1 \end{array}\right] \\ & \triangleq\left[\begin{array}{cc} \boldsymbol{R} & \boldsymbol{J} \boldsymbol{\rho} \\ \mathbf{0}^{\mathrm{T}} & 1 \end{array}\right]=\boldsymbol{T} \end{aligned}\tag{4.25}
exp(ξ∧)=[∑n=0∞n!1(ϕ∧)n0T∑n=0∞(n+1)!1(ϕ∧)nρ1]≜[R0TJρ1]=T(4.25)
只要有一点耐心, 可以照着
s
o
(
3
)
\mathfrak{s o}(3)
so(3) 上的做法推导, 把
exp
\exp
exp 进行泰勒展开推导此式。令
ϕ
=
θ
a
\phi=\theta \boldsymbol{a}
ϕ=θa , 其中
a
\boldsymbol{a}
a 为单位向量, 则
∑
n
=
0
∞
1
(
n
+
1
)
!
(
ϕ
∧
)
n
=
I
+
1
2
!
θ
a
∧
+
1
3
!
θ
2
(
a
∧
)
2
+
1
4
!
θ
3
(
a
∧
)
3
+
1
5
!
θ
4
(
a
∧
)
4
⋯
=
1
θ
(
1
2
!
θ
2
−
1
4
!
θ
4
+
⋯
)
(
a
∧
)
+
1
θ
(
1
3
!
θ
3
−
1
5
θ
5
+
⋯
)
(
a
∧
)
2
+
I
=
1
θ
(
1
−
cos
θ
)
(
a
∧
)
+
θ
−
sin
θ
θ
(
a
a
T
−
I
)
+
I
=
sin
θ
θ
I
+
(
1
−
sin
θ
θ
)
a
a
T
+
1
−
cos
θ
θ
a
∧
=
def
J
(4.26)
\begin{aligned} \sum_{n=0}^{\infty} \frac{1}{(n+1) !}\left(\boldsymbol{\phi}^{\wedge}\right)^{n} &=\boldsymbol{I}+\frac{1}{2 !} \theta \boldsymbol{a}^{\wedge}+\frac{1}{3 !} \theta^{2}\left(\boldsymbol{a}^{\wedge}\right)^{2}+\frac{1}{4 !} \theta^{3}\left(\boldsymbol{a}^{\wedge}\right)^{3}+\frac{1}{5 !} \theta^{4}\left(\boldsymbol{a}^{\wedge}\right)^{4} \cdots \\ &=\frac{1}{\theta}\left(\frac{1}{2 !} \theta^{2}-\frac{1}{4 !} \theta^{4}+\cdots\right)\left(\boldsymbol{a}^{\wedge}\right)+\frac{1}{\theta}\left(\frac{1}{3 !} \theta^{3}-\frac{1}{5} \theta^{5}+\cdots\right)\left(\boldsymbol{a}^{\wedge}\right)^{2}+\boldsymbol{I} \\ &=\frac{1}{\theta}(1-\cos \theta)\left(\boldsymbol{a}^{\wedge}\right)+\frac{\theta-\sin \theta}{\theta}\left(\boldsymbol{a} \boldsymbol{a}^{\mathrm{T}}-\boldsymbol{I}\right)+\boldsymbol{I} \\ &=\frac{\sin \theta}{\theta} \boldsymbol{I}+\left(1-\frac{\sin \theta}{\theta}\right) \boldsymbol{a} \boldsymbol{a}^{\mathrm{T}}+\frac{1-\cos \theta}{\theta} \boldsymbol{a}^{\wedge} \\ &\stackrel{\text { def }}{=} \boldsymbol{J} \end{aligned}\tag{4.26}
n=0∑∞(n+1)!1(ϕ∧)n=I+2!1θa∧+3!1θ2(a∧)2+4!1θ3(a∧)3+5!1θ4(a∧)4⋯=θ1(2!1θ2−4!1θ4+⋯)(a∧)+θ1(3!1θ3−51θ5+⋯)(a∧)2+I=θ1(1−cosθ)(a∧)+θθ−sinθ(aaT−I)+I=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧= def J(4.26)
李群和李代数的定义与相互转换关系总结
4.3 李代数求导与扰动模型
4.3.1 BCH公式与近似形式
高等数学告诉我们,如果有标量
A
A
A和
B
B
B,有下式:
ln
(
exp
(
A
)
exp
(
B
)
)
=
A
+
B
\ln\left(\exp\left(A\right)\exp\left(B\right)\right)=A+B
ln(exp(A)exp(B))=A+B
但是,该式在矩阵时并不成立。两个李代数指数映射乘积的完整形式,由Baker-Campbell-Hausdorff公式(BCH公式)给出:
ln
(
exp
(
A
)
exp
(
B
)
)
=
A
+
B
+
1
2
[
A
,
B
]
+
1
12
[
A
,
[
A
,
B
]
]
−
1
12
[
B
,
[
A
,
B
]
]
+
⋯
(4.29)
\ln (\exp (\boldsymbol{A}) \exp (\boldsymbol{B}))=\boldsymbol{A}+\boldsymbol{B}+\frac{1}{2}[\boldsymbol{A}, \boldsymbol{B}]+\frac{1}{12}[\boldsymbol{A},[\boldsymbol{A}, \boldsymbol{B}]]-\frac{1}{12}[\boldsymbol{B},[\boldsymbol{A}, \boldsymbol{B}]]+\cdots\tag{4.29}
ln(exp(A)exp(B))=A+B+21[A,B]+121[A,[A,B]]−121[B,[A,B]]+⋯(4.29)
其中
[
]
[\ \ ]
[ ]为李括号。特别地,考虑
s
o
(
3
)
\mathfrak{s o}(3)
so(3)上地李代数
ln
(
exp
(
ϕ
1
∧
)
exp
(
ϕ
2
∧
)
)
∨
\ln\left(\exp\left(\phi_1^{\wedge}\right)\exp\left(\phi_2^{\wedge}\right)\right)^{\vee}
ln(exp(ϕ1∧)exp(ϕ2∧))∨,当
ϕ
1
∧
\phi_1^{\wedge}
ϕ1∧或
ϕ
2
∧
\phi_2^{\wedge}
ϕ2∧为小量时,小量二次以上的项都可以被忽略。此时,BCH拥有线性近似表达:
ln
(
exp
(
ϕ
1
∧
)
exp
(
ϕ
2
∧
)
)
∨
≈
{
J
l
(
ϕ
2
)
−
1
ϕ
1
+
ϕ
2
当
ϕ
1
为小量,
J
r
(
ϕ
1
)
−
1
ϕ
2
+
ϕ
1
当
ϕ
2
为小量.
(4.30)
\ln \left(\exp \left(\phi_{1}^{\wedge}\right) \exp \left(\phi_{2}^{\wedge}\right)\right)^{\vee} \approx\left\{\begin{array}{ll} J_{l}\left(\phi_{2}\right)^{-1} \phi_{1}+\phi_{2} & \text { 当 } \phi_{1} \text { 为小量, } \\ J_{r}\left(\phi_{1}\right)^{-1} \phi_{2}+\phi_{1} & \text { 当 } \phi_{2} \text { 为小量. } \end{array}\right.\tag{4.30}
ln(exp(ϕ1∧)exp(ϕ2∧))∨≈{Jl(ϕ2)−1ϕ1+ϕ2Jr(ϕ1)−1ϕ2+ϕ1 当 ϕ1 为小量, 当 ϕ2 为小量. (4.30)
于是,李代数在BCH近似下,分成了左乘近似和右乘近似两种。其中,左乘BCH近似雅可比
J
l
J_l
Jl为:
J
l
(
θ
)
=
J
=
sin
θ
θ
I
+
(
1
−
sin
θ
θ
)
a
a
T
+
1
−
cos
θ
θ
a
∧
(4.31)
\boldsymbol{J}_{l}(\theta)=\boldsymbol{J}=\frac{\sin \theta}{\theta} \boldsymbol{I}+\left(1-\frac{\sin \theta}{\theta}\right) \boldsymbol{a} \boldsymbol{a}^{\mathrm{T}}+\frac{1-\cos \theta}{\theta} \boldsymbol{a}^{\wedge}\tag{4.31}
Jl(θ)=J=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧(4.31)
它的逆为
J
l
(
θ
)
−
1
=
θ
2
cot
θ
2
I
+
(
1
−
θ
2
cot
θ
2
)
a
a
T
−
θ
2
a
∧
(4.32)
\boldsymbol{J}_{l}(\theta)^{-1}=\frac{\theta}{2} \cot \frac{\theta}{2} \boldsymbol{I}+\left(1-\frac{\theta}{2} \cot \frac{\theta}{2}\right) \boldsymbol{a} \boldsymbol{a}^{\mathrm{T}}-\frac{\theta}{2} \boldsymbol{a}^{\wedge}\tag{4.32}
Jl(θ)−1=2θcot2θI+(1−2θcot2θ)aaT−2θa∧(4.32)
其中
cot
(
)
\cot()
cot()为余切函数。
而右乘雅可比仅需要对自变量取负号即可:
J
r
(
ϕ
)
=
J
l
(
−
ϕ
)
(4.33)
J_{r}(\phi)=J_{l}(-\phi)\tag{4.33}
Jr(ϕ)=Jl(−ϕ)(4.33)
BCH近似的意义:假定对某个旋转
R
\boldsymbol{R}
R,对应的李代数为
ϕ
\boldsymbol{\phi}
ϕ。我们给它左乘一个微小旋转,记作
Δ
R
\Delta \boldsymbol{R}
ΔR,对应的李代数为
Δ
ϕ
\Delta \boldsymbol{\phi}
Δϕ。那么,在李群上,得到的结果就是
Δ
R
⋅
R
\Delta \boldsymbol{R}\cdot\boldsymbol{R}
ΔR⋅R,而在李代数上,根据BCH近似,为
ϕ
+
J
l
−
1
(
ϕ
)
Δ
ϕ
\phi+J_{l}^{-1}(\phi) \Delta \phi
ϕ+Jl−1(ϕ)Δϕ。合并起来,可以简单地写成:
exp
(
Δ
ϕ
∧
)
exp
(
ϕ
∧
)
=
exp
(
(
ϕ
+
J
l
−
1
(
ϕ
)
Δ
ϕ
)
∧
)
(4.34)
\exp \left(\Delta \phi^{\wedge}\right) \exp \left(\phi^{\wedge}\right)=\exp \left(\left(\phi+J_{l}^{-1}(\phi) \Delta \phi\right)^{\wedge}\right)\tag{4.34}
exp(Δϕ∧)exp(ϕ∧)=exp((ϕ+Jl−1(ϕ)Δϕ)∧)(4.34)
反之, 如果我们在李代数上进行加法, 让一个
ϕ
\phi
ϕ 加上
Δ
ϕ
\Delta \phi
Δϕ , 那么可以近似为李群上带左右雅可比的乘法(尤其需要注意左乘雅可比和右乘雅可比是不同的):
exp
(
(
ϕ
+
Δ
ϕ
)
∧
)
=
exp
(
(
J
l
Δ
ϕ
)
∧
)
exp
(
ϕ
∧
)
=
exp
(
ϕ
∧
)
exp
(
(
J
r
Δ
ϕ
)
∧
)
(4.35)
\exp \left((\phi+\Delta \phi)^{\wedge}\right)=\exp \left(\left(\boldsymbol{J}_{l} \Delta \phi\right)^{\wedge}\right) \exp \left(\boldsymbol{\phi}^{\wedge}\right)=\exp \left(\boldsymbol{\phi}^{\wedge}\right) \exp \left(\left(\boldsymbol{J}_{r} \Delta \boldsymbol{\phi}\right)^{\wedge}\right)\tag{4.35}
exp((ϕ+Δϕ)∧)=exp((JlΔϕ)∧)exp(ϕ∧)=exp(ϕ∧)exp((JrΔϕ)∧)(4.35)
这就为之后李代数上做微积分提供了理论基础。同样地, 对于
S
E
(
3
)
\mathrm{SE}(3)
SE(3) , 也有类似的BCH近似:
exp
(
Δ
ξ
∧
)
exp
(
ξ
∧
)
≈
exp
(
(
J
l
−
1
Δ
ξ
+
ξ
)
∧
)
exp
(
ξ
∧
)
exp
(
Δ
ξ
∧
)
≈
exp
(
(
J
r
−
1
Δ
ξ
+
ξ
)
∧
)
(4.36)
\begin{array}{l} \exp \left(\Delta \boldsymbol{\xi}^{\wedge}\right) \exp \left(\boldsymbol{\xi}^{\wedge}\right) \approx \exp \left(\left(\mathcal{J}_{l}^{-1} \Delta \boldsymbol{\xi}+\boldsymbol{\xi}\right)^{\wedge}\right) \\ \exp \left(\boldsymbol{\xi}^{\wedge}\right) \exp \left(\Delta \boldsymbol{\xi}^{\wedge}\right) \approx \exp \left(\left(\mathcal{J}_{r}^{-1} \Delta \boldsymbol{\xi}+\boldsymbol{\xi}\right)^{\wedge}\right) \end{array}\tag{4.36}
exp(Δξ∧)exp(ξ∧)≈exp((Jl−1Δξ+ξ)∧)exp(ξ∧)exp(Δξ∧)≈exp((Jr−1Δξ+ξ)∧)(4.36)
这里的
J
l
\mathcal{J}_{l}
Jl形式比较复杂,它是一个6X6矩阵。
4.3.2 SO(3)上的李代数求导
假设某个时刻机器人的位姿为
T
\boldsymbol{T}
T。它观察到了一个世界坐标位于
p
\boldsymbol{p}
p的点,产生了一个观测数据
z
\boldsymbol{z}
z。那么,由坐标变换关系知:
z
=
T
p
+
w
(4.38)
\boldsymbol{z}=\boldsymbol{T} \boldsymbol{p}+\boldsymbol{w}\tag{4.38}
z=Tp+w(4.38)
其中
w
\boldsymbol{w}
w 为随机噪声。由于它的存在,
z
\boldsymbol{z}
z 往往不可能精确地满足
z
=
T
p
\boldsymbol{z}=\boldsymbol{T} \boldsymbol{p}
z=Tp 的关系。所以, 我们通常会计算理想的观测与实际数据的误差:
e
=
z
−
T
p
(4.39)
\boldsymbol{e}=\boldsymbol{z}-\boldsymbol{T} \boldsymbol{p}\tag{4.39}
e=z−Tp(4.39)
假设一共有
N
N
N 个这样的路标点和观测, 于是就有
N
N
N 个上式。那么, 对机器人进行位姿估计, 相当于寻找一个最优的
T
\boldsymbol{T}
T , 使得整体误差最小化:
min
T
J
(
T
)
=
∑
i
=
1
N
∥
z
i
−
T
p
i
∥
2
2
(4.40)
\min _{\boldsymbol{T}} J(\boldsymbol{T})=\sum_{i=1}^{N}\left\|\boldsymbol{z}_{i}-\boldsymbol{T} \boldsymbol{p}_{i}\right\|_{2}^{2}\tag{4.40}
TminJ(T)=i=1∑N∥zi−Tpi∥22(4.40)
SO(3),SE(3) 上并没有良好定义的加法,它们只是群。如果我们把
T
\boldsymbol{T}
T当成一个普通矩阵来处理优化,那就必须对优化问题添加约束(一旦有约束就变得很复杂了)。而从李代数角度来说,由于李代数由向量组成,具有良好的加法运算。因此,使用李代数解决求导问题的思路分为两种:
- 用李代数表示姿态,然后对根据李代数加法来对李代数求导。
- 对李群左乘或右乘微小扰动,然后对该扰动求导,称为左扰动和右扰动模型。
4.3.3 李代数求导
首先,考虑SO(3)上的情况。假设我们对一个空间点
p
\boldsymbol{p}
p进行了旋转,得到了
R
p
\boldsymbol{Rp}
Rp。现在,要计算旋转之后点的坐标相对于旋转的导数,我们非正式地记为:
∂
(
R
p
)
∂
R
\frac{\partial(\boldsymbol{R} \boldsymbol{p})}{\partial \boldsymbol{R}}
∂R∂(Rp)
由于
S
O
(
3
)
\mathrm{SO}(3)
SO(3)没有加法, 所以该导数无法按照导数的定义进行计算。设
R
\boldsymbol{R}
R对应的李代数为
ϕ
\phi
ϕ, 我们转而计算。
∂
(
exp
(
ϕ
∧
)
p
)
∂
ϕ
\frac{\partial\left(\exp \left(\phi^{\wedge}\right) \boldsymbol{p}\right)}{\partial \phi}
∂ϕ∂(exp(ϕ∧)p)
按照导数的定义, 有
∂
(
exp
(
ϕ
∧
)
p
)
∂
ϕ
=
lim
δ
ϕ
→
0
exp
(
(
ϕ
+
δ
ϕ
)
∧
)
p
−
exp
(
ϕ
∧
)
p
δ
ϕ
=
lim
δ
ϕ
→
0
exp
(
(
J
l
δ
ϕ
)
∧
)
exp
(
ϕ
∧
)
p
−
exp
(
ϕ
∧
)
p
δ
ϕ
=
lim
δ
ϕ
→
0
(
I
+
(
J
l
δ
ϕ
)
∧
)
exp
(
ϕ
∧
)
p
−
exp
(
ϕ
∧
)
p
δ
ϕ
=
lim
δ
ϕ
→
0
(
J
l
δ
ϕ
)
∧
exp
(
ϕ
∧
)
p
δ
ϕ
=
lim
δ
ϕ
→
0
−
(
exp
(
ϕ
∧
)
p
)
∧
J
l
δ
ϕ
δ
ϕ
=
−
(
R
p
)
∧
J
l
\begin{aligned} \frac{\partial\left(\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}\right)}{\partial \boldsymbol{\phi}} &=\lim _{\delta \boldsymbol{\phi} \rightarrow 0} \frac{\exp \left((\boldsymbol{\phi}+\delta \boldsymbol{\phi})^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}}{\delta \boldsymbol{\phi}} \\ &=\lim _{\delta \boldsymbol{\phi} \rightarrow 0} \frac{\exp \left(\left(\boldsymbol{J}_{l} \delta \boldsymbol{\phi}\right)^{\wedge}\right) \exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}}{\delta \boldsymbol{\phi}} \\ &=\lim _{\delta \phi \rightarrow 0} \frac{\left(\boldsymbol{I}+\left(\boldsymbol{J}_{l} \delta \boldsymbol{\phi}\right)^{\wedge}\right) \exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}}{\delta \boldsymbol{\phi}} \\ &=\lim _{\delta \phi \rightarrow 0} \frac{\left(\boldsymbol{J}_{l} \delta \boldsymbol{\phi}\right)^{\wedge} \exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}}{\delta \boldsymbol{\phi}} \\ &=\lim _{\delta \boldsymbol{\phi} \rightarrow 0} \frac{-\left(\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}\right)^{\wedge} \boldsymbol{J}_{l} \delta \boldsymbol{\phi}}{\delta \boldsymbol{\phi}}=-(\boldsymbol{R} \boldsymbol{p})^{\wedge} \boldsymbol{J}_{l} \end{aligned}
∂ϕ∂(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
第二行地近似为BCH线性近似,第三行为泰勒展开社区高阶项后地近似(
exp
(
)
\exp()
exp()括号内的矩阵范数很小时才可以这样近似),第四行至第五行将反对称符号看作叉积,交换之后变号。于是,我们推导出了旋转后的点相对于李代数的导数:
∂
(
R
p
)
∂
R
=
−
(
R
p
)
∧
J
l
(4.41)
\frac{\partial(\boldsymbol{R} \boldsymbol{p})}{\partial \boldsymbol{R}}=-(\boldsymbol{R} \boldsymbol{p})^{\wedge} \boldsymbol{J}_{l}\tag{4.41}
∂R∂(Rp)=−(Rp)∧Jl(4.41)
不过,由于这里仍然含有形式比较复杂的
J
l
\boldsymbol{J}_{l}
Jl,我们不太希望计算它。而下面要讲的扰动模型则提供了更简单的导数计算方式。
4.3.4 扰动模型(左乘)
另一种求导方式是对
R
\boldsymbol{R}
R进行一次扰动
Δ
R
\Delta \boldsymbol{R}
ΔR , 看结果相对于扰动的变化率。这个扰动可以乘 在左边也可以乘在右边, 最后结果会有一点儿微小的差异, 我们以左扰动为例。设左扰动
Δ
R
\Delta \boldsymbol{R}
ΔR对应的李代数为
φ
∘
\varphi_{\circ}
φ∘ 然后, 对
φ
\varphi
φ求导, 即
∂
(
R
p
)
∂
φ
=
lim
φ
→
0
exp
(
φ
∧
)
exp
(
ϕ
∧
)
p
−
exp
(
ϕ
∧
)
p
φ
(4.42)
\frac{\partial(\boldsymbol{R} \boldsymbol{p})}{\partial \boldsymbol{\varphi}}=\lim _{\varphi \rightarrow 0} \frac{\exp \left(\boldsymbol{\varphi}^{\wedge}\right) \exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}}{\boldsymbol{\varphi}}\tag{4.42}
∂φ∂(Rp)=φ→0limφexp(φ∧)exp(ϕ∧)p−exp(ϕ∧)p(4.42)
该式的求导比上面更简单:
∂
(
R
p
)
∂
φ
=
lim
φ
→
0
exp
(
φ
∧
)
exp
(
ϕ
∧
)
p
−
exp
(
ϕ
∧
)
p
φ
=
lim
φ
→
0
(
I
+
φ
∧
)
exp
(
ϕ
∧
)
p
−
exp
(
ϕ
∧
)
p
φ
=
lim
φ
→
0
φ
∧
R
p
φ
=
lim
φ
→
0
−
(
R
p
)
∧
φ
φ
=
−
(
R
p
)
∧
\begin{aligned} \frac{\partial(\boldsymbol{R} \boldsymbol{p})}{\partial \boldsymbol{\varphi}} &=\lim _{\boldsymbol{\varphi} \rightarrow \mathbf{0}} \frac{\exp \left(\boldsymbol{\varphi}^{\wedge}\right) \exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}}{\boldsymbol{\varphi}} \\ &=\lim _{\boldsymbol{\varphi} \rightarrow 0} \frac{\left(\boldsymbol{I}+\boldsymbol{\varphi}^{\wedge}\right) \exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}}{\boldsymbol{\varphi}} \\ &=\lim _{\boldsymbol{\varphi} \rightarrow 0} \frac{\boldsymbol{\varphi}^{\wedge}\boldsymbol{R} p}{\boldsymbol{\varphi}}=\lim _{\boldsymbol{\varphi} \rightarrow \mathbf{0}} \frac{-(\boldsymbol{R} \boldsymbol{p})^{\wedge} \boldsymbol{\varphi}}{\boldsymbol{\varphi}}=-(\boldsymbol{R} \boldsymbol{p})^{\wedge} \end{aligned}
∂φ∂(Rp)=φ→0limφexp(φ∧)exp(ϕ∧)p−exp(ϕ∧)p=φ→0limφ(I+φ∧)exp(ϕ∧)p−exp(ϕ∧)p=φ→0limφφ∧Rp=φ→0limφ−(Rp)∧φ=−(Rp)∧
可见, 相比于直接对李代数求导, 省去了一个雅可比
J
l
\boldsymbol{J}_{l}
Jl 的计算。这使得扰动模型更为实用。 请读者务必理解这里的求导运算, 这在位姿估计中具有重要的意义。
4.3.4扩展1: 扰动模型(右乘)
右扰动模型定义:
∂
(
R
p
)
∂
φ
=
lim
φ
→
0
exp
(
ϕ
∧
)
exp
(
φ
∧
)
p
−
exp
(
ϕ
∧
)
p
φ
(4.42)
\frac{\partial(\boldsymbol{R} \boldsymbol{p})}{\partial \boldsymbol{\varphi}}=\lim _{\varphi \rightarrow 0} \frac{\exp \left(\boldsymbol{\phi}^{\wedge} \right) \exp \left(\boldsymbol{\varphi}^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}}{\boldsymbol{\varphi}}\tag{4.42}
∂φ∂(Rp)=φ→0limφexp(ϕ∧)exp(φ∧)p−exp(ϕ∧)p(4.42)
进一步推算求导
∂
(
R
p
)
∂
φ
=
lim
φ
→
0
exp
(
ϕ
∧
)
exp
(
φ
∧
)
p
−
exp
(
ϕ
∧
)
p
φ
=
lim
φ
→
0
exp
(
ϕ
∧
)
(
I
+
φ
∧
)
p
−
exp
(
ϕ
∧
)
p
φ
=
lim
φ
→
0
R
φ
∧
p
φ
=
lim
φ
→
0
−
R
p
∧
φ
φ
=
−
R
p
∧
\begin{aligned} \frac{\partial(\boldsymbol{R} \boldsymbol{p})}{\partial \boldsymbol{\varphi}} &=\lim _{\boldsymbol{\varphi} \rightarrow \mathbf{0}} \frac{\exp \left(\boldsymbol{\phi}^{\wedge} \right) \exp \left(\boldsymbol{\varphi}^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}}{\boldsymbol{\varphi}} \\ &=\lim _{\boldsymbol{\varphi} \rightarrow 0} \frac{\exp \left(\boldsymbol{\phi}^{\wedge}\right) \left(\boldsymbol{I}+\boldsymbol{\varphi}^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\phi}^{\wedge}\right) \boldsymbol{p}}{\boldsymbol{\varphi}} \\ &=\lim _{\boldsymbol{\varphi} \rightarrow 0} \frac{\boldsymbol{R} \boldsymbol{\varphi}^{\wedge}p}{\boldsymbol{\varphi}}=\lim _{\boldsymbol{\varphi} \rightarrow \mathbf{0}} \frac{-\boldsymbol{R} \boldsymbol{p}^{\wedge} \boldsymbol{\varphi}}{\boldsymbol{\varphi}}=-\boldsymbol{R} \boldsymbol{p}^{\wedge} \end{aligned}
∂φ∂(Rp)=φ→0limφexp(ϕ∧)exp(φ∧)p−exp(ϕ∧)p=φ→0limφexp(ϕ∧)(I+φ∧)p−exp(ϕ∧)p=φ→0limφRφ∧p=φ→0limφ−Rp∧φ=−Rp∧
4.3.4扩展2: 伴随
在SO(3) 和SE(3) 上,有⼀个东西称为伴随(Adjoint)。对于SO(3),有:
R
exp
(
p
∧
)
R
T
=
exp
(
(
R
p
)
∧
)
\boldsymbol{R} \exp \left(\boldsymbol{p}^{\wedge}\right) \boldsymbol{R}^{\mathrm{T}}=\exp \left((\boldsymbol{R} \boldsymbol{p})^{\wedge}\right)
Rexp(p∧)RT=exp((Rp)∧)
此时称
Ad
(
R
)
=
R
\operatorname{Ad}(\boldsymbol{R})=\boldsymbol{R}
Ad(R)=R 。
提示: 首先你需要证明 ∀ a ∈ R 3 , R a ∧ R T = ( R a ) ∧ \forall a \in \mathbb{R}^{3}, \boldsymbol{R a}^{\wedge} \boldsymbol{R}^{\mathrm{T}}=(\boldsymbol{R} \boldsymbol{a})^{\wedge} ∀a∈R3,Ra∧RT=(Ra)∧ , 页面Derivation of Adjoint for SO(3)提示了一种简洁的途径。如下:
设有任意向量
v
\boldsymbol{v}
v,与式子右边内积:
(
R
a
)
∧
v
=
(
R
a
)
×
v
=
(
R
a
)
×
(
R
R
T
v
)
=
R
(
a
×
(
R
T
v
)
)
=
R
(
a
∧
R
T
v
)
=
R
a
∧
R
T
v
\begin{aligned} (\boldsymbol{R} \boldsymbol{a})^{\wedge}\boldsymbol{v} &= (\boldsymbol{R} \boldsymbol{a})\times \boldsymbol{v}\\ &=(\boldsymbol{R} \boldsymbol{a})\times (\boldsymbol{R}\boldsymbol{R}^\boldsymbol{T}\boldsymbol{v}) \\ &=\boldsymbol{R}\left(\boldsymbol{a}\times\left(\boldsymbol{R}^\boldsymbol{T}\boldsymbol{v}\right)\right)\\ &=\boldsymbol{R}\left(\boldsymbol{a}^{\wedge}\boldsymbol{R}^\boldsymbol{T}\boldsymbol{v}\right)\\ &=\boldsymbol{R}\boldsymbol{a}^{\wedge}\boldsymbol{R}^\boldsymbol{T}\boldsymbol{v} \end{aligned}
(Ra)∧v=(Ra)×v=(Ra)×(RRTv)=R(a×(RTv))=R(a∧RTv)=Ra∧RTv
证毕,
∀
a
∈
R
3
,
R
a
∧
R
T
=
(
R
a
)
∧
\forall a \in \mathbb{R}^{3}, \boldsymbol{R a}^{\wedge} \boldsymbol{R}^{\mathrm{T}}=(\boldsymbol{R} \boldsymbol{a})^{\wedge}
∀a∈R3,Ra∧RT=(Ra)∧。
对于
S
E
(
3
)
\mathrm{SE}(3)
SE(3), 有:
T
exp
(
ξ
∧
)
T
−
1
=
exp
(
(
Ad
(
T
)
ξ
)
∧
)
\boldsymbol{T} \exp \left(\boldsymbol{\xi}^{\wedge}\right) \boldsymbol{T}^{-1}=\exp \left((\operatorname{Ad}(\boldsymbol{T}) \boldsymbol{\xi})^{\wedge}\right)
Texp(ξ∧)T−1=exp((Ad(T)ξ)∧)
其中
Ad
(
T
)
\operatorname{Ad}(\boldsymbol{T})
Ad(T)定义为:
Ad
(
T
)
=
[
R
t
∧
R
0
R
]
\operatorname{Ad}(\boldsymbol{T})=\left[\begin{array}{cc} \boldsymbol{R} & \boldsymbol{t}^{\wedge} \boldsymbol{R} \\ \mathbf{0} & \boldsymbol{R} \end{array}\right]
Ad(T)=[R0t∧RR]
这个性质将在后文的 Pose Graph 优化中用到。但是
S
E
(
3
)
\mathrm{SE}(3)
SE(3) 的证明较为复杂。
4.3.4扩展3: 扰动求导的例子
参考李代数扰动模型求导总结
例子1
∂
R
1
R
2
∂
R
1
=
I
\frac{\partial{R_1R_2}}{\partial{R_1}}=I
∂R1∂R1R2=I
求
R
1
R
2
R_1R_2
R1R2对
R
1
R_1
R1的左扰动导数:
∂
R
1
R
2
∂
R
1
=
∂
log
(
exp
(
δ
)
R
1
R
2
(
R
1
R
2
)
−
1
)
∂
δ
∣
δ
=
0
=
∂
log
(
exp
(
δ
)
R
1
R
2
R
2
−
1
R
1
−
1
)
∂
δ
∣
δ
=
0
=
∂
log
(
exp
(
δ
)
)
∂
δ
∣
δ
=
0
=
I
\begin{aligned} \frac{\partial{R_1R_2}}{\partial{R_1}}&=\frac{\partial{\log(\exp(\delta)R_1R_2(R_1R_2)^{-1})}}{\partial{\delta}}|_{\delta=0}\\ &=\frac{\partial{\log(\exp(\delta)R_1R_2R_2^{-1}R_1^{-1})}}{\partial{\delta}}|_{\delta=0}\\ &=\frac{\partial{\log(\exp(\delta))}}{\partial{\delta}}|_{\delta=0}\\ &=I \end{aligned}
∂R1∂R1R2=∂δ∂log(exp(δ)R1R2(R1R2)−1)∣δ=0=∂δ∂log(exp(δ)R1R2R2−1R1−1)∣δ=0=∂δ∂log(exp(δ))∣δ=0=I
例子2
∂
R
1
R
2
∂
R
2
=
R
1
\frac{\partial{R_1R_2}}{\partial{R_2}}=R_1
∂R2∂R1R2=R1
求
R
1
R
2
R_1R_2
R1R2对
R
2
R_2
R2的左扰动导数:
∂
R
1
R
2
∂
R
2
=
∂
log
(
R
1
exp
(
δ
)
R
2
(
R
1
R
2
)
−
1
)
∂
δ
∣
δ
=
0
=
∂
log
(
R
1
exp
(
δ
)
R
2
R
2
−
1
R
1
−
1
)
∂
δ
∣
δ
=
0
=
∂
log
(
R
1
exp
(
δ
)
R
1
−
1
)
∂
δ
∣
δ
=
0
=
∂
log
(
exp
(
R
1
δ
)
)
∂
δ
∣
δ
=
0
=
R
1
\begin{aligned} \frac{\partial{R_1R_2}}{\partial{R_2}}&=\frac{\partial{\log(R_1\exp(\delta)R_2(R_1R_2)^{-1})}}{\partial{\delta}}|_{\delta=0}\\ &=\frac{\partial{\log(R_1\exp(\delta)R_2R_2^{-1}R_1^{-1})}}{\partial{\delta}}|_{\delta=0}\\ &=\frac{\partial{\log(R_1\exp(\delta)R_1^{-1})}}{\partial{\delta}}|_{\delta=0}\\ &=\frac{\partial{\log(\exp(R_1\delta))}}{\partial{\delta}}|_{\delta=0}\\ &=R_1 \end{aligned}
∂R2∂R1R2=∂δ∂log(R1exp(δ)R2(R1R2)−1)∣δ=0=∂δ∂log(R1exp(δ)R2R2−1R1−1)∣δ=0=∂δ∂log(R1exp(δ)R1−1)∣δ=0=∂δ∂log(exp(R1δ))∣δ=0=R1
例子3
∂
R
−
1
∂
R
=
−
R
−
1
=
−
R
⊺
\frac{\partial{R^{-1}}}{\partial{R}}=-R^{-1}=-R^\intercal
∂R∂R−1=−R−1=−R⊺
求
R
−
1
R^{-1}
R−1对
R
R
R的左扰动导数:
∂
R
−
1
∂
R
=
∂
log
(
(
exp
(
δ
)
R
)
−
1
R
)
∂
δ
∣
δ
=
0
=
∂
log
(
(
R
−
1
exp
(
δ
)
R
)
−
1
)
∂
δ
∣
δ
=
0
=
∂
log
(
exp
(
R
−
1
δ
)
−
1
)
∂
δ
∣
δ
=
0
=
∂
log
(
exp
(
−
R
−
1
δ
)
)
∂
δ
∣
δ
=
0
=
−
R
−
1
=
−
R
⊺
\begin{aligned} \frac{\partial{R^{-1}}}{\partial{R}}&=\frac{\partial{\log((\exp(\delta)R)^{-1}R)}}{\partial\delta}|_{\delta=0}\\ &=\frac{\partial{\log((R^{-1}\exp(\delta)R)^{-1})}}{\partial\delta}|_{\delta=0}\\ &=\frac{\partial{\log(\exp(R^{-1}\delta)^{-1})}}{\partial\delta}|_{\delta=0}\\ &=\frac{\partial{\log(\exp(-R^{-1}\delta))}}{\partial\delta}|_{\delta=0}\\ &=-R^{-1}=-R^{\intercal} \end{aligned}
∂R∂R−1=∂δ∂log((exp(δ)R)−1R)∣δ=0=∂δ∂log((R−1exp(δ)R)−1)∣δ=0=∂δ∂log(exp(R−1δ)−1)∣δ=0=∂δ∂log(exp(−R−1δ))∣δ=0=−R−1=−R⊺
exp ( ϕ ) − 1 = exp ( − ϕ ) \exp(\phi)^{-1}=\exp(-\phi) exp(ϕ)−1=exp(−ϕ)
证明:
已知:
exp ( ϕ ) = exp ( θ ⋅ a ) = cos ( θ ) ⋅ I + ( 1 − cos ( θ ) ) a ⋅ a ⊺ + sin ( θ ) a ∧ \begin{aligned} \exp(\phi)=\exp(\theta\cdot a)=\cos(\theta)\cdot I+(1-\cos(\theta))a\cdot a^\intercal+\sin(\theta)a^\wedge \end{aligned} exp(ϕ)=exp(θ⋅a)=cos(θ)⋅I+(1−cos(θ))a⋅a⊺+sin(θ)a∧
和:
( a ∧ ) ⊺ = − a ∧ (a^\wedge)^\intercal=-a^\wedge (a∧)⊺=−a∧
则:
exp ( ϕ ) − 1 = exp ( θ ⋅ a ) ⊺ = cos ( θ ) ⋅ I ⊺ + ( 1 − cos ( θ ) ) ( a ⋅ a ⊺ ) ⊺ + sin ( θ ) ( a ∧ ) ⊺ = cos ( θ ) ⋅ I + ( 1 − cos ( θ ) ) a ⋅ a ⊺ − sin ( θ ) a ∧ exp ( − ϕ ) = exp ( − θ ⋅ a ) = cos ( − θ ) ⋅ I + ( 1 − cos ( − θ ) ) a ⋅ a ⊺ + sin ( − θ ) a ∧ = cos ( θ ) ⋅ I + ( 1 − cos ( θ ) ) a ⋅ a ⊺ − sin ( θ ) a ∧ \begin{aligned} \exp(\phi)^{-1}=\exp(\theta\cdot a)^\intercal&=\cos(\theta)\cdot I^\intercal+(1-\cos(\theta))(a\cdot a^\intercal)^\intercal+\sin(\theta)(a^\wedge)^\intercal \\ &=\cos(\theta)\cdot I+(1-\cos(\theta))a\cdot a^\intercal-\sin(\theta)a^\wedge \\ \\ \exp(-\phi)=\exp(-\theta\cdot a)&=\cos(-\theta)\cdot I+(1-\cos(-\theta))a\cdot a^\intercal+\sin(-\theta)a^\wedge \\ &=\cos(\theta)\cdot I+(1-\cos(\theta))a\cdot a^\intercal-\sin(\theta)a^\wedge \end{aligned} exp(ϕ)−1=exp(θ⋅a)⊺exp(−ϕ)=exp(−θ⋅a)=cos(θ)⋅I⊺+(1−cos(θ))(a⋅a⊺)⊺+sin(θ)(a∧)⊺=cos(θ)⋅I+(1−cos(θ))a⋅a⊺−sin(θ)a∧=cos(−θ)⋅I+(1−cos(−θ))a⋅a⊺+sin(−θ)a∧=cos(θ)⋅I+(1−cos(θ))a⋅a⊺−sin(θ)a∧
因此:
exp ( ϕ ) − 1 = exp ( − ϕ ) \exp(\phi)^{-1}=\exp(-\phi) exp(ϕ)−1=exp(−ϕ)
4.3.5 SE(3)上的扰动模型
最后, 我们给出
S
E
(
3
)
\mathrm{SE}(3)
SE(3) 上的扰动模型, 而直接李代数上的求导就不再介绍了。假设某空间点
p
p
p 经过一次变换
T
\boldsymbol{T}
T (对应李代数为
ξ
\boldsymbol{\xi}
ξ) , 得到
T
p
\boldsymbol{T} \boldsymbol{p}^{\mathbb{}}
Tp 。现在, 给
T
\boldsymbol{T}
T 左乘一个扰动
Δ
T
=
exp
(
δ
ξ
∧
)
\Delta \boldsymbol{T}=\exp \left(\delta \boldsymbol{\xi}^{\wedge}\right)
ΔT=exp(δξ∧) , 我们设扰动项的李代数为
δ
ξ
=
[
δ
ρ
,
δ
ϕ
]
T
\delta \boldsymbol{\xi}=[\delta \boldsymbol{\rho}, \delta \phi]^{\mathrm{T}}
δξ=[δρ,δϕ]T , 那么:
∂
(
T
p
)
∂
δ
ξ
=
lim
δ
ξ
→
0
exp
(
δ
ξ
∧
)
exp
(
ξ
∧
)
p
−
exp
(
ξ
∧
)
p
δ
ξ
\frac{\partial(\boldsymbol{T} \boldsymbol{p})}{\partial \delta \boldsymbol{\xi}}=\lim _{\delta \xi \rightarrow 0} \frac{\exp \left(\delta \boldsymbol{\xi}^{\wedge}\right) \exp \left(\boldsymbol{\xi}^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\xi}^{\wedge}\right) \boldsymbol{p}}{\delta \boldsymbol{\xi}}
∂δξ∂(Tp)=δξ→0limδξexp(δξ∧)exp(ξ∧)p−exp(ξ∧)p
=
lim
δ
ξ
→
0
(
I
+
δ
ξ
∧
)
exp
(
ξ
∧
)
p
−
exp
(
ξ
∧
)
p
δ
ξ
=
lim
δ
ξ
→
0
δ
ξ
∧
exp
(
ξ
∧
)
p
δ
ξ
=
lim
δ
ξ
→
0
[
δ
ϕ
∧
δ
ρ
0
T
0
]
[
R
p
+
t
1
]
δ
ξ
=
lim
δ
ξ
→
0
[
δ
ϕ
∧
(
R
p
+
t
)
+
δ
ρ
0
T
]
[
δ
ρ
,
δ
ϕ
]
T
=
[
I
−
(
R
p
+
t
)
∧
0
T
0
T
]
=
def
(
T
p
)
⊙
.
\begin{array}{l} =\lim _{\delta \xi \rightarrow 0} \frac{\left(\boldsymbol{I}+\delta \boldsymbol{\xi}^{\wedge}\right) \exp \left(\boldsymbol{\xi}^{\wedge}\right) \boldsymbol{p}-\exp \left(\boldsymbol{\xi}^{\wedge}\right) \boldsymbol{p}}{\delta \boldsymbol{\xi}} \\ =\lim _{\delta \boldsymbol{\xi} \rightarrow 0} \frac{\delta \boldsymbol{\xi}^{\wedge} \exp \left(\boldsymbol{\xi}^{\wedge}\right) \boldsymbol{p}}{\delta \boldsymbol{\xi}} \\ =\lim _{\delta \boldsymbol{\xi} \rightarrow \mathbf{0}} \frac{\left[\begin{array}{cc} \delta \boldsymbol{\phi}^{\wedge} & \delta \boldsymbol{\rho} \\ \mathbf{0}^{\mathrm{T}} & 0 \end{array}\right]\left[\begin{array}{c} \boldsymbol{R} \boldsymbol{p}+\boldsymbol{t} \\ 1 \end{array}\right]}{\delta \boldsymbol{\xi}} \\ =\lim _{\delta \boldsymbol{\xi} \rightarrow \mathbf{0}} \frac{\left[\begin{array}{c} \delta \boldsymbol{\phi}^{\wedge}(\boldsymbol{R} \boldsymbol{p}+\boldsymbol{t})+\delta \boldsymbol{\rho} \\ \mathbf{0}^{\mathrm{T}} \end{array}\right]}{[\delta \boldsymbol{\rho}, \delta \boldsymbol{\phi}]^{\mathrm{T}}}=\left[\begin{array}{cc} \boldsymbol{I} & -(\boldsymbol{R} \boldsymbol{p}+\boldsymbol{t})^{\wedge} \\ \mathbf{0}^{\mathrm{T}} & \mathbf{0}^{\mathrm{T}} \end{array}\right] \stackrel{\operatorname{def}}{=}(\boldsymbol{T} \boldsymbol{p})^{\odot} . \end{array}
=limδξ→0δξ(I+δξ∧)exp(ξ∧)p−exp(ξ∧)p=limδξ→0δξδξ∧exp(ξ∧)p=limδξ→0δξ[δϕ∧0Tδρ0][Rp+t1]=limδξ→0[δρ,δϕ]T[δϕ∧(Rp+t)+δρ0T]=[I0T−(Rp+t)∧0T]=def(Tp)⊙.
我们把最后的结果定义成一个算符
⊙
^\odot
⊙ , 它把一个齐次坐标的空间点变换成一个
4
×
6
4 \times 6
4×6 的矩 阵。此式稍微需要解释的是矩阵求导方面的顺序, 假设
a
,
b
,
x
,
y
\boldsymbol{a}, \boldsymbol{b}, \boldsymbol{x}, \boldsymbol{y}
a,b,x,y 都是列向量, 那么在我们的符号写法下, 有如下的规则:
d
[
a
b
]
d
[
x
y
]
=
(
d
[
a
,
b
]
T
d
[
x
y
]
)
T
=
[
d
a
d
x
d
b
d
x
d
a
d
y
d
b
d
y
]
T
=
[
d
a
d
x
d
a
d
y
d
b
d
x
d
b
d
y
]
\frac{\mathrm{d}\left[\begin{array}{l} a \\ b \end{array}\right]}{\mathrm{d}\left[\begin{array}{l} \boldsymbol{x} \\ \boldsymbol{y} \end{array}\right]}=\left(\begin{array}{c} \frac{\mathrm{d}[\boldsymbol{a}, \boldsymbol{b}]^{\mathrm{T}}} {\mathrm{d}\left[\begin{array}{l} \boldsymbol{x} \\ \boldsymbol{y} \end{array}\right]} \end{array}\right)^\mathrm{T}=\left[\begin{array}{cc} \frac{\mathrm{d} \boldsymbol{a}}{\mathrm{d} \boldsymbol{x}} & \frac{\mathrm{d} \boldsymbol{b}}{\mathrm{d} \boldsymbol{x}} \\ \frac{\mathrm{d} \boldsymbol{a}}{\mathrm{d} \boldsymbol{y}} & \frac{\mathrm{d} \boldsymbol{b}}{\mathrm{d} \boldsymbol{y}} \end{array}\right]^{\mathrm{T}}=\left[\begin{array}{cc} \frac{\mathrm{d} \boldsymbol{a}}{\mathrm{d} \boldsymbol{x}} & \frac{\mathrm{d} \boldsymbol{a}}{\mathrm{d} \boldsymbol{y}} \\ \frac{\mathrm{d} \boldsymbol{b}}{\mathrm{d} \boldsymbol{x}} & \frac{\mathrm{d} \boldsymbol{b}}{\mathrm{d} \boldsymbol{y}} \end{array}\right]
d[xy]d[ab]=(d[xy]d[a,b]T)T=[dxdadydadxdbdydb]T=[dxdadxdbdydadydb]
4.4 实践:Sopuhs
待续…
4.5 相似变换群与李代数
最后, 我们要提一下在单目视觉中使用的相似变换群
Sim
(
3
)
\operatorname{Sim}(3)
Sim(3), 以及对应的李代数
sim
(
3
)
\operatorname{sim}(3)
sim(3) 。如果在单目 SLAM 中使用
S
E
(
3
)
\mathrm{SE}(3)
SE(3)表示位姿, 那么由于尺度不确定性与尺度漂移,整个SLAM过程中的尺度会发生变化, 这在
S
E
(
3
)
\mathrm{SE}(3)
SE(3)中末能体现出来。 因此, 在单目情况下我们一般会显式地把尺度因子表达出来。用数学语言来说, 对于位于空间的点
p
\boldsymbol{p}
p , 在相机坐标系下要经过一个相似变换, 而非欧氏变换:
p
′
=
[
s
R
t
0
T
1
]
p
=
s
R
p
+
t
\boldsymbol{p}^{\prime}=\left[\begin{array}{cc} s \boldsymbol{R} & t \\ 0^{\mathrm{T}} & 1 \end{array}\right] \boldsymbol{p}=s \boldsymbol{R} \boldsymbol{p}+\boldsymbol{t}
p′=[sR0Tt1]p=sRp+t
在相似变换中, 我们把尺度
s
s
s表达出来了。它同时作用在
p
\boldsymbol{p}
p的 3 个坐标之上, 对
p
\boldsymbol{p}
p进行了一次缩 放。与
S
O
(
3
)
\mathrm{SO}(3)
SO(3) 、
S
E
(
3
)
\mathrm{SE}(3)
SE(3)相似, 相似变换也对矩阵乘法构成群, 称为相似变换群
Sim
(
3
)
\operatorname{Sim}(3)
Sim(3) :
Sim
(
3
)
=
{
S
=
[
s
R
t
0
T
1
]
∈
R
4
×
4
}
\operatorname{Sim}(3)=\left\{S=\left[\begin{array}{cc} s \boldsymbol{R} & t \\ \mathbf{0}^{\mathrm{T}} & 1 \end{array}\right] \in \mathbb{R}^{4 \times 4}\right\}
Sim(3)={S=[sR0Tt1]∈R4×4}
同样地,
Sim
(
3
)
\operatorname{Sim}(3)
Sim(3)也有对应的李代数、指数映射、对数映射等。李代数
sim
(
3
)
\operatorname{sim}(3)
sim(3)元素是一个 7 维 向量
ζ
\zeta
ζ。它的前6维与
s
e
(
3
)
\mathfrak{s e}(3)
se(3)相同, 最后多了一项
σ
。
\sigma_{\text {。 }}
σ。
sim
(
3
)
=
{
ζ
∣
ζ
=
[
ρ
ϕ
σ
]
∈
R
7
,
ζ
∧
=
[
σ
I
+
ϕ
∧
ρ
0
T
0
]
∈
R
4
×
4
}
\operatorname{sim}(3)=\left\{\boldsymbol{\zeta} \mid \boldsymbol{\zeta}=\left[\begin{array}{l} \rho \\ \phi \\ \sigma \end{array}\right] \in \mathbb{R}^{7}, \boldsymbol{\zeta}^{\wedge}=\left[\begin{array}{cc} \sigma I+\phi^{\wedge} & \rho \\ \mathbf{0}^{\mathrm{T}} & 0 \end{array}\right] \in \mathbb{R}^{4 \times 4}\right\}
sim(3)=⎩⎨⎧ζ∣ζ=⎣⎡ρϕσ⎦⎤∈R7,ζ∧=[σI+ϕ∧0Tρ0]∈R4×4⎭⎬⎫
它比
s
e
(
3
)
\mathfrak{s e}(3)
se(3)多了一项
σ
∘
\sigma_{\circ}
σ∘关联
Sim
(
3
)
\operatorname{Sim}(3)
Sim(3)和
sim
(
3
)
\operatorname{sim}(3)
sim(3)的仍是指数映射和对数映射。指数映射为
exp
(
ζ
∧
)
=
[
e
σ
exp
(
ϕ
∧
)
J
s
ρ
0
T
1
]
\exp \left(\boldsymbol{\zeta}^{\wedge}\right)=\left[\begin{array}{cc} \mathrm{e}^{\sigma} \exp \left(\boldsymbol{\phi}^{\wedge}\right) & \boldsymbol{J}_{s} \rho \\ \boldsymbol{0}^{\mathrm{T}} & 1 \end{array}\right]
exp(ζ∧)=[eσexp(ϕ∧)0TJsρ1]
其中,
J
s
\boldsymbol{J}_{s}
Js的形式为
J
s
=
e
σ
−
1
σ
I
+
σ
e
σ
sin
θ
+
(
1
−
e
σ
cos
θ
)
θ
σ
2
+
θ
2
a
∧
+
(
e
σ
−
1
σ
−
(
e
σ
cos
θ
−
1
)
σ
+
(
e
σ
sin
θ
)
θ
σ
2
+
θ
2
)
a
∧
a
∧
\begin{aligned} J_{s}=& \frac{\mathrm{e}^{\sigma}-1}{\sigma} \boldsymbol{I}+\frac{\sigma \mathrm{e}^{\sigma} \sin \theta+\left(1-\mathrm{e}^{\sigma} \cos \theta\right) \theta}{\sigma^{2}+\theta^{2}} \boldsymbol{a}^{\wedge} \\ &+\left(\frac{\mathrm{e}^{\sigma}-1}{\sigma}-\frac{\left(\mathrm{e}^{\sigma} \cos \theta-1\right) \sigma+\left(\mathrm{e}^{\sigma} \sin \theta\right) \theta}{\sigma^{2}+\theta^{2}}\right) \boldsymbol{a}^{\wedge} \boldsymbol{a}^{\wedge} \end{aligned}
Js=σeσ−1I+σ2+θ2σeσsinθ+(1−eσcosθ)θa∧+(σeσ−1−σ2+θ2(eσcosθ−1)σ+(eσsinθ)θ)a∧a∧
通过指数映射, 我们能够找到李代数与李群的关系。对于李代数
ζ
\boldsymbol{\zeta}
ζ , 它与李群的对应关系为
s
=
e
σ
,
R
=
exp
(
ϕ
∧
)
,
t
=
J
s
ρ
s=\mathrm{e}^{\sigma}, \boldsymbol{R}=\exp \left(\boldsymbol{\phi}^{\wedge}\right), \boldsymbol{t}=\boldsymbol{J}_{s} \boldsymbol{\rho}
s=eσ,R=exp(ϕ∧),t=Jsρ
旋转部分和
S
O
(
3
)
\mathrm{SO}(3)
SO(3) 是一致的。平移部分,在
s
e
(
3
)
\mathfrak{s e}(3)
se(3)中需要乘一个雅可比
J
\mathcal{J}
J , 而相似变换的雅 可比更复杂。对于尺度因子, 可以看到李群中的
s
s
s即为李代数中
σ
\sigma
σ 的指数函数。
Sim
(
3
)
\operatorname{Sim}(3)
Sim(3) 的
B
C
H
\mathrm{BCH}
BCH 近似与
S
E
(
3
)
\mathrm{SE}(3)
SE(3)是类似的。我们可以讨论一个点
p
\boldsymbol{p}
p经过相似变换
S
p
\boldsymbol{S} \boldsymbol{p}
Sp后, 相对于
S
S
S的导数。同样地,存在微分模型和扰动模型两种方式, 而扰动模型较为简单。我们省略推导 过程,直接给出扰动模型的结果。设给予
S
p
S \boldsymbol{p}
Sp左侧一个小扰动
exp
(
ζ
∧
)
\exp \left(\boldsymbol{\zeta}^{\wedge}\right)
exp(ζ∧) , 并求
S
p
\boldsymbol{S p}
Sp 对于扰动的导 数。因为
S
p
S p
Sp 是 4 维的齐次坐标,
ζ
\zeta
ζ 是 7 维向量, 所以该导数应该是
4
×
7
4 \times 7
4×7 的雅可比。方便起见, 记
S
p
S \boldsymbol{p}
Sp 的前 3 维组成向量为
q
\boldsymbol{q}
q , 那么:
∂
S
p
∂
ζ
=
[
I
−
q
∧
q
0
T
0
T
0
]
\frac{\partial \boldsymbol{S p}}{\partial \boldsymbol{\zeta}}=\left[\begin{array}{ccc} \boldsymbol{I} & -\boldsymbol{q}^{\wedge} & \boldsymbol{q} \\ \mathbf{0}^{\mathrm{T}} & \mathbf{0}^{\mathrm{T}} & 0 \end{array}\right]
∂ζ∂Sp=[I0T−q∧0Tq0]