SLAM与李群李代数

概念

  1. 群是什么?
    官方概念:是一种集合加上一种运算的代数结构,且该运算满足“封结幺逆”四个性质
    例如:
    旋转矩阵满足一下性质
    R R T = I , d e t ( R ) = 1 RR^T=I,det(R)=1 RRT=I,det(R)=1
    那么可以得到一个旋转矩阵集合
    S O ( 3 ) = { R ∈ ℜ 3 × 3 ∣ R R T = I , d e t ( R ) = 1 } SO(3)= \left\{ R \in \Re ^{3\times3}|RR^T=I,det(R)=1 \right\} SO(3)={R3×3RRT=I,det(R)=1}
    但是这是对加法不封闭的
    R 1 + R 2 ∉ S O ( 3 ) R_1+R_2 \not\in SO(3) R1+R2SO(3)
    但是这是对乘法是封闭的
    R 1 ⋅ R 2 ∈ S O ( 3 ) R_1 \cdot R_2\in SO(3) R1R2SO(3)
    同时旋转矩阵的运算( ⋅ \cdot )又满足“封结幺逆”四个性质,那么就说这是一个群(特殊正交群)

同理变换矩阵集合也是满足群的概念(特殊欧式群)
S E ( 3 ) = { T = ∣ R t 0 1 ∣ ∈ ℜ 4 × 4 ∣ R ∈ S O ( 3 ) } SE(3)= \left\{ T=\begin{vmatrix} R & t \\ 0 & 1 \end{vmatrix} \in \Re ^{4\times4}|R \in SO(3) \right\} SE(3)={T=R0t14×4RSO(3)}

  1. 李群是什么?
    是指一个具有连续(光滑)性质的群
    可以想象一个刚体在空间中旋转平移,实际上就是一个连续的过程,所以说SO(3) SE(3)是李群

  2. 李代数是什么
    李群都有与之对应的李代数,李代数描述了李群的局部性质。
    由于这方面知识比较复杂,并没有去深究其性质,这里暂时先知道,李群和李代数是一个映射关系
    例如SO(3)
    R = e x p ( ϕ ∧ ) R=exp(\phi^\wedge) R=exp(ϕ)
    s o ( 3 ) = { ϕ ∈ ℜ 3 ∣ Φ = ϕ ∧ ∈ ℜ 3 × 3 } so(3)=\left\{ \phi \in \Re ^3|\Phi=\phi^\wedge \in \Re^{3\times 3} \right\} so(3)={ϕ3Φ=ϕ3×3}

SE(3)
s e ( 3 ) = { ξ = ∣ ρ ϕ ∣ ∈ ℜ 6 , ρ ∈ ℜ 3 , ϕ ∈ s o ( 3 ) , ξ ∧ = ∣ ϕ ∧ ρ o T 1 ∣ ∈ ℜ 4 × 4 } se(3)=\left\{ \xi= \begin{vmatrix} \rho \\ \phi \end{vmatrix} \in \Re^6 , \rho\in \Re^3 , \phi\in so(3),\xi^\wedge =\begin{vmatrix} \phi^\wedge & \rho \\ o^T & 1 \end{vmatrix} \in \Re^{4 \times4}\right\} se(3)={ξ=ρϕ6,ρ3,ϕso(3),ξ=ϕoTρ14×4}

李群与李代数的映射关系

SO(3)上

我们知道指数的泰勒展开为
在这里插入图片描述
那么任意矩阵的指数映射可以写成
e x p ( A ) = ∑ n = 0 ∞ 1 n ! A n exp(A)=\sum_{n=0}^\infty \frac{1}{n!}A^n exp(A)=n=0n!1An
假设A矩阵对应的李代数是 ϕ \phi ϕ
e x p ( ϕ ∧ ) = ∑ n = 0 ∞ 1 n ! ( ϕ ∧ ) n exp(\phi^\wedge)=\sum_{n=0}^\infty \frac{1}{n!}(\phi^\wedge)^n exp(ϕ)=n=0n!1(ϕ)n

