VSLAM学习记录-求导:李群与李代数

本文介绍了在优化问题中处理旋转矩阵求导的挑战,通过李群和李代数的概念,阐述了如何简化对旋转矩阵的求导过程。李群SO(3)和其李代数so(3)之间的指数映射关系被用来有效地进行求导,特别是通过公式R=exp(ϕ^)和log(R)=θsinθ(R−RT)来表达旋转矩阵及其导数。此外,还讨论了左扰动模型下的求导方法,展示了如何利用李代数来处理旋转矩阵的微小变化。
摘要由CSDN通过智能技术生成

1.基础知识回顾:导数与微分

导数是针对一个点处函数变化率来说的,求导过程伴随着求极限。设函数 h h h自变量为 x x x,那么在 x 0 x_0 x0 h h h的导数意思是,在 x 0 x_0 x0临域内, Δ x ↦ 0 \Delta x \mapsto 0 Δx0时, h h h的变化量 Δ h \Delta h Δh Δ x \Delta x Δx的比值,即 lim ⁡ Δ x → 0 Δ h Δ x = lim ⁡ Δ x → 0 h ( x 0 + Δ x ) − h ( x 0 ) Δ x \lim_{\Delta x \rightarrow 0} \frac{\Delta h}{\Delta x}= \lim_{\Delta x \rightarrow 0} \frac{h(x_0+\Delta x)-h(x_0)}{\Delta x} Δx0limΔxΔh=Δx0limΔxh(x0+Δx)h(x0)

2.优化中的旋转量

2.1 背景

在之前的博客中介绍过旋转的表示方法,不了解的同学可以看看:刚体运动中的坐标变换-旋转矩阵、旋转向量、欧拉角及四元数

在VSLAM非线性优化中,使用旋转矩阵来进行坐标变换,而待优化的误差为预测坐标与观测坐标的差值,在摄像头观测到一个坐标点时,假设我们不优化坐标点,那么此时变量就是变换矩阵,而变换矩阵由旋转矩阵和平移向量组成。要对误差函数求导,就必须对旋转矩阵求导。但是旋转矩阵为乘法运算定义良好的李群元素,如果直接将微小扰动乘在原函数值上做差,再除以这个微小扰动,这个导数是无法进一步简化的,这样会造成优化上的麻烦(目前我觉得是可以这么做,但就是很麻烦,聪明的数学家是不会允许这种情形出现的)。
其实,所有李群都有自己的李代数,这个李代数表征了李群的切空间性质,有了李代数,求导会容易很多。对坐标值的求导过程正是通过李代数的指数映射来简化的。

2.2 李群和李代数

2.2.1 李群

旋转的参数化表示之一,就是使用旋转矩阵R来表示,旋转矩阵是一个正交阵,即其逆为自身的转置,且行列式值为1。

S O ( n ) = { R ∈ R n × n ∣ R R T = I , d e t ( R ) = 1 } SO(n)=\{R\in \mathbb{R}^{n\times n} |RR^{T}=I,det(R)=1\} SO(n)={RRn×nRRT=I,det(R)=1}

  • 这里的第一条性质表明,反向旋转 θ \theta θ角度,其旋转矩阵等于正向旋转矩阵的转置。而第二条性质,表明旋转矩阵代表的变换为等体积变换[1]。

所有旋转矩阵构成的集合,加上矩阵乘法,就构成了特殊正交群SO(n)这一李群(n表示维度)。SO(n)群内元素具有连续光滑的性质。旋转矩阵为SO(3)。

  • 本次记录主要针对高博视觉SLAM十四讲中第45页,75页,85页及186页附近内容的梳理,有书的同学可以对照着看。

在SO(3)李代数的推导中可知,so(3)中的向量表征了SO(3)某一旋转的导数与该旋转的线性变换关系。

2.2.2 李代数与李群的关系:指数映射

