[视觉SLAM十四讲]学习笔记6-李代数求导与扰动模型[左乘]
1 误差优化引出李代数求导问题
在SLAM的误差优化问题中,我们需要用到李代数求导。例如,我们需要估计一个相机的位置和姿态,该位姿是由 S O ( 3 ) SO(3) SO(3)上的旋转矩阵或者 S E ( 3 ) SE(3) SE(3)上的变换矩阵描述的。我们可以设某个时刻机器人的的位姿为 T \bm{T} T。他观察到了一个世界坐标位于 p \bm{p} p的点,产生了一个观测数据 z \bm{z} z。由坐标变换关系可知: z = T p + w (1.1) \bm{z}=\bm{Tp}+\bm{w}\tag{1.1} z=Tp+w(1.1)这里 w \bm{w} w为随机噪声,由于噪声的存在,观测数据 z \bm{z} z一般不可能精确的满足 z = T p \bm{z}=\bm{Tp} z=Tp的关系。所以我们需要设置一个准确的观测与实际数据的误差 e \bm{e} e: e = z − T p (1.2) \bm{e}=\bm{z}-\bm{Tp}\tag{1.2} e=z−Tp(1.2)我们可以假设共有 N N N个这样的路标点和观测,那么就会有 N N N个上述的关系式。对机器人进行位姿估计,等价于寻找一个最优的 T \bm{T} T,使整体误差最小,即满足下面的式子: min T J ( T ) = ∑ i = 1 N ∥ z i − T p i ∥ 2 2 (1.3) \min\limits_{\bm{T}}J(\bm{T})=\sum^{N}_{i=1}\Vert z_i-\bm{Tp}_i\Vert^2_2\tag{1.3} TminJ(T)=i=1∑N∥zi−Tpi∥22(1.3)若想求解此问题,我们需要计算目标函数 J J J关于变换矩阵 T \bm{T} T的导数。我们会经常构建与位姿有关的函数,然后讨论该函数关于位姿的导数,以调整当前的估计值。不过, S O ( 3 ) , S E ( 3 ) SO(3),SE(3) SO(3),SE(3)上没有合适定义的加法,他们只是群。若我们把变换矩阵 T \bm{T} T当成一个普通矩阵来处理优化, 就必须对它加以约束。不过从李代数的角度来讲,由于李代数是由向量组成,有良好的加法运算,因此可以使用李代数解决求导问题,并且有两种思路如下:
- 用李代数表示姿态,然后根据李代数加法对李代数求导。
- 对李群左乘或右乘微小扰动,然后对该扰动求导,这被称为左扰动和右扰动模型。
这时候,解决方法就分为第一种"李代数的求导模型"和第二种"扰动模型"。
在介绍求导之前,我们先介绍一下我们在求导过程中需要用到的BCH公式与近似公式
2 BCH公式与近似公式
2.1 BCH公式
上节我们说到,误差优化问题可以通过李代数求导解决。我们已经清楚了
S
O
(
3
)
SO(3)
SO(3)和
S
E
(
3
)
SE(3)
SE(3)上李群和李代数的关系,但是当我们在
S
O
(
3
)
SO(3)
SO(3)中完成两个矩阵乘法时,李代数中
s
o
(
3
)
\mathfrak{so}(3)
so(3)上会发生什么改变,反之,当
s
o
(
3
)
\mathfrak{so}(3)
so(3)上做两个李代数的加法时,
S
O
(
3
)
SO(3)
SO(3)上是否对应着两个矩阵的乘积?若成立,则形式如下:
exp
(
ϕ
1
∧
)
exp
(
ϕ
2
∧
)
=
exp
(
(
ϕ
1
+
ϕ
2
)
∧
)
.
(2.1)
\exp(\bm{\phi}_1^{\land})\exp(\bm{\phi}_2^{\land})=\exp((\bm{\phi}_1+\bm{\phi}_2)^{\land}).\tag{2.1}
exp(ϕ1∧)exp(ϕ2∧)=exp((ϕ1+ϕ2)∧).(2.1)若
ϕ
1
,
ϕ
2
\bm{\phi}_1,\bm{\phi}_2
ϕ1,ϕ2为标量,显然结果成立;但我们计算的是矩阵的指数函数,而不是标量的指数。换一个说法,我们在研究下面的式子是否成立:
ln
(
exp
(
A
)
exp
(
B
)
)
=
A
+
B
?
(2.2)
\ln(\exp(\bm{A})\exp(\bm{B}))=\bm{A}+\bm{B}\quad?\tag{2.2}
ln(exp(A)exp(B))=A+B?(2.2)显然,上述关系是在矩阵时并不成立。两个李代数指数映射乘积的完整形式,由
B
a
k
e
r
–
C
a
m
p
b
e
l
l
–
H
a
u
s
d
o
r
f
f
\bm{Baker–Campbell–Hausdorff}
Baker–Campbell–Hausdorff公式(BCH公式)给出。维基百科给出的形式如下:
数学中
e
X
e
Y
=
e
Z
(2.3)
e^Xe^Y=e^Z\tag{2.3}
eXeY=eZ(2.3)李群李代数中,
Z
=
X
+
Y
+
1
2
[
X
,
Y
]
+
1
12
[
X
,
[
X
,
Y
]
]
−
1
12
[
Y
,
[
X
,
Y
]
]
+
⋯
(2.4)
Z=X+Y+\frac{1}{2}[X,Y]+\frac{1}{12}[X,[X,Y]]-\frac{1}{12}[Y,[X,Y]]+\cdots\tag{2.4}
Z=X+Y+21[X,Y]+121[X,[X,Y]]−121[Y,[X,Y]]+⋯(2.4)本书中的形式为
ln
(
exp
(
A
)
exp
(
B
)
)
=
A
+
B
+
1
2
[
A
,
B
]
+
1
12
[
A
,
[
A
,
B
]
]
−
1
12
[
B
,
[
A
,
B
]
]
+
⋯
(2.5)
\ln(\exp(A)\exp(B))=A+B+\frac{1}{2}[A,B]+\frac{1}{12}[A,[A,B]]-\frac{1}{12}[B,[A,B]]+\cdots\tag{2.5}
ln(exp(A)exp(B))=A+B+21[A,B]+121[A,[A,B]]−121[B,[A,B]]+⋯(2.5)这里的[ ]为李括号。BCH公式的形式告诉我们,当处理两个矩阵指数之积时,它们会产生一些由李括号组成的余项。
2.2 BCH线性近似表达
当我们考虑
S
O
(
3
)
SO(3)
SO(3)上的李代数
ln
(
exp
(
ϕ
1
∧
)
exp
(
ϕ
2
∧
)
)
∨
\ln(\exp(\bm{\phi}_1^{\land})\exp(\bm{\phi}_2^{\land}))^{\vee}
ln(exp(ϕ1∧)exp(ϕ2∧))∨,当
ϕ
1
\bm{\phi}_1
ϕ1或
ϕ
2
\bm{\phi}_2
ϕ2为微小量时,微小量二次以上的项都可以被忽略。此时,BCH有线性近似表达形式如下:
ln
(
exp
(
ϕ
1
∧
)
exp
(
ϕ
2
∧
)
)
∨
≈
{
J
l
(
ϕ
2
)
−
1
ϕ
1
+
ϕ
2
当
ϕ
1
为微小量
J
r
(
ϕ
1
)
−
1
ϕ
2
+
ϕ
1
当
ϕ
2
为微小量
(2.6)
\ln(\exp(\bm{\phi}_1^{\land})\exp(\bm{\phi}_2^{\land}))^{\vee}\approx\begin{cases}\bm{J}_l(\bm{\phi}_2)^{-1}\bm{\phi}_1+\bm{\phi}_2 \quad 当\bm{\phi}_1为微小量 \\ \bm{J}_r(\bm{\phi}_1)^{-1}\bm{\phi}_2+\bm{\phi}_1 \quad 当\bm{\phi}_2为微小量\end{cases}\tag{2.6}
ln(exp(ϕ1∧)exp(ϕ2∧))∨≈{Jl(ϕ2)−1ϕ1+ϕ2当ϕ1为微小量Jr(ϕ1)−1ϕ2+ϕ1当ϕ2为微小量(2.6)对于上述关系式,针对第一种情况,我们可以这样理解,当对一个旋转矩阵
R
2
\bm{R}_2
R2(李代数为
ϕ
2
\bm{\phi}_2
ϕ2)左乘一个微小旋转矩阵
R
1
\bm{R}_1
R1(李代数为
ϕ
1
\bm{\phi}_1
ϕ1)时,可以近似的看作,在原有的李代数
ϕ
2
\bm{\phi}_2
ϕ2基础上加上了一项
J
l
(
ϕ
2
)
−
1
ϕ
1
\bm{J}_l(\bm{\phi}_2)^{-1}\bm{\phi}_1
Jl(ϕ2)−1ϕ1。同理,第二种情况的近似描述了右乘一个微小位移的情况。这时候的李代数在BCH近似下,分成了左乘近似和右乘近似两种,使用时需分清是左乘模型还是右乘模型。
SLAM十四讲以左乘为例。这里左乘BCH近似雅可比
J
l
\bm{J}_l
Jl实际上是李群与李代数基础及指数/对数映射中的式(3.15):
J
l
=
J
=
s
i
n
θ
θ
I
+
(
1
−
s
i
n
θ
θ
)
a
a
T
+
1
−
c
o
s
θ
θ
a
∧
(2.7)
\bm{J}_l=\bm{J=}\frac{sin\theta}{\theta}\bm{I}+(1-\frac{sin\theta}{\theta})\bm{aa}^T+\frac{1-cos\theta}{\theta}\bm{a}^{\land}\tag{2.7}
Jl=J=θsinθI+(1−θsinθ)aaT+θ1−cosθa∧(2.7)取逆为:
J
l
−
1
=
θ
2
c
o
t
θ
2
I
+
(
1
−
θ
2
c
o
t
θ
2
)
a
a
T
−
θ
2
a
∧
.
(2.8)
\bm{J}^{-1}_{l}=\frac{\theta}{2}cot\frac{\theta}{2}\bm{I}+\Bigg(1-\frac{\theta}{2}cot\frac{\theta}{2}\Bigg)\bm{aa}^T-\frac{\theta}{2}\bm{a}^{\land}.\tag{2.8}
Jl−1=2θcot2θI+(1−2θcot2θ)aaT−2θa∧.(2.8)右乘模型的雅可比仅需要对自变量取负号即可:
J
r
(
ϕ
)
=
J
l
(
−
ϕ
)
.
(2.9)
\bm{J}_r(\bm{\phi})=\bm{J}_l(\bm{-\phi}).\tag{2.9}
Jr(ϕ)=Jl(−ϕ).(2.9)针对这样的形式,我们就可以谈论李群乘法与李代数加法的关系了。
2.3 BCH近似意义
这里我们再次重新叙述一下BCH近似的意义。我们假设某个旋转
R
\bm{R}
R,相应的李代数为
ϕ
\bm{\phi}
ϕ。我们对他左乘一个微小旋转,记作
Δ
R
⋅
R
\Delta\bm{R}\cdot\bm{R}
ΔR⋅R,在李代数上,根据BCH近似,为
J
l
(
ϕ
)
−
1
Δ
ϕ
+
ϕ
\bm{J}_l(\bm{\phi})^{-1}\bm{\Delta\phi}+\bm{\phi}
Jl(ϕ)−1Δϕ+ϕ。完整形式如下:
exp
(
Δ
ϕ
∧
)
exp
(
ϕ
∧
)
=
exp
(
(
J
l
(
ϕ
)
−
1
Δ
ϕ
+
ϕ
)
∧
)
.
(2.10)
\exp(\Delta\bm{\phi}^{\land})\exp(\bm{\phi}^{\land})=\exp((\bm{J}_l(\bm{\phi})^{-1}\bm{\Delta\phi}+\bm{\phi})^{\land}).\tag{2.10}
exp(Δϕ∧)exp(ϕ∧)=exp((Jl(ϕ)−1Δϕ+ϕ)∧).(2.10)反之,我们在李代数上进行加法,让
ϕ
\bm{\phi}
ϕ加上
Δ
ϕ
\Delta\bm{\phi}
Δϕ,那么可以近似为利群上带左右雅可比的乘法:
exp
(
(
ϕ
+
Δ
ϕ
)
∧
)
=
exp
(
(
J
l
(
ϕ
)
Δ
ϕ
)
∧
)
exp
(
ϕ
∧
)
=
exp
(
ϕ
∧
)
exp
(
(
J
r
(
ϕ
)
Δ
ϕ
)
∧
)
.
(2.11)
\exp((\bm{\phi}+\Delta\bm{\phi})^{\land})=\exp((\bm{J}_l(\bm{\phi})\Delta\bm{\phi})^{\land})\exp(\bm{\phi}^{\land})=\exp(\bm{\phi}^{\land})\exp((\bm{J}_r(\bm{\phi})\Delta\bm{\phi})^{\land}).\tag{2.11}
exp((ϕ+Δϕ)∧)=exp((Jl(ϕ)Δϕ)∧)exp(ϕ∧)=exp(ϕ∧)exp((Jr(ϕ)Δϕ)∧).(2.11)这里做一下简单的推导 令
Δ
Φ
=
J
l
(
ϕ
)
−
1
Δ
ϕ
,
Φ
=
ϕ
\Delta\Phi=\bm{J}_l(\bm{\phi})^{-1}\bm{\Delta\phi},\Phi=\bm{\phi}
ΔΦ=Jl(ϕ)−1Δϕ,Φ=ϕ,这里
Δ
ϕ
=
J
l
(
ϕ
)
Δ
Φ
\Delta\bm{\phi}=\bm{J}_l(\bm{\phi})\Delta\Phi
Δϕ=Jl(ϕ)ΔΦ,可以得到:
exp
(
(
Φ
+
Δ
Φ
)
∧
)
=
exp
(
(
J
l
(
ϕ
)
Δ
Φ
)
∧
)
exp
(
Φ
∧
)
.
(2.12)
\exp((\Phi+\Delta\Phi)^{\land})=\exp((\bm{J}_l(\bm{\phi})\Delta\Phi)^{\land})\exp(\Phi^{\land}).\tag{2.12}
exp((Φ+ΔΦ)∧)=exp((Jl(ϕ)ΔΦ)∧)exp(Φ∧).(2.12)
exp
(
(
ϕ
+
Δ
ϕ
)
∧
)
=
exp
(
(
J
l
(
ϕ
)
Δ
ϕ
)
∧
)
exp
(
ϕ
∧
)
=
exp
(
ϕ
∧
)
exp
(
(
J
r
(
ϕ
)
Δ
ϕ
)
∧
)
.
(2.13)
\exp((\bm{\phi}+\Delta\bm{\phi})^{\land})=\exp((\bm{J}_l(\bm{\phi})\Delta\bm{\phi})^{\land})\exp(\bm{\phi}^{\land})=\exp(\bm{\phi}^{\land})\exp((\bm{J}_r(\bm{\phi})\Delta\bm{\phi})^{\land}).\tag{2.13}
exp((ϕ+Δϕ)∧)=exp((Jl(ϕ)Δϕ)∧)exp(ϕ∧)=exp(ϕ∧)exp((Jr(ϕ)Δϕ)∧).(2.13)上述等式后两项的变形参考式()和指对数性质这样的形式为之后在李代数上作微积分提供了理论基础。同样,对于
S
E
(
3
)
SE(3)
SE(3),也有类似的BCH近似,形式入下:
{
exp
(
Δ
ξ
∧
)
exp
(
ξ
∧
)
≈
exp
(
(
J
l
(
ξ
)
−
1
Δ
ξ
+
ξ
)
∧
)
exp
(
ξ
∧
)
exp
(
Δ
ξ
∧
)
≈
exp
(
(
J
r
(
ξ
)
−
1
Δ
ξ
+
ξ
)
∧
)
.
(2.14)
\begin{cases}\exp(\Delta\bm{\xi}^{\land})\exp(\bm{\xi}^{\land})\approx\exp((\bm{\mathcal{J}}_l(\bm{\xi})^{-1}\Delta\bm{\xi}+\bm{\xi})^{\land}) \\ \exp(\bm{\xi}^{\land})\exp(\Delta\bm{\xi}^{\land})\approx\exp((\bm{\mathcal{J}}_r(\bm{\xi})^{-1}\Delta\bm{\xi}+\bm{\xi})^{\land})\end{cases}.\tag{2.14}
{exp(Δξ∧)exp(ξ∧)≈exp((Jl(ξ)−1Δξ+ξ)∧)exp(ξ∧)exp(Δξ∧)≈exp((Jr(ξ)−1Δξ+ξ)∧).(2.14)这里
J
l
\bm{\mathcal{J}}_l
Jl形式较为复杂,是一个
6
×
6
6 \times 6
6×6的矩阵。
同理,我们在李代数上进行加法,让
ξ
\bm{\xi}
ξ加上
Δ
ξ
\Delta\bm{\xi}
Δξ,那么可以近似为利群上带左右雅可比的乘法:
exp
(
(
ξ
+
Δ
ξ
)
∧
)
=
exp
(
(
J
l
(
ξ
)
Δ
ξ
)
∧
)
exp
(
ξ
∧
)
=
exp
(
ξ
∧
)
exp
(
(
J
r
(
ξ
)
Δ
ξ
)
∧
)
.
(2.15)
\exp((\bm{\xi}+\Delta\bm{\xi})^{\land})=\exp((\bm{J}_l(\bm{\xi})\Delta\bm{\xi})^{\land})\exp(\bm{\xi}^{\land})=\exp(\bm{\xi}^{\land})\exp((\bm{J}_r(\bm{\xi})\Delta\bm{\xi})^{\land}).\tag{2.15}
exp((ξ+Δξ)∧)=exp((Jl(ξ)Δξ)∧)exp(ξ∧)=exp(ξ∧)exp((Jr(ξ)Δξ)∧).(2.15)接下来我们将讨论并对比李代数求导和李导数扰动模型求导[左乘]两种方法的异同。
3 李代数求导(SO(3)为例)
以 S O ( 3 ) SO(3) SO(3)上的情况为例,我们假设对一个空间点 p \bm{p} p进行了旋转,得到了 R p \bm{Rp} Rp,接下来我们将计算旋转之后的坐标相对于旋转的导数,我们非正规的记为: ∂ ( R p ) ∂ R . (3.1) \frac{\partial(\bm{Rp})}{\partial\bm{R}}.\tag{3.1} ∂R∂(Rp).(3.1)这里只是记作一个记号,并不是按照矩阵微分来定义的导数。因为 S O ( 3 ) SO(3) SO(3)没有加法,因此不能按照导数的定义进行计算。现设 R \bm{R} R对应的李代数为 ϕ \bm{\phi} ϕ,我们从而计算: ∂ ( exp ( ϕ ∧ ) p ) ∂ ϕ . (3.2) \frac{\partial(\exp(\bm{\phi}^{\land})\bm{p})}{\partial\bm{\phi}}.\tag{3.2} ∂ϕ∂(exp(ϕ∧)p).(3.2)
这里严格来说,在矩阵微分中,智能求行向量关于列向量的导数,所得的结果为一个矩阵。SLAM十四讲中写成了列向量对列向量的导数,这里可以先认为对分子进行转置,在对最后结果进行转置。这样可以让计算过程和计算结果变得简洁,因为不这样做的话,每一行的分子都需要加上转置符号。在这样的意义下,我们可以认为 d ( A x ) / d x = A \rm{d}(\bm{A}x)/\rm{d}x=\bm{A} d(Ax)/dx=A。
按照导数定义,我们有 ∂ ( exp ( ϕ ∧ ) p ) ∂ ϕ = lim δ ϕ → 0 exp ( ( ϕ + δ ϕ ) ∧ ) p − exp ( ϕ ∧ p ) δ ϕ = lim δ ϕ → 0 exp ( ( J l δ ϕ ) ∧ ) exp ( ϕ ∧ ) p − exp ( ϕ ∧ p ) δ ϕ 这里用了式 ( 2.13 ) 的结果 = lim δ ϕ → 0 ( I + ( J l δ ϕ ) ∧ ) exp ( ϕ ∧ ) p − exp ( ϕ ∧ p ) δ ϕ exp ( ( J l δ ϕ ) ∧ ) 泰勒展开,舍去高阶项 = lim δ ϕ → 0 ( J l δ ϕ ) ∧ ) exp ( ϕ ∧ ) p δ ϕ = lim δ ϕ → 0 − ( exp ( ϕ ∧ ) p ) J l δ ϕ δ ϕ 上一步到这步用了 a ∧ b ⋅ c = a × b ⋅ c = − b ⋅ c × a = − ( R p ) ∧ J l . (3.3) \begin{aligned}\frac{\partial(\exp(\bm{\phi}^{\land})\bm{p})}{\partial\bm{\phi}}&=\lim\limits_{\delta\bm{\phi \to 0}}\frac{\exp((\bm{\phi}+\delta\bm{\phi})^{\land})\bm{p}-\exp(\bm{\phi}^{\land}\bm{p})}{\delta\bm{\phi}} \\&=\lim\limits_{\delta\bm{\phi \to 0}}\frac{\exp((\bm{J}_l\delta\bm{\phi})^{\land})\exp(\bm{\phi}^{\land})\bm{p} -\exp(\bm{\phi}^{\land}\bm{p})}{\delta\bm{\phi}} \quad 这里用了式(2.13)的结果 \\ &=\lim\limits_{\delta\bm{\phi \to 0}}\frac{(\bm{I}+(\bm{J}_l\delta\bm{\phi})^{\land})\exp(\bm{\phi}^{\land})\bm{p} -\exp(\bm{\phi}^{\land}\bm{p})}{\delta\bm{\phi}}\quad \exp((\bm{J}_l\delta\bm{\phi})^{\land})泰勒展开,舍去高阶项 \\&=\lim\limits_{\delta\bm{\phi \to 0}}\frac{(\bm{J}_l\delta\bm{\phi})^{\land})\exp(\bm{\phi}^{\land})\bm{p}}{\delta\bm{\phi}} \\ &=\lim\limits_{\delta\bm{\phi \to 0}}\frac{-(\exp(\bm{\phi}^{\land})\bm{p})\bm{J}_l\delta\bm{\phi}}{\delta\bm{\phi}} \quad 上一步到这步用了\bm{a}^{\land}\bm{b\cdot c}=\bm{a}\times \bm{b \cdot c}=-\bm{b \cdot c}\times \bm{a} \\ &=-(\bm{Rp})^{\land}\bm{J}_l.\end{aligned}\tag{3.3} ∂ϕ∂(exp(ϕ∧)p)=δϕ→0limδϕexp((ϕ+δϕ)∧)p−exp(ϕ∧p)=δϕ→0limδϕexp((Jlδϕ)∧)exp(ϕ∧)p−exp(ϕ∧p)这里用了式(2.13)的结果=δϕ→0limδϕ(I+(Jlδϕ)∧)exp(ϕ∧)p−exp(ϕ∧p)exp((Jlδϕ)∧)泰勒展开,舍去高阶项=δϕ→0limδϕ(Jlδϕ)∧)exp(ϕ∧)p=δϕ→0limδϕ−(exp(ϕ∧)p)Jlδϕ上一步到这步用了a∧b⋅c=a×b⋅c=−b⋅c×a=−(Rp)∧Jl.(3.3)根据上式可以看出,结果中仍然含有形式比较复杂的 J l \bm{J}_l Jl,我们不希望去计算它,因此我们下面介绍的扰动模型求导即为更简单的导数计算方式。
4 扰动模型求导(左乘)
4.1 SO(3)上的扰动模型求导
这里介绍的求导方式是对旋转矩阵 R \bm{R} R进行一次扰动 Δ R \Delta\bm{R} ΔR,然后观察结果想对于扰动的变化率。这个扰动可以左乘也可以右乘,不过最后结果会有微小的差异,这里我们以左扰动(左乘)为例。假设左扰动 Δ R \Delta\bm{R} ΔR的李代数为 φ \bm{\varphi} φ。对 φ \bm{\varphi} φ求导,得: ∂ ( 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 ) ∧ (3.4) \begin{aligned}\frac{\partial(\bm{Rp})}{\partial\bm{\varphi}}&=\lim_{\bm{\varphi \to 0}}\frac{\exp(\bm{\varphi}^{\land})\exp(\bm{\phi}^{\land})\bm{p}-\exp(\bm{\phi}^{\land})\bm{p}}{\bm{\varphi}} \\ &=\lim_{\bm{\varphi \to 0}}\frac{(\bm{I}+\bm{\varphi}^{\land})\exp(\bm{\phi}^{\land})\bm{p}-\exp(\bm{\phi}^{\land})\bm{p}}{\bm{\varphi}} \\ &=\lim_{\bm{\varphi \to 0}}\frac{\bm{\varphi}^{\land}\bm{Rp}}{\bm{\varphi}}=\lim_{\bm{\varphi \to 0}}\frac{-(\bm{Rp})^{\land}\bm{\varphi}}{\bm{\varphi}}=-(\bm{Rp})^{\land}\end{aligned}\tag{3.4} ∂φ∂(Rp)=φ→0limφexp(φ∧)exp(ϕ∧)p−exp(ϕ∧)p=φ→0limφ(I+φ∧)exp(ϕ∧)p−exp(ϕ∧)p=φ→0limφφ∧Rp=φ→0limφ−(Rp)∧φ=−(Rp)∧(3.4)明显可以看出,相对于李代数求导,对扰动模型求导可以省去一个雅可比 J l \bm{J}_l Jl的计算,这就是扰动模型的实用性。
4.2 SE(3)上的扰动模型求导
由于李代数上求导的复杂性,这里直接给出
S
E
(
3
)
SE(3)
SE(3)的扰动模型,我们假设某空间点
p
\bm{p}
p经过一次变换
T
\bm{T}
T(李代数为
ξ
\bm{\xi}
ξ),得到
T
p
\bm{Tp}
Tp(这里
p
\bm{p}
p为齐次坐标)。现在,让
T
\bm{T}
T左乘一个扰动
Δ
T
=
exp
(
δ
ξ
∧
)
\Delta\bm{T}=\exp(\delta\bm{\xi}^{\land})
ΔT=exp(δξ∧),这里我们设扰动项的李代数为
δ
ξ
=
[
δ
ρ
,
δ
ϕ
]
T
\delta\bm{\xi}=[\delta\bm{\rho},\delta\bm{\phi}]^T
δξ=[δρ,δϕ]T,根据导数定义有:
∂
(
T
p
)
∂
δ
ξ
=
lim
δ
ξ
→
0
exp
(
δ
ξ
∧
)
exp
(
ξ
∧
)
p
−
exp
(
ξ
∧
)
p
δ
ξ
=
lim
δ
ξ
→
0
(
I
+
δ
ξ
∧
)
exp
(
ξ
∧
)
p
−
exp
(
ξ
∧
)
p
δ
ξ
=
lim
δ
ξ
→
0
δ
ξ
∧
exp
(
ξ
∧
)
p
δ
ξ
=
lim
δ
ξ
→
0
[
δ
ϕ
∧
δ
ρ
0
T
0
]
[
R
t
0
T
1
]
p
δ
ξ
这里
exp
(
ξ
∧
)
=
T
=
lim
δ
ξ
→
0
[
δ
ϕ
∧
δ
ρ
0
T
0
]
[
R
p
+
t
1
]
δ
ξ
=
lim
δ
ξ
→
0
[
δ
ϕ
∧
(
R
p
+
t
)
+
δ
ρ
0
T
]
[
δ
ξ
,
δ
ρ
]
T
=
lim
δ
ξ
→
0
[
−
(
R
p
+
t
)
∧
δ
ϕ
+
δ
ρ
0
T
]
[
δ
ξ
,
δ
ρ
]
T
上一步到这步用了
a
∧
b
⋅
c
=
a
×
b
⋅
c
=
−
b
⋅
c
×
a
=
lim
δ
ξ
→
0
[
I
−
(
R
p
+
t
)
∧
0
T
0
T
]
[
δ
ρ
δ
ϕ
]
[
δ
ξ
,
δ
ρ
]
T
=
lim
δ
ξ
→
0
[
I
−
(
R
p
+
t
)
∧
0
T
0
T
]
[
δ
ρ
δ
ϕ
]
[
δ
ρ
δ
ϕ
]
=
[
I
−
(
R
p
+
t
)
∧
0
T
0
T
]
=
d
e
f
(
T
p
)
⊙
(3.5)
\begin{aligned}\frac{\partial(\bm{Tp})}{\partial\delta\bm{\xi}}&=\lim\limits_{\delta\bm{\xi} \to 0}\frac{\exp(\delta\bm{\xi}^{\land})\exp(\bm{\xi}^{\land})\bm{p}-\exp(\bm{\xi}^{\land})\bm{p}}{\delta\bm{\xi}} \\ &=\lim\limits_{\delta\bm{\xi} \to 0}\frac{(\bm{I}+\delta\bm{\xi}^{\land})\exp(\bm{\xi}^{\land})\bm{p}-\exp(\bm{\xi}^{\land})\bm{p}}{\delta\bm{\xi}} \\ &=\lim\limits_{\delta\bm{\xi} \to 0}\frac{\delta\bm{\xi}^{\land}\exp(\bm{\xi}^{\land})\bm{p}}{\delta\bm{\xi}} \\ &=\lim\limits_{\delta\bm{\xi} \to 0}\frac{\begin{bmatrix}\delta\bm{\phi}^{\land}&\delta{\bm{\rho}} \\ \bm{0}^T&0\end{bmatrix}\begin{bmatrix}\bm{R}&{\bm{t}} \\ \bm{0}^T&1\end{bmatrix}\bm{p}}{\delta\bm{\xi}} \quad 这里\exp(\bm{\xi}^{\land})=\bm{T} \\ &=\lim\limits_{\delta\bm{\xi} \to 0}\frac{\begin{bmatrix}\delta\bm{\phi}^{\land}&\delta{\bm{\rho}} \\ \bm{0}^T&0\end{bmatrix}\begin{bmatrix}\bm{Rp}+{\bm{t}} \\ 1\end{bmatrix}}{\delta\bm{\xi}} \\ &=\lim\limits_{\delta\bm{\xi} \to 0}\frac{\begin{bmatrix}\delta\bm{\phi}^{\land}(\bm{Rp}+\bm{t})+\delta\bm{\rho} \\ \bm{0}^T\end{bmatrix}}{[\delta\bm{\xi},\delta\bm{\rho}]^T} \\ &=\lim\limits_{\delta\bm{\xi} \to 0}\frac{\begin{bmatrix}-(\bm{Rp}+\bm{t})^{\land}\delta\bm{\phi}+\delta\bm{\rho} \\ \bm{0}^T\end{bmatrix}}{[\delta\bm{\xi},\delta\bm{\rho}]^T} \quad 上一步到这步用了\bm{a}^{\land}\bm{b\cdot c}=\bm{a}\times \bm{b \cdot c}=-\bm{b \cdot c}\times \bm{a} \\ &=\lim\limits_{\delta\bm{\xi} \to 0}\frac{\begin{bmatrix}\bm{I}&-(\bm{Rp}+\bm{t})^{\land} \\ \bm{0}^T&\bm{0}^T\end{bmatrix}\begin{bmatrix}\delta\bm{\rho} \\ \delta\bm{\phi}\end{bmatrix}}{[\delta\bm{\xi},\delta\bm{\rho}]^T}=\lim\limits_{\delta\bm{\xi} \to 0}\frac{\begin{bmatrix}\bm{I}&-(\bm{Rp}+\bm{t})^{\land} \\ \bm{0}^T&\bm{0}^T\end{bmatrix}\begin{bmatrix}\delta\bm{\rho} \\ \delta\bm{\phi}\end{bmatrix}}{\begin{bmatrix}\delta\bm{\rho} \\ \delta\bm{\phi}\end{bmatrix}} \\ &=\begin{bmatrix}\bm{I}&-(\bm{Rp}+\bm{t})^{\land} \\ \bm{0}^T&\bm{0}^T\end{bmatrix}\xlongequal{\rm{def}}\big(\bm{Tp}\big)^{\odot}\end{aligned}\tag{3.5}
∂δξ∂(Tp)=δξ→0limδξexp(δξ∧)exp(ξ∧)p−exp(ξ∧)p=δξ→0limδξ(I+δξ∧)exp(ξ∧)p−exp(ξ∧)p=δξ→0limδξδξ∧exp(ξ∧)p=δξ→0limδξ[δϕ∧0Tδρ0][R0Tt1]p这里exp(ξ∧)=T=δξ→0limδξ[δϕ∧0Tδρ0][Rp+t1]=δξ→0lim[δξ,δρ]T[δϕ∧(Rp+t)+δρ0T]=δξ→0lim[δξ,δρ]T[−(Rp+t)∧δϕ+δρ0T]上一步到这步用了a∧b⋅c=a×b⋅c=−b⋅c×a=δξ→0lim[δξ,δρ]T[I0T−(Rp+t)∧0T][δρδϕ]=δξ→0lim[δρδϕ][I0T−(Rp+t)∧0T][δρδϕ]=[I0T−(Rp+t)∧0T]def(Tp)⊙(3.5)在这里,我们把最后的结果定义成一个算符
⊙
^{\odot}
⊙,他把一个齐次坐标的空间点变换成一个
4
×
6
4 \times 6
4×6的矩阵。
附:
最后我们在这里简单解释一下上述定义矩阵求导的顺序,假设
a
,
b
,
x
,
y
\bm{a},\bm{b},\bm{x},\bm{y}
a,b,x,y都是列向量,在我们上述符号的写法下,有如下规则:
d
[
a
b
]
d
[
x
y
]
=
(
d
[
a
b
]
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{d\begin{bmatrix}\bm{a} \\ \bm{b}\end{bmatrix}}{d\begin{bmatrix}\bm{x} \\ \bm{y}\end{bmatrix}}=\begin{pmatrix}\dfrac{d\begin{bmatrix}\bm{a}&\bm{b}\end{bmatrix}}{d\begin{bmatrix}\bm{x} \\ \bm{y}\end{bmatrix}}\end{pmatrix}^T=\begin{bmatrix}\cfrac{d\bm{a}}{d\bm{x}}&\cfrac{d\bm{b}}{d\bm{x}} \\ \cfrac{d\bm{a}}{d\bm{y}}&\cfrac{d\bm{b}}{d\bm{y}}\end{bmatrix}^T=\begin{bmatrix}\cfrac{d\bm{a}}{d\bm{x}}&\cfrac{d\bm{a}}{d\bm{y}} \\ \cfrac{d\bm{b}}{d\bm{x}}&\cfrac{d\bm{b}}{d\bm{y}}\end{bmatrix}
d[xy]d[ab]=
d[xy]d[ab]
T=
dxdadydadxdbdydb
T=
dxdadxdbdydadydb
参考资料:
维基百科-BCH公式
视觉SLAM十四讲:从理论到实践(第2版)(ISBN:9787121369421)
旋量代数与李群、李代数 戴建生(ISBN:9787040318456)