其实 ϕ \phi ϕ是一个三维向量,那把它转化成角轴,记为 θ \theta θ a a a,于是有 ϕ = θ a \phi=\theta a ϕ=θa
其中 a a a是旋转轴,并且长度为1,对于 a ∧ a^\wedge a有以下性质
a ∧ a ∧ = a ∧ a T − I a^\wedge a^\wedge=a^\wedge a^T-I aa=aaTI
a ∧ a ∧ a ∧ = − a ∧ a^\wedge a^\wedge a^\wedge =-a^\wedge aaa=a
把指数映射进行泰勒展开后化简
在这里插入图片描述得到的结果其实就是罗德里格斯公式,就是旋转矩阵R,从这里可以看到,旋转矩阵对应的李代数实际上就是旋转向量

SE(3)上

e x p ( ξ ∧ ) = ∣ ∑ n = 0 ∞ 1 n ! ( ϕ ∧ ) n ∑ n = 0 ∞ 1 ( n + 1 ) ! ( ϕ ∧ ) n ρ 0 T 1 ∣ exp( \xi^\wedge)=\begin{vmatrix} \sum_{n=0}^\infty \frac{1}{n!}(\phi^\wedge)^n & \sum_{n=0}^\infty \frac{1}{(n+1)!}(\phi^\wedge)^n \rho\\ 0^T &1 \end{vmatrix} exp(ξ)=n=0n!1(ϕ)n0Tn=0(n+1)!1(ϕ)nρ1
其中平移向量引入了一个雅克比矩阵 J J J
在这里插入图片描述
那么 J J J就可以得到式子

J = s i n θ θ I + ( 1 − s i n θ θ ) a a T + 1 − c o s θ θ a ∧ J=\frac{sin\theta}{\theta}I+(1-\frac{sin\theta}{\theta})aa^T+\frac{1-cos\theta}{\theta}a^{\wedge} J=θsinθI+(1θsinθ)aaT+θ1cosθa
所以SE(3)的指数映射右上角的t就满足
t = J ρ t=J\rho t=Jρ
那么在已知变换矩阵 T T T的情况下J可以由 ϕ \phi ϕ得到,那么 ρ \rho ρ就可以由上面线性方程得出
最后
e x p ( ξ ∧ ) = ∣ R J ρ 0 T 1 ∣ = T exp( \xi^\wedge)=\begin{vmatrix} R & J\rho\\ 0^T &1 \end{vmatrix}=T exp(ξ)=R0TJρ1=T

变换关系表

在这里插入图片描述
以上就是解释了旋转矩阵变换矩阵可以构成李群,并解释了李群和李代数的对映关系,同样给出了计算过程,仅此而已,并又有太多的和SLAM进行关联结合。

李代数的求导与扰动模型

这一部分才是真正的李群李代数和SLAM理论进行结合。目前的SLAM主流是非线性优化,也就是构造成最小二乘的形式,利用迭代求解相机的pose,这里的优化变量是T,所以需要对矩阵进行求导,但是我们知道这是对加法不封闭的,也就不能直接利用矩阵进行增量加减完成求导,但是在对应的李代数空间里面,两两相加其中一个是小量的情况下可以近似李群空间上的相加(引入一个雅克比矩阵),这样就可以对矩阵进行求导了。

  • 实际上在讨论李群空间的矩阵相乘是否等价于李代数空间的两向量相加
    e x p ( ϕ 1 ∧ ) e x p ( ϕ 2 ∧ ) = e x p ( ( ϕ 1 + ϕ 2 ) ∧ ) ) exp(\phi_1^\wedge)exp(\phi_2^\wedge)=exp((\phi_1+\phi_2)^\wedge)) exp(ϕ1)exp(ϕ2)=exp((ϕ1+ϕ2)))
    或者说是
    l n ( e x p ( ϕ 1 ∧ ) e x p ( ϕ 2 ∧ ) ) = A + B ln(exp(\phi_1^\wedge)exp(\phi_2^\wedge))=A+B ln(exp(ϕ1)exp(ϕ2))=A+B