对于正交矩阵,显而易见下列等式都成立:
R R T = I RR^T=I RRT=I
两边求导,得到如下结果(矩阵转置和求导顺序可以互换):
R ′ R T + R R T ′ = R ′ R T + R R ′ T (1) {R}'R^T+R{R^T}'={R}'R^T+R{{R}'}^T \tag{1} RRT+RRT=RRT+RRT(1)

  • 这里矩阵求导,可以当作对矩阵每个格子中元素求导,对单元函数(就是没有多个变元的函数,我手动推导了以下过程:

因为 R R T = I RR^T=I RRT=I,设 R R R每个格子里的量是时间的函数,即:
R = ( a 11 ( t ) a 12 ( t ) a 13 ( t ) a 21 ( t ) a 22 ( t ) a 23 ( t ) a 31 ( t ) a 32 ( t ) a 33 ( t ) ) R= \begin{pmatrix} a_{11}(t) & a_{12}(t) & a_{13}(t) \\ a_{21}(t) & a_{22}(t) & a_{23}(t)\\ a_{31}(t) & a_{32}(t) & a_{33}(t) \end{pmatrix} R=a11(t)a21(t)a31(t)a12(t)a22(t)a32(t)a13(t)a23(t)a33(t)

此时对 R ( t ) R(t) R(t)求导,含义是对每个 a i j ( t ) a_{ij}(t) aij(t)求导,对矩阵求导的定义同样适用于等式右边。
证明, ( R ( t ) R ( t ) T ) ′ = R ˙ ( t ) R ( t ) T + R ( t ) R ( t ) ˙ T ({R(t)R(t)^T})'=\dot{R}(t){R(t)}^T+R(t){\dot{R(t)}}^T (R(t)R(t)T)=R˙(t)R(t)T+R(t)R(t)˙T
假设 R ( t ) R ( t ) T = A R(t)R(t)^T=A R(t)R(t)T=A
则有 A i j = R ( t ) i , 1 : 3 R ( t ) T 1 : 3 , j A_{ij}={R(t)}_{i,1:3}{R(t)^T}_{1:3,j} Aij=R(t)i,1:3R(t)T1:3,j
A i j A_{ij} Aij先乘积展开,求导后合并可得
A i j ′ = R ( t ) ˙ i , 1 : 3 R ( t ) T 1 : 3 , j + R ( t ) i , 1 : 3 R ( t ) T ˙ 1 : 3 , j {A_{ij}}'=\dot{R(t)}_{i,1:3}{R(t)^T}_{1:3,j}+{R(t)}_{i,1:3}\dot{R(t)^T}_{1:3,j} Aij=R(t)˙i,1:3R(t)T1:3,j+R(t)i,1:3R(t)T˙1:3,j
即可得到两个矩阵乘积的求导公式,这个和初等函数乘积求导是一样的。
所以有:
R ˙ ( t ) R ( t ) T + R ( t ) R ( t ) ˙ T = 0 3 × 3 \dot{R}(t){R(t)}^T+R(t){\dot{R(t)}}^T=0^{3\times3} R˙(t)R(t)T+R(t)R(t)˙T=03×3
然后利用矩阵乘法的转置,上式等同于下:
R ′ R T = − ( R ′ R T ) T (2) {R}'R^T=-{({R}'R^T)}^T \tag{2} RRT=(RRT)T(2)

  • 证明完毕

对于正交阵,其求导后的矩阵与本身转置的矩阵相乘的结果,是一个反对称矩阵。而反对称矩阵有个特点,对角格子全为零,剩余格子是由三个量按规律排列的。
用$ \phi (t)= \begin{pmatrix}
a1\
a2\
a3
\end{pmatrix}$表示一个三维向量,则其对应的反对称矩阵为:
ϕ ( t ) ^ = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] \hat{\phi (t)}= \begin{bmatrix} 0 &-a3 &a2 \\ a3& 0& -a1\\ -a2&a1 &0 \end{bmatrix} ϕ(t)^=0a3a2a30a1a2a10

公式二可以写为 R ′ R T = ϕ ( t ) ^ {R}'R^T=\hat{\phi (t)} RRT=ϕ(t)^,两边同时乘以 R R R
R ′ = ϕ ( t ) ^ R (3) {R}'=\hat{\phi (t)}R \tag{3} R=ϕ(t)^R(3)
正交矩阵型函数,其导数等于正交矩阵函数乘以一个反对称矩阵(这个反对称矩阵是导数与逆的乘积)。

