视觉SLAM14精讲
视觉SLAM14精讲——李群与李代数2.1
简介
本章介绍前一章提到的旋转、平移、变换等对象的一般数学规律,即李群与李代数。这样做的目的之一是将旋转扩展到最小二乘法当中,并在位姿优化求解的过程中保持旋转的数学性质。这样就能在噪声纷繁复杂的传感器世界中求解当下最优位姿的解。
本章所涉及到的数学基础,源于离散数学。该门课程据个人所知只有计算机和数学专业开设。但是具体涉及不深,只需要了解群论的基本概念即可。所以本章可以说是全书中最为抽象难懂的部分。对本章的内容不要求完全熟练记忆,因为本章仅为后文提供一些理论基础,做了解即可。
群和李群
作者所提到的谐音“丰俭由你”,个人感觉不是很好记忆。推荐口诀“封结妖逆”,首先是因为其中三个字没有变,其次是比较中二,比较好记忆。
如果某个集合与运算满足“封结妖逆”的性质,就是一个群。如果这个群连续/光滑,则该群是李群。本章提到的特殊正交群SO(3)是李群中的一种。
特殊正交群
S
O
(
3
)
=
{
R
∈
R
3
×
3
∣
RR
t
=
I
,
d
e
t
(
R
=
1
)
}
\begin{equation} SO(3) = \left\{ \textbf{R} \in \mathbb{R}^{3 \times 3} | \textbf{RR}^t=\textbf{I}, det(\textbf{R}=1) \right\} \end{equation}
SO(3)={R∈R3×3∣RRt=I,det(R=1)}
我们来看这个定义。首先,R是一种3x3实数矩阵, 它满足1、正交, 2、行列式等于1
,对乘法封闭,对加法不封闭。只要有矩阵满足上述规则,那么该矩阵就是一个旋转矩阵,且属于特殊正交群。这些性质用于位姿求解过程中,隐式的约束条件。例如在使用Ceres求解位姿时,不需要显式列出上述条件进行验证或约束。
R = np.array([[ 0.5866089, -0.4492353, 0.6738529],
[0.4492353, 0.8728027, 0.1907959],
[-0.6738529, 0.1907959, 0.7138062]])
print(R.dot(R))
np.linalg.det(R)
这里要看仔细,浮点数不会刚好输出整数结果,只要相对目标数误差极小即可。
特殊正交群对乘法封闭,加法不封闭的性质意味着,如果将两个矩阵相加,则结果不能保证仍然是一个特殊正交群的元素。这样会引出一个非常严重的问题,特殊正交群无法求导。根据求导的定义:
f
′
(
x
0
)
=
lim
δ
x
→
0
f
(
x
+
Δ
x
)
−
f
(
x
)
Δ
x
\begin{equation} f'(x_0) = \lim_{\delta x \rightarrow 0}{\frac{f(x+\Delta x)-f(x)}{\Delta x}} \end{equation}
f′(x0)=δx→0limΔxf(x+Δx)−f(x)
首先特殊正交群就不能满足减法运算法则,甚至连函数连续都不能保证。然而在最小二乘法中,需要求解反向梯度来不断的更新算法,来逼近我们要求的最小误差阈值来实现位姿求解。这样一来就无法利用特殊正交群进行运算。
李代数
如果想让加法变成乘法运算,直观的方式就是将变量指数/对数化,考过研的同学都知道哈哈。书中求得的
ϕ
\phi
ϕ就是一个对SO(3)进行指数/对数映射的因子,因此我们将
ϕ
\phi
ϕ叫做旋转矩阵R对应的李代数。
ϕ
\phi
ϕ反映了旋转矩阵局部的导数关系,反映为当旋转矩阵左乘
ϕ
∧
(
t
)
\phi ^{\wedge}(t)
ϕ∧(t)后等价于进行了一次求导,自变量一般为时间t。这里补充一下书中公式(4.9)的一个证明过程:
R
′
=
ϕ
0
∧
R
d
R
d
t
=
ϕ
0
∧
R
∫
1
R
d
R
=
∫
ϕ
0
∧
d
t
l
n
R
+
C
1
=
ϕ
0
∧
t
+
C
2
l
e
t
C
=
C
1
+
C
2
R
=
e
ϕ
0
∧
t
+
C
w
h
e
n
R
(
0
)
=
I
R
=
e
ϕ
0
∧
t
\begin{align} R' &= \phi_0^{\wedge} R \\ \frac{dR}{dt} &= \phi_0^{\wedge} R \\ \int \frac{1}{R} dR & = \int \phi_0^{\wedge} dt \\ lnR +C_1 &= \phi_0^{\wedge} t + C_2 \\ let\ C &= C_1 + C_2 \\ R &= e^{\phi_0^{\wedge} t +C} \\ when\ R(0) &= I \\ R &= e^{\phi_0^{\wedge} t} \end{align}
R′dtdR∫R1dRlnR+C1let CRwhen R(0)R=ϕ0∧R=ϕ0∧R=∫ϕ0∧dt=ϕ0∧t+C2=C1+C2=eϕ0∧t+C=I=eϕ0∧t