说明:转发请注明作者和出处;以下文章内容为精简版,详细版以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!1?An(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??a32?a1?a2?a1?a3??a1?a2??a12??a32?a2?a3??a1?a3?a2?a3??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?]=Δ[R0T?Jρ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所示:
图1-1 SO(3),SE(3), so(3), se(3)对应关系(摘自参考文献)
3.参考文献
- 高翔等. 视觉SLAM十四讲:从理论到实践第二版. 北京:电子工业出版社,2019.8.
|