如果AB是标量的话就是可以成立的,但是矩阵是不成立的,会得到很多有李括号的余项。
在这里插入图片描述这叫做BCH(Baker-Campbell-Hausdorff)公式

可以考虑采用近似的方式,当A或者B对应的李代数 ϕ 1 \phi_1 ϕ1或者 ϕ 2 \phi_2 ϕ2其中一个是小量的时候(求导时就是其中一个为小量),可以把二次以上的项都忽略掉,直接的得到
l n ( e x p ( ϕ 1 ∧ ) e x p ( ϕ 2 ∧ ) ) ∨ ≃ { J l ( ϕ 2 ) − 1 ϕ 1 + ϕ 2 当 ϕ 1 为 小 量 J r ( ϕ 1 ) − 1 ϕ 2 + ϕ 1 当 ϕ 2 为 小 量 ln(exp(\phi_1^\wedge)exp(\phi_2^\wedge))^\vee\simeq \begin{cases} J_l(\phi_2)^{-1}\phi_1+ \phi_2 \quad 当\phi_1为小量\\ J_r(\phi_1)^{-1}\phi_2+ \phi_1 \quad 当\phi_2为小量 \end{cases} ln(exp(ϕ1)exp(ϕ2)){Jl(ϕ2)1ϕ1+ϕ2ϕ1Jr(ϕ1)1ϕ2+ϕ1ϕ2

从该式可以看到,当一个旋转矩阵 R 2 R_2 R2左乘一个微小旋转矩阵 R 1 R_1 R1时,可以近似看做在原有李代数 ϕ 2 \phi_2 ϕ2上加上了一项 J l ( ϕ 2 ) − 1 ϕ 1 J_l(\phi_2)^{-1}\phi_1 Jl(ϕ2)1ϕ1。同样如果是右乘的话,当一个旋转矩阵 R 1 R_1 R1右乘一个微小矩阵 R 2 R_2 R2,可以近似看做在原有李代数 ϕ 1 \phi_1 ϕ1上加上了一项 J r ( ϕ 1 ) − 1 ϕ 2 J_r(\phi_1)^{-1}\phi_2 Jr(ϕ1)1ϕ2
目前没有去了解相关的证明,所以这里就直接给出了一个近似结论
其中 J l J_l Jl和上面证明求出的 J J J是一样的形式
J l = J = s i n θ θ I + ( 1 − s i n θ θ ) a a T + 1 − c o s θ θ a ∧ J_l=J=\frac{sin\theta}{\theta}I+(1-\frac{sin\theta}{\theta})aa^T+\frac{1-cos\theta}{\theta}a^{\wedge} Jl=J=θsinθI+(1θsinθ)aaT+θ1cosθa
它的逆
J l − 1 = θ 2 c o t θ 2 I + ( 1 − θ 2 c o t θ 2 ) a a T + θ 2 a ∧ J_l^{-1}=\frac{\theta}{2}cot\frac{\theta}{2}I+(1-\frac{\theta}{2}cot\frac{\theta}{2})aa^T+\frac{\theta}{2}a^{\wedge} Jl1=2θcot2θI+(12θcot2θ)aaT+2θa
右乘雅克比仅需要对自变量取负号
J r ( ϕ ) = J l ( − ϕ ) J_r(\phi)=J_l(-\phi) Jr(ϕ)=Jl(ϕ)

  • 讨论李群乘法和李代数加法的关系
    上面的过程就是在证明李群乘法和李代数加法的关系的可行性
    假设 Δ ϕ \Delta \phi Δϕ是微小量,进行左乘在某个旋转量 ϕ \phi ϕ,由李群上的乘法转变成李代数的加法
    e x p ( Δ ϕ ∧ ) e x p ( ϕ ∧ ) = e x p ( ( ϕ + J l ( ϕ ) − 1 Δ ϕ ) ∧ ) exp(\Delta \phi^\wedge)exp(\phi^\wedge)=exp((\phi+J_l(\phi)^{-1}\Delta\phi) ^\wedge) exp(Δϕ)exp(ϕ)=exp((ϕ+Jl(ϕ)1Δϕ))

因为 Δ ϕ \Delta\phi Δϕ是小量,那 J l ( ϕ ) − 1 Δ ϕ J_l(\phi)^{-1}\Delta\phi Jl(ϕ)1Δϕ也是小量, Δ ϕ ≃ J l ( ϕ ) − 1 Δ ϕ \Delta\phi \simeq J_l(\phi)^{-1}\Delta\phi ΔϕJl(ϕ)1Δϕ,所以SO(3)上左右乘微小量近似于so(3)上加进行微小量相加
同样的由李代数上的加法转变成李群上的左乘和右乘

e x p ( Δ ϕ ∧ ) e x p ( ϕ ∧ ) = e x p ( ( J l ( ϕ ) − 1 Δ ϕ + ϕ ) ∧ ) exp(\Delta \phi^\wedge)exp( \phi^\wedge)=exp((J_l(\phi)^{-1}\Delta \phi+ \phi)^\wedge) exp(Δϕ)exp(ϕ)=exp((Jl(ϕ)1Δϕ+ϕ))
e x p ( ϕ ∧ ) e x p ( Δ ϕ ∧ ) = e x p ( ( J r ( ϕ ) − 1 Δ ϕ + ϕ ) ∧ ) exp( \phi^\wedge)exp(\Delta \phi^\wedge)=exp((J_r(\phi)^{-1}\Delta \phi+ \phi)^\wedge) exp(ϕ)exp(Δϕ)=exp((Jr(ϕ)1Δϕ+ϕ))
左边到右边就是在小量上乘上雅克比逆矩阵,右边到左边就在小量上乘上雅克比正矩阵,同样的可以推导
e x p ( ( Δ ϕ + ϕ ) ∧ ) = e x p ( ( J l ( ϕ ) Δ ϕ ) ∧ ) e x p ( ϕ ∧ ) = e x p ( ϕ ∧ ) e x p ( ( J r ( ϕ ) Δ ϕ ) ∧ ) exp((\Delta \phi+\phi)^\wedge)=exp((J_l(\phi)\Delta \phi)^\wedge)exp( \phi^\wedge)=exp( \phi^\wedge)exp((J_r(\phi)\Delta \phi)^\wedge) exp((Δϕ+ϕ))=exp((Jl(ϕ)Δϕ))exp(ϕ)=exp(ϕ)exp((Jr(ϕ)Δϕ))

那么对于 S E ( 3 ) SE(3) SE(3)也是同样结论
e x p ( Δ ξ ∧ ) e x p ( ξ ∧ ) = e x p ( ( J l ( ξ ) − 1 Δ ξ + ξ ) ∧ ) exp(\Delta \xi^\wedge)exp( \xi^\wedge)=exp((J_l(\xi)^{-1}\Delta \xi+\xi)^\wedge) exp(Δξ)exp(ξ)=exp((Jl(ξ)1Δξ+ξ))
e x p ( ξ ∧ ) e x p ( Δ ξ ∧ ) = e x p ( ( J r ( ξ ) − 1 Δ ξ + ξ ) ∧ ) exp( \xi^\wedge)exp(\Delta \xi^\wedge)=exp((J_r(\xi)^{-1}\Delta \xi+ \xi)^\wedge) exp(ξ)exp(Δξ)=exp((Jr(ξ)1Δξ+ξ))
这里的J是6*6的矩阵,比较复杂

以上就是通过近似的方式,使得李群上的小量相乘与李代数空间上相加进行相关联,那么这样就可以实现矩阵的求导

矩阵的求导

求导这里可以有两种方法

  1. 直接用李代数表示位姿,然后根据李代数加法来对李代数求导(这个更贴近于求导规则)
  2. 对李群左右乘微小扰动,对扰动求导,称为左右扰动模型(前面已经解释,SO(3)上左右乘微小扰动近似于so(3)上加微小量)
方法一 李代数求导

在这里插入图片描述

从上面证明可以看到使用该方法不管是左乘还是右乘都会引入一个雅克比矩阵,所以需要另外计算这个复杂的雅克比矩阵

方法二 扰动模型

设扰动 Δ R \Delta R ΔR对应的李代数是 Δ ϕ \Delta \phi Δϕ
左乘
∂ R p ∂ ϕ = lim ⁡ Δ ϕ → 0 e x p ( ( Δ ϕ ) ∧ ) e x p ( ϕ ∧ ) p − e x p ( ϕ ∧ ) p Δ ϕ = lim ⁡ Δ ϕ → 0 ( I + Δ ϕ ∧ ) e x p ( ϕ ∧ ) p − e x p ( ϕ ∧ ) p Δ ϕ = lim ⁡ Δ ϕ → 0 Δ ϕ ∧ e x p ( ϕ ∧ ) p Δ ϕ = lim ⁡ Δ ϕ → 0 − ( R p ) ∧ Δ ϕ Δ ϕ = ( R p ) ∧ \frac{ \partial Rp}{ \partial \phi} =\lim_{\Delta \phi \to 0}\frac{exp((\Delta \phi)^\wedge)exp( \phi^\wedge)p-exp( \phi^\wedge)p}{\Delta \phi} \\=\lim_{\Delta \phi \to 0}\frac{(I+\Delta \phi^\wedge)exp( \phi^\wedge)p-exp( \phi^\wedge)p}{\Delta \phi}\\=\lim_{\Delta \phi \to 0}\frac{\Delta \phi^\wedge exp( \phi^\wedge)p}{\Delta \phi}\\=\lim_{\Delta \phi \to 0}-\frac{ (Rp)^\wedge\Delta \phi}{\Delta \phi}\\= (Rp)^\wedge ϕRp=Δϕ0limΔϕexp((Δϕ))exp(ϕ)pexp(ϕ)p=Δϕ0limΔϕ(I+Δϕ)exp(ϕ)pexp(ϕ)p=Δϕ0limΔϕΔϕexp(ϕ)p=Δϕ0limΔϕ(Rp)Δϕ=(Rp)
右乘
∂ R p ∂ ϕ = lim ⁡ Δ ϕ → 0 e x p ( ϕ ∧ ) e x p ( ( Δ ϕ ) ∧ ) p − e x p ( ϕ ∧ ) p Δ ϕ = lim ⁡ Δ ϕ → 0 e x p ( ϕ ∧ ) ( I + Δ ϕ ∧ ) p − e x p ( ϕ ∧ ) p Δ ϕ = lim ⁡ Δ ϕ → 0 e x p ( ϕ ∧ ) Δ ϕ ∧ p Δ ϕ = lim ⁡ Δ ϕ → 0 − R p ∧ Δ ϕ Δ ϕ = R p ∧ \frac{ \partial Rp}{ \partial \phi} =\lim_{\Delta \phi \to 0}\frac{exp( \phi^\wedge )exp((\Delta \phi)^\wedge)p-exp( \phi^\wedge)p}{\Delta \phi} \\=\lim_{\Delta \phi \to 0}\frac{exp( \phi^\wedge)(I+\Delta \phi^\wedge)p-exp( \phi^\wedge)p}{\Delta \phi}\\=\lim_{\Delta \phi \to 0}\frac{exp( \phi^\wedge)\Delta \phi^\wedge p}{\Delta \phi}\\=\lim_{\Delta \phi \to 0}-\frac{ Rp^\wedge\Delta \phi}{\Delta \phi}\\= Rp^\wedge ϕRp=Δϕ0limΔϕexp(ϕ)exp((Δϕ))pexp(ϕ)p=Δϕ0limΔϕexp(ϕ)(I+Δϕ)pexp(ϕ)p=Δϕ0limΔϕexp(ϕ)Δϕp=Δϕ0limΔϕRpΔϕ=Rp
对于SE(3)上的扰动模型求导
左乘
∂ T p ∂ ξ = lim ⁡ Δ ξ → 0 e x p ( ( Δ ξ ) ∧ ) e x p ( ξ ∧ ) p − e x p ( ξ ∧ ) p Δ ξ = lim ⁡ Δ ξ → 0 ( I + Δ ξ ∧ ) e x p ( ξ ∧ ) p − e x p ( ξ ∧ ) p Δ ξ = lim ⁡ Δ ξ → 0 Δ ξ ∧ e x p ( ξ ∧ ) p Δ ξ = lim ⁡ Δ ξ → 0 ∣ Δ ϕ ∧ Δ ρ 0 T 1 ∣ ∣ R p + t 1 ∣ Δ ξ = lim ⁡ Δ ξ → 0 ∣ Δ ϕ ∧ ( R p + t ) + Δ ρ 0 ∣ Δ ξ = lim ⁡ Δ ξ → 0 ∣ − ( R p + t ) ∧ Δ ϕ + Δ ρ 0 ∣ Δ ξ = ∣ I − ( R p + t ) ∧ 0 T 0 T ∣ \frac{ \partial Tp}{ \partial \xi} =\lim_{\Delta \xi \to 0}\frac{exp((\Delta \xi)^\wedge)exp( \xi^\wedge)p-exp( \xi^\wedge)p}{\Delta \xi} \\=\lim_{\Delta \xi \to 0}\frac{(I+\Delta \xi^\wedge)exp( \xi^\wedge)p-exp( \xi^\wedge)p}{\Delta \xi}\\=\lim_{\Delta \xi \to 0}\frac{\Delta \xi^\wedge exp( \xi^\wedge)p}{\Delta \xi}\\=\lim_{\Delta \xi \to 0}\frac{\begin{vmatrix} \Delta \phi^\wedge & \Delta \rho \\ 0^T & 1 \end{vmatrix}\begin{vmatrix} Rp+t \\ 1 \end{vmatrix}}{\Delta \xi}\\ =\lim_{\Delta \xi \to 0} \frac{\begin{vmatrix} \Delta \phi^\wedge(Rp+t)+\Delta \rho \\ 0 \end{vmatrix}}{\Delta \xi}\\=\lim_{\Delta \xi \to 0} \frac{\begin{vmatrix} -(Rp+t)^\wedge\Delta \phi+\Delta \rho \\ 0 \end{vmatrix}}{\Delta \xi}\\=\begin{vmatrix} I & -(Rp+t)^\wedge\\ 0^T & 0^T \end{vmatrix} ξTp=Δξ0limΔξexp((Δξ))exp(ξ)pexp(ξ)p=Δξ0limΔξ(I+Δξ)exp(ξ)pexp(ξ)p=Δξ0limΔξΔξexp(ξ)p=Δξ0limΔξΔϕ0TΔρ1Rp+t1=Δξ0limΔξΔϕ(Rp+t)+Δρ0=Δξ0limΔξ(Rp+t)Δϕ+Δρ0=I0T(Rp+t)0T
其中
∣ I − ( R p + t ) ∧ 0 T 0 T ∣ ∣ Δ ρ Δ ϕ ∣ = ∣ − ( R p + t ) ∧ Δ ϕ + Δ ρ 0 ∣ \begin{vmatrix} I & -(Rp+t)^\wedge\\ 0^T & 0^T \end{vmatrix}\begin{vmatrix} \Delta \rho\\ \Delta \phi \end{vmatrix}=\begin{vmatrix} -(Rp+t)^\wedge\Delta \phi+\Delta \rho \\ 0 \end{vmatrix} I0T(Rp+t)0TΔρΔϕ=(Rp+t)Δϕ+Δρ0
∣ Δ ρ Δ ϕ ∣ = Δ ξ \begin{vmatrix} \Delta \rho\\ \Delta \phi \end{vmatrix}=\Delta \xi ΔρΔϕ=Δξ
右乘同理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值