说明:转发请注明作者和出处;以下文章内容为精简版,详细版以pdf格式的幻灯片形式呈现,请见链接:视觉SLAM_06_指数与对数映射.pdf
0.目录
1.SO(3)上的指数映射
任意矩阵的指数映射可以写成一个泰勒展开,但是只有在收敛的情况下才会有结果,其结果仍是一个矩阵:
e
A
=
∑
n
=
0
∞
1
n
!
A
n
(1)
e^{\boldsymbol A} = \sum_{n=0}^{\infty} \frac{1}{n!} \boldsymbol{A} ^ n \tag{1}
eA=n=0∑∞n!1An(1) 同样地,对
s
o
(
3
)
\mathfrak{so}(3)
so(3)中的任意元素
ϕ
\boldsymbol \phi
ϕ,也可以按此方式定义其指数映射:
e
ϕ
^
=
∑
n
=
0
∞
1
n
!
(
ϕ
^
)
n
(2)
e^{\boldsymbol \phi \hat{\,} ^{}} = \sum_{n=0}^{\infty} \frac{1}{n!} (\boldsymbol \phi \hat{\,} ^{} ) ^ n \tag{2}
eϕ^=n=0∑∞n!1(ϕ^)n(2)但此定义无法直接计算,下面推导一种计算指数映射的简便方法。
由于
ϕ
\boldsymbol \phi
ϕ是三维向量,定义它的模长和方向分别为
θ
\theta
θ和
a
\boldsymbol a
a,于是有
ϕ
=
θ
a
\boldsymbol \phi = \theta \boldsymbol a
ϕ=θa,其中,
∥
a
∥
=
1
\| \boldsymbol a \| = 1
∥a∥=1。
对于
a
^
\boldsymbol a \hat{\,} ^ {}
a^有以下两条性质:
a
^
a
^
=
[
−
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
]
(3)
\boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} = \begin{bmatrix} -a^2_2 - a^2_3 & a_1 a_2 & a_1 a_3 \\ a_1 a_2 & -a^2_1 - a^2_3 & a_2 a_3 \\ a_1 a_3 & a_2 a_3 & -a^2_1 - a^2_2 \end{bmatrix} \tag{3}
a^a^=⎣⎡−a22−a32a1a2a1a3a1a2−a12−a32a2a3a1a3a2a3−a12−a22⎦⎤(3)
a
^
a
^
a
^
=
a
^
(
a
a
T
−
I
)
=
−
a
^
(4)
\boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} = \boldsymbol a \hat{\,} ^ {} (\boldsymbol a \boldsymbol a ^T - \boldsymbol I) = - \boldsymbol a \hat{\,} ^ {} \tag{4}
a^a^a^=a^(aaT−I)=−a^(4)这两个式子提供了处理
a
^
\boldsymbol a \hat{\,} ^{}
a^高阶项的方法。指数映射可以写成:
e
ϕ
^
=
e
θ
a
^
=
∑
n
=
0
∞
1
n
!
(
θ
a
^
)
n
=
I
+
θ
a
^
+
1
2
!
θ
2
a
^
a
^
+
1
3
!
θ
3
a
^
a
^
a
^
+
1
4
!
(
a
^
)
4
+
.
.
.
=
a
a
T
−
a
^
a
^
+
θ
a
^
+
1
2
!
θ
a
^
a
^
−
1
3
!
θ
3
a
^
−
1
4
!
θ
4
(
a
^
)
2
+
.
.
.
=
a
a
T
+
(
θ
−
1
3
!
θ
3
+
1
5
!
θ
5
−
.
.
.
)
a
^
−
(
1
−
1
2
!
θ
2
+
1
4
!
−
.
.
.
)
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
^
\begin{aligned} e^{\boldsymbol \phi \hat{\,} ^{}} &= e^{\theta \boldsymbol a \hat{\,} ^{}} = \sum_{n=0}^{\infty} \frac{1}{n!} (\theta \boldsymbol a \hat{\,} ^{}) ^ n \\ &= \boldsymbol I + \theta \boldsymbol a \hat{\,} ^ {} + \frac{1}{2!} \theta^2 \boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} + \frac{1}{3!} \theta^3 \boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} + \frac{1}{4!} (\boldsymbol a \hat{\,} ^ {})^4 + ... \\ &= \boldsymbol a \boldsymbol a ^T - \boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} + \theta \boldsymbol a \hat{\,} ^ {} + \frac{1}{2!} \theta \boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} - \frac{1}{3!} \theta^3 \boldsymbol a \hat{\,} ^ {} - \frac{1}{4!} \theta^4 (\boldsymbol a \hat{\,} ^ {})^2 + ... \\ &= \boldsymbol a \boldsymbol a ^T + (\theta - \frac{1}{3!} \theta^3 + \frac{1}{5!} \theta^5 - ...) \boldsymbol a \hat{\,} ^ {} - (1 - \frac{1}{2!} \theta^2 + \frac{1}{4!} - ...) \boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} \\ &= \boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} + \boldsymbol I + \sin \theta \boldsymbol a \hat{\,} ^ {} - \cos \theta \boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} \\ &= (1 - \cos \theta) \boldsymbol a \hat{\,} ^ {} \boldsymbol a \hat{\,} ^ {} + \boldsymbol I + \sin \theta \boldsymbol a \hat{\,} ^ {} \\ &= \cos \theta \boldsymbol I + (1 - \cos \theta) \boldsymbol a \boldsymbol a ^T + \sin \theta \boldsymbol a \hat{\,} ^ {} \end{aligned}
eϕ^=eθa^=n=0∑∞n!1(θa^)n=I+θa^+2!1θ2a^a^+3!1θ3a^a^a^+4!1(a^)4+...=aaT−a^a^+θa^+2!1θa^a^−3!1θ3a^−4!1θ4(a^)2+...=aaT+(θ−3!1θ3+5!1θ5−...)a^−(1−2!1θ2+4!1−...)a^a^=a^a^+I+sinθa^−cosθa^a^=(1−cosθ)a^a^+I+sinθa^=cosθI+(1−cosθ)aaT+sinθa^ 即:
e
θ
a
^
=
cos
θ
I
+
(
1
−
cos
θ
)
a
a
T
+
sin
θ
a
^
(5)
\begin{aligned} e^{\theta \boldsymbol a \hat{\,} ^{}} = \cos \theta \boldsymbol I + (1 - \cos \theta) \boldsymbol a \boldsymbol a ^T + \sin \theta \boldsymbol a \hat{\,} ^ {} \end{aligned} \tag{5}
eθa^=cosθI+(1−cosθ)aaT+sinθa^(5)
s
o
(
3
)
\mathfrak{so}(3)
so(3)实际上就是由所谓的旋转向量组成的空间,通过指数映射,可以把
s
o
(
3
)
\mathfrak{so}(3)
so(3)中任意一个向量对应到了一个位于SO(3)中的旋转矩阵。反之,也能把SO(3)中的元素对应到
s
o
(
3
)
\mathfrak{so}(3)
so(3)中:
ϕ
=
ln
(
R
)
∨
=
(
∑
n
=
0
∞
(
−
1
)
n
n
+
1
(
R
−
I
)
n
+
1
)
∨
(6)
\boldsymbol \phi = \ln (\boldsymbol R)^{\vee} = \left(\sum_{n=0}^{\infty} \frac{(-1)^n}{n+1} (\boldsymbol R - \boldsymbol I)^{n + 1} \right)^{\vee} \tag{6}
ϕ=ln(R)∨=(n=0∑∞n+1(−1)n(R−I)n+1)∨(6)
2.SE(3)上的指数映射
s
e
(
3
)
\mathfrak{se}(3)
se(3)上的指数映射形式如下:
e
ξ
^
=
[
∑
n
=
0
∞
1
n
!
(
ϕ
^
)
n
∑
n
=
0
∞
1
(
n
+
1
)
!
(
ϕ
^
)
n
ρ
0
T
1
]
=
Δ
[
R
J
ρ
0
T
1
]
=
T
(7)
\begin{aligned} e^{\boldsymbol \xi \hat{\,} ^ {}} &= \begin{bmatrix} \sum_{n=0}^{\infty} \frac{1}{n!} \left( \boldsymbol \phi \hat{\,}^{} \right)^n & \sum_{n=0}^{\infty} \frac{1}{(n+1)!}(\boldsymbol \phi \hat{\,}^{})^n \boldsymbol \rho \\ \boldsymbol 0^T & 1 \end{bmatrix} \\ &\overset{\Delta}{=} \begin{bmatrix} \boldsymbol R & \boldsymbol {J\rho} \\ \boldsymbol 0^T & 1 \end{bmatrix} = \boldsymbol T \end{aligned} \tag{7}
eξ^=[∑n=0∞n!1(ϕ^)n0T∑n=0∞(n+1)!1(ϕ^)nρ1]=Δ[R0TJρ1]=T(7)
令
ϕ
=
θ
a
\boldsymbol \phi = \theta \boldsymbol a
ϕ=θa,其中
a
\boldsymbol a
a为单位向量,则:
J
=
∑
n
=
0
∞
1
(
n
+
1
)
!
(
ϕ
^
)
n
=
sin
θ
θ
I
+
(
1
−
sin
θ
θ
)
a
a
T
+
1
−
cos
θ
θ
a
^
(8)
\boldsymbol J = \sum_{n=0}^{\infty} \frac{1}{(n+1)!} (\boldsymbol \phi \hat{\,} ^{})^n = \frac{\sin \theta}{\theta} \boldsymbol I + \left(1- \frac{\sin \theta}{\theta}\right) \boldsymbol a \boldsymbol a^T + \frac{1-\cos \theta}{\theta} \boldsymbol a \hat{\,}^{} \tag{8}
J=n=0∑∞(n+1)!1(ϕ^)n=θsinθI+(1−θsinθ)aaT+θ1−cosθa^(8)
李群李代数的对应关系如图1-1所示:
3.参考文献
- 高翔等. 视觉SLAM十四讲:从理论到实践第二版. 北京:电子工业出版社,2019.8.