对旋转矩进行对应的so(3)向量所代表的线性变换矩阵(即李代数对应的反对称矩阵)的线性变换,就可以得到该旋转矩阵的一阶导数,换为普通函数更好理解:即 y ′ = A y {y}'=Ay y=Ay,那么很明显, y y y为以 e e e为底的指数函数, y = e A x y=e^{Ax} y=eAx,这里也是类似的。通过解这个微分方程,可以得到:
R = exp ⁡ ( ϕ ( t ) ^ ) (4) R=\exp (\hat{\phi (t)}) \tag{4} R=exp(ϕ(t)^)(4)
这个就是李代数与李群中元素的映射关系。通过这个映射关系,可以对求导进行简化。实际上在非线性优化时,使用的就是李代数与李群间的指数映射关系。

2.2.3 如何求李代数

ϕ ( t ) ^ = log ⁡ ( R ) = θ sin ⁡ θ ( R − R T ) (5) \hat{\phi (t)}=\log (R)=\frac{\theta}{\sin \theta}(R-R^T) \tag{5} ϕ(t)^=log(R)=sinθθ(RRT)(5)
其中: θ = arccos ⁡ τ − 1 2 = arccos ⁡ r 11 + r 22 + r 33 − 1 2 \theta=\arccos \frac{\tau -1}{2}=\arccos \frac{r_{11}+r_{22}+r_{33} -1}{2} θ=arccos2τ1=arccos2r11+r22+r331
根据公式5得到的反对称矩阵,可以映射回相应的李代数。
ϕ = [ ϕ ( t ) ^ ( 2 , 1 ) , − ϕ ( t ) ^ ( 2 , 0 ) , ϕ ( t ) ^ ( 1 , 0 ) ] T \phi=[\hat{\phi(t)}(2,1),-\hat{\phi(t)}(2,0),\hat{\phi(t)}(1,0)]^T ϕ=[ϕ(t)^(2,1),ϕ(t)^(2,0),ϕ(t)^(1,0)]T

3.求导:左扰动模型

在求导时,利用BCH近似求导的方法在我看来是利用函数显示计算增量,而扰动模型是利用递推公式计算增量,二者结果是等价的。
左扰动指扰动旋转矩阵左乘到旋转矩阵上:
∂ ( R p ) ∂ φ = lim ⁡ φ → 0 ( exp ⁡ φ ^ exp ⁡ ϕ ^ ) p − exp ⁡ ϕ ^ p φ (6) \frac{\partial (Rp)}{\partial \varphi }=\lim_{\varphi \rightarrow 0}\frac{(\exp{\hat{\varphi}}\exp{\hat{\phi}})p-\exp{\hat{\phi}}p}{\varphi} \tag{6} φ(Rp)=φ0limφ(expφ^expϕ^)pexpϕ^p(6)
等价无穷小关系 lim ⁡ x → 0 exp ⁡ ( x ) = 1 + x \lim_{x\rightarrow0}\exp(x)=1+x x0limexp(x)=1+x
所以公式6可以进行如下变换:
∂ ( R p ) ∂ φ = lim ⁡ φ → 0 ( 1 + φ ^ ) exp ⁡ ϕ ^ p − exp ⁡ ϕ ^ p φ = φ ^ exp ⁡ ϕ ^ p φ = φ ^ R p φ = − R p ^ φ φ = − ( R p ^ ) \frac{\partial (Rp)}{\partial \varphi }=\lim_{\varphi \rightarrow 0}\frac{(1+\hat{\varphi})\exp{\hat{\phi}}p-\exp{\hat{\phi}}p}{\varphi} \\=\frac{\hat{\varphi}\exp{\hat{\phi}}p}{\varphi}\\ =\frac{\hat{\varphi}Rp}{\varphi}\\=\frac{-\hat{Rp}\varphi}{\varphi}\\=-(\hat{Rp}) φ(Rp)=φ0limφ(1+φ^)expϕ^pexpϕ^p=φφ^expϕ^p=φφ^Rp=φRp^φ=(Rp^)

参考

1.行列式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值