不变扩展卡尔曼滤波(一):李群与李代数

本文同步更新与github pages,欢迎收藏关注。

文章目录

  • 群的定义
  • SLAM中常用的群
  • 切空间与李代数
    • $SO(3)$的切空间
    • $SE(3)$与$SE_{k+1}(3)$的切空间
  • 指数映射
    • $so(3)$到$SO(3)$
    • $se(3)$到$SE(3)$
    • $se_{k+1}(3)$到$SE_{k+1}(3)$
    • 一些指数映射的其他性质
  • 群伴随
    • $SO(3)$的伴随
    • $SE(3)$与$SE_{k+1}(3)$的伴随
  • References

群的定义

设有一个集合 G G G,集合中的元素为 g g g,元素之间存在乘法运算 ⋅ \cdot ,称 G G G是一个群如果其满足以下条件:

  • 封闭性 ∀ g 1 , g 2 ∈ G ,    g 1 ⋅ g 2 ∈ G \forall g_1, g_2\in G,\ \ g_1\cdot g_2\in G g1,g2G,  g1g2G
  • 结合律 g 1 ⋅ ( g 2 ⋅ g 3 ) = ( g 1 ⋅ g 2 ) ⋅ g 3 g_1\cdot(g_2\cdot g_3)=(g_1\cdot g_2)\cdot g_3 g1(g2g3)=(g1g2)g3
  • 存在幺元 ∀ g ∈ G ,    e ⋅ g = g ⋅ e = g \forall g\in G,\ \ e\cdot g=g\cdot e=g gG,  eg=ge=g
  • 存在逆元 ∀ g ∈ G ,    ∃ g − 1 ∈ G ,    g ⋅ g − 1 = g − 1 ⋅ g = e \forall g\in G,\ \ \exists g^{-1}\in G,\ \ g\cdot g^{-1}=g^{-1}\cdot g=e gG,  g1G,  gg1=g1g=e

SLAM中常用的群

只考虑实数域。所有 n × n n\times n n×n的正交矩阵 R R R构成了一个群,称为正交群,记为 O ( n ) O(n) O(n),在这些正交矩阵中,行列式为正1的矩阵本身也构成一个群,称为特殊正交群,记为 S O ( n ) SO(n) SO(n),也就是说 S O ( n ) SO(n) SO(n) O ( n ) O(n) O(n)的一个子群(准确的说是正规子群)。

在SLAM以及很多机器人技术中,最常用到的就是 S O ( 3 ) SO(3) SO(3),也就是所有三维旋转矩阵构成的群,可以用来表示机器人或者飞行器的姿态。

当需要描述一个刚体变换(旋转加平移)时,光靠一个旋转矩阵是不够的,当我们使用齐次坐标表示空间中的点时,对该点的刚体变换可用下面的 4 × 4 4\times 4 4×4矩阵表示

T = ( R t 0 1 ) T= \begin{pmatrix} R & t \\ 0 & 1 \end{pmatrix} T=(R0t1)

其中 R ∈ R 3 × 3 R\in \mathbb{R}^{3\times 3} RR3×3是旋转矩阵, t ∈ R 3 t\in \mathbb{R}^3 tR3是平移矢量。容易验证,矩阵 T T T也是满足构成群的四个条件的,其中逆元为

T − 1 = ( R T − R T t 0 1 ) T^{-1}= \begin{pmatrix} R^T & -R^Tt \\ 0 & 1 \end{pmatrix} T1=(RT0RTt1)

幺元就是单位阵,因此所有刚体变换矩阵也构成一个群,称为特殊欧式群,记为 S E ( 3 ) SE(3) SE(3)。当然也存在 S E ( n ) SE(n) SE(n),看做是任意维度下的刚体变换。如果不要求 T T T里面的 R R R必须是一个旋转矩阵,甚至不要求是正交矩阵,只要可逆就行,那么我们就得到了更一般的仿射群,在这就不深入讨论了。

为了方便之后介绍不变卡尔曼滤波,这里对 S E ( 3 ) SE(3) SE(3)做一个扩展,我们发现型如

χ = ( R t p 1 p 2 . . . p k 0 1 0 0 . . . 0 0 0 1 0 . . . 0 0 0 0 1 . . . 0 ⋮ 0 0 0 0 . . . 1 ) \chi= \begin{pmatrix} R & t & p_1 & p_2 & ... & p_k \\ 0 & 1 & 0 & 0 & ... & 0 \\ 0 & 0 & 1 & 0 & ... & 0 \\ 0 & 0 & 0 & 1 & ... & 0 \\ \vdots \\ 0 & 0 & 0 & 0 & ... & 1 \end{pmatrix} χ=R0000t1000p10100p20010...............pk0001

的矩阵,大小为 ( 4 + k ) × ( 4 + k ) (4+k)\times(4+k) (4+k)×(4+k) p k ∈ R 3 p_k\in \mathbb{R}^3 pkR3,也满足群定义,逆元为

χ − 1 = ( R T − R T t − R T p 1 − R T p 2 . . . − R T p k 0 1 0 0 . . . 0 0 0 1 0 . . . 0 0 0 0 1 . . . 0 ⋮ 0 0 0 0 . . . 1 ) \chi^{-1}= \begin{pmatrix} R^T & -R^Tt & -R^Tp_1 & -R^Tp_2 & ... & -R^Tp_k \\ 0 & 1 & 0 & 0 & ... & 0 \\ 0 & 0 & 1 & 0 & ... & 0 \\ 0 & 0 & 0 & 1 & ... & 0 \\ \vdots \\ 0 & 0 & 0 & 0 & ... & 1 \end{pmatrix} χ1=RT0000RTt1000RTp10100RTp20010...............RTpk0001

幺元也是单位阵,我们将这种矩阵构成的群记为 S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)

切空间与李代数

S O ( 3 ) SO(3) SO(3) S E ( 3 ) SE(3) SE(3)这类群,还有一个特点是平滑连续,即他们是一个平滑的流形,这类群称为李群。在流形上微分可以得到流形上某一点的切空间(类比于对曲线微分得到切线)。其中在幺元处的切空间最重要(与后面的指数映射有关)。下面分别来求一下 S O ( 3 ) SO(3) SO(3) S E ( 3 ) SE(3) SE(3),以及 S E k ( 3 ) SE_k(3) SEk(3)在幺元处的切空间。

S O ( 3 ) SO(3) SO(3)的切空间

具体写出 S O ( 3 ) SO(3) SO(3)的定义为

S O ( 3 ) = { R ∈ R 3 × 3 ∣ R T R = I , d e t ( R ) = 1 } SO(3)=\{R\in\mathbb{R}^{3\times 3}|R^TR=I, det(R)=1\} SO(3)={RR3×3RTR=I,det(R)=1}

现在假设 R R R是一个随时间变化的量 R ( t ) R(t) R(t),则 R ( t ) T R ( t ) = I R(t)^TR(t)=I R(t)TR(t)=I两边对时间求导,并令 ∂ R / ∂ t = R ˙ \partial R/\partial t=\dot{R} R/t=R˙,有

R ˙ T R + R T R ˙ = 0 \dot{R}^TR+R^T\dot{R}=0 R˙TR+RTR˙=0

由于要求幺元处的切空间,令上式中的 R = I R=I R=I,得

R ˙ T + R ˙ = 0 \dot{R}^T+\dot{R}=0 R˙T+R˙=0

R ˙ \dot{R} R˙是一个斜对称矩阵,有如下形式

R ˙ = ( 0 − z y z 0 − x − y x 0 ) \dot{R}= \begin{pmatrix} 0 & -z & y \\ z & 0 & -x \\ -y & x & 0 \end{pmatrix} R˙=0zyz0xyx0

这就是 S O ( 3 ) SO(3) SO(3)幺元处的切空间所具有的形式。以上斜对称矩阵实际只有3个维度,我们定义一个映射

[ x y z ] × = ( 0 − z y z 0 − x − y x 0 ) \begin{bmatrix} x \\ y \\ z \end{bmatrix}_\times= \begin{pmatrix} 0 & -z & y \\ z & 0 & -x \\ -y & x & 0 \end{pmatrix} xyz×=0zyz0xyx0

则矢量 ξ R = ( x , y , z ) T \xi_R=(x,y,z)^T ξR=(x,y,z)T就是我们常说的轴角。矢量的方向代表旋转的轴,矢量的模长代表要旋转的角度。

S E ( 3 ) SE(3) SE(3) S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)的切空间

有了 S O ( 3 ) SO(3) SO(3)的切空间后, S E ( 3 ) SE(3) SE(3) S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)的切空间就很好求了。幺元处的切空间实际上是幺元在流形上发生微小摄动产生的增量,比如对 S O ( 3 ) SO(3) SO(3)而言,幺元 I I I在流形上的微小摄动产生 I + Λ ( ξ R ) I+\Lambda(\xi_R) I+Λ(ξR),那么平移量 t t t本身属于向量空间,微小的摄动仍然是一个三维矢量。因此 S E ( 3 ) SE(3) SE(3)切空间的形式就是

T ˙ = ( [ ξ R ] × ξ t 0 0 ) \dot{T}= \begin{pmatrix} [\xi_R]_\times & \xi_t \\ 0 & 0 \end{pmatrix} T˙=([ξR]×0ξt0)

其中 ξ R , ξ t ∈ R 3 \xi_R,\xi_t \in \mathbb{R}^3 ξR,ξtR3

S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)的切空间自然就是

χ ˙ = ( [ ξ R ] × ξ t ξ p 1 . . . ξ p k 0 0 0 . . . 0 ⋮ 0 0 0 . . . 0 ) \dot{\chi}= \begin{pmatrix} [\xi_R]_\times & \xi_t &\xi_{p_1} & ... & \xi_{p_k} \\ 0 & 0 & 0 & ... & 0 \\ \vdots \\ 0 & 0 & 0 & ... & 0 \end{pmatrix} χ˙=[ξR]×00ξt00ξp100.........ξpk00

上面的表达是很冗余的,我们也可以像 S O ( 3 ) SO(3) SO(3)那样定义一个映射

Λ ( ξ R ξ t ξ p 1 ⋮ ξ p k ) = ( [ ξ R ] × ξ t ξ p 1 . . . ξ p k 0 0 0 . . . 0 ⋮ 0 0 0 . . . 0 ) \Lambda \begin{pmatrix} \xi_R\\ \xi_t\\ \xi_{p_1}\\ \vdots\\ \xi_{p_k} \end{pmatrix} =\begin{pmatrix} [\xi_R]_\times & \xi_t &\xi_{p_1} & ... & \xi_{p_k} \\ 0 & 0 & 0 & ... & 0 \\ \vdots \\ 0 & 0 & 0 & ... & 0 \end{pmatrix} ΛξRξtξp1ξpk=[ξR]×00ξt00ξp100.........ξpk00

我们可以发现,所有这些群的切空间都是向量空间,即满足矢量的线性运算(对加法和数乘封闭),实际上,它们还对另外一种运算封闭,被称为李括号,定义为 [ X , Y ] = X Y − Y X [X, Y]=XY-YX [X,Y]=XYYX,其中 X , Y X,Y X,Y是群的切空间的矩阵形式。并可以验证有如下关系成立

[ X , Y ] + [ Y , X ] = 0 [ X , [ Y , Z ] ] + [ Y , [ Z , X ] ] + [ Z , [ X , Y ] ] = 0 \begin{aligned} [X,Y]+[Y,X]&=0 \\ [X,[Y,Z]]+[Y,[Z,X]]+[Z,[X,Y]]&=0 \end{aligned} [X,Y]+[Y,X][X,[Y,Z]]+[Y,[Z,X]]+[Z,[X,Y]]=0=0

如果将李括号也视为一种乘法(和矩阵一样不满足交换律),那么切空间就同时对加法运算和乘法运算封闭,因此构成了一个环(Ring)!所以,这样的切空间也被称为李代数。 S O ( 3 ) , S E ( 3 ) , S E k + 1 ( 3 ) SO(3),SE(3),SE_{k+1}(3) SO(3),SE(3),SEk+1(3)的李代数分别用 s o ( 3 ) , s e ( 3 ) , s e k + 1 ( 3 ) so(3),se(3),se_{k+1}(3) so(3),se(3),sek+1(3)表示。

指数映射

先对指数函数做泰勒展开,有

e x = 1 + x + 1 2 ! x 2 + . . . + 1 n ! x n + . . . e^x=1+x+\frac{1}{2!}x^2+...+\frac{1}{n!}x^n+... ex=1+x+2!1x2+...+n!1xn+...

将其中的 x x x替换为某个矩阵 A A A,可得到

e A = I + A + 1 2 ! A 2 + . . . + 1 n ! A n + . . . e^A=I+A+\frac{1}{2!}A^2+...+\frac{1}{n!}A^n+... eA=I+A+2!1A2+...+n!1An+...

可证明上式对任意 n × n n\times n n×n实矩阵都是收敛的。

上式构成了指数映射的基础。当矩阵 A A A属于某个李群的李代数时,比如 A ∈ s o ( 3 ) A\in so(3) Aso(3),指数映射将其映射到对应的李群上,即 e A ∈ S O ( 3 ) e^A\in SO(3) eASO(3)。还记得李代数是李群在幺元处的切空间,也就是说,通过指数映射,整个李群完全可以通过幺元处的切空间得到!(实际上,指数映射一般只能将李代数映射到李群的一部分上,但对于 S O ( n ) , S E ( n ) , S E k + 1 ( n ) SO(n), SE(n),SE_{k+1}(n) SO(n),SE(n),SEk+1(n)而言,能够映射到全部,即任何一个属于这些群的元素,一定能在对应李代数中找到一个对应元素)。下面分别给出 S O ( n ) , S E ( n ) , S E k + 1 ( n ) SO(n), SE(n),SE_{k+1}(n) SO(n),SE(n),SEk+1(n)指数映射的解析形式。

s o ( 3 ) so(3) so(3) S O ( 3 ) SO(3) SO(3)

为了能够利用李代数的矢量表示(即轴角),我们一般定义其指数映射为

Exp ( ξ R ) = exp ⁡ ( [ ξ R ] × ) \text{Exp}(\bf{\xi_R})=\exp([\bf{\xi_R}]_\times) Exp(ξR)=exp([ξR]×)

ξ R = θ u \bf{\xi_R}=\theta \bf{u} ξR=θu,其中 θ \theta θ是一个标量,代表旋转的角度, u \bf{u} u是单位矢量,表示旋转的轴。则利用指数函数的泰勒展开式,有

Exp ( ξ R ) = I + θ [ u ] × + 1 2 ! θ 2 [ u ] × 2 + . . . + 1 n ! θ n [ u ] × n + . . . \text{Exp}(\bf{\xi_R})=I+\theta[\bf{u}]_\times+\frac{1}{2!}\theta^2[\bf{u}]_\times^2+...+\frac{1}{n!}\theta^n[\bf{u}]_\times^n+... Exp(ξR)=I+θ[u]×+2!1θ2[u]×2+...+n!1θn[u]×n+...

注意到

[ u ] × 2 = u u T − I [ u ] × 3 = − [ u ] × \begin{aligned} [\bf{u}]_\times^2&=\bf{u}\bf{u}^T-I \\ [\bf{u}]_\times^3&=-[\bf{u}]_\times \end{aligned} [u]×2[u]×3=uuTI=[u]×

[ u ] × 4 = − [ u ] × 2 [ u ] × 5 = [ u ] × [ u ] × 6 = [ u ] × 2 [ u ] × 7 = − [ u ] × . . . \begin{aligned} [\bf{u}]_\times^4&=-[\bf{u}]_\times^2 \\ [\bf{u}]_\times^5&=[\bf{u}]_\times \\ [\bf{u}]_\times^6&=[\bf{u}]_\times^2 \\ [\bf{u}]_\times^7&=-[\bf{u}]_\times \\ ... \end{aligned} [u]×4[u]×5[u]×6[u]×7...=[u]×2=[u]×=[u]×2=[u]×

于是我们对展开式分离奇偶项,可得

Exp ( ξ R ) = I + ( θ − 1 3 ! θ 3 + 1 5 ! θ 5 − . . . ) [ u ] × + ( 1 2 ! θ 2 − 1 4 ! θ 4 + . . . ) [ u ] × 2 \text{Exp}(\bf{\xi_R})=I+(\theta-\frac{1}{3!}\theta^3+\frac{1}{5!}\theta^5-...)[\bf{u}]_\times+(\frac{1}{2!}\theta^2-\frac{1}{4!}\theta^4+...)[\bf{u}]_\times^2 Exp(ξR)=I+(θ3!1θ3+5!1θ5...)[u]×+(2!1θ24!1θ4+...)[u]×2

又注意到

sin ⁡ θ = θ − 1 3 ! θ 3 + 1 5 ! θ 5 − . . . cos ⁡ θ = 1 − 1 2 ! θ 2 + 1 4 ! θ 4 − . . . \begin{aligned} \sin\theta&=\theta-\frac{1}{3!}\theta^3+\frac{1}{5!}\theta^5-... \\ \cos\theta&=1-\frac{1}{2!}\theta^2+\frac{1}{4!}\theta^4-... \end{aligned} sinθcosθ=θ3!1θ3+5!1θ5...=12!1θ2+4!1θ4...

最终可得

Exp ( ξ R ) = I + sin ⁡ θ [ u ] × + ( 1 − cos ⁡ θ ) [ u ] × 2 \text{Exp}(\bf{\xi_R})=I+\sin\theta[\bf{u}]_\times+(1-\cos\theta)[\bf{u}]_\times^2 Exp(ξR)=I+sinθ[u]×+(1cosθ)[u]×2

这就是众所周知的罗德里格斯变换。

s e ( 3 ) se(3) se(3) S E ( 3 ) SE(3) SE(3)

ξ = ( ξ R T , ξ t T ) T \xi=(\xi_R^T, \xi_t^T)^T ξ=(ξRT,ξtT)T。同样定义

Exp ( ξ ) = exp ⁡ ( Λ ( ξ ) ) \text{Exp}(\xi)=\exp(\Lambda(\xi)) Exp(ξ)=exp(Λ(ξ))

推导方式与处理 S O ( 3 ) SO(3) SO(3)时完全一样,首先计算泰勒级数,可以得到

Exp ( ξ ) = ( ∑ 1 n ! θ n [ u ] × n ( ∑ 1 n ! θ n − 1 [ u ] × n − 1 ) ξ t 0 1 ) \text{Exp}(\xi)= \begin{pmatrix} \sum\frac{1}{n!}\theta^n[\bf{u}]_\times^n & (\sum\frac{1}{n!}\theta^{n-1}[\bf{u}]_\times^{n-1})\xi_t \\ 0 & 1 \end{pmatrix} Exp(ξ)=(n!1θn[u]×n0(n!1θn1[u]×n1)ξt1)

矩阵中左上角元素就是 s o ( 3 ) so(3) so(3)的指数映射,而另外一项,同样利用三角函数极数的对照关系,可以得到

Exp ( ξ ) = ( R V ξ t 0 1 ) \text{Exp}(\xi)= \begin{pmatrix} R & V\xi_t \\ 0 & 1 \end{pmatrix} Exp(ξ)=(R0Vξt1)

其中

R = I + sin ⁡ θ [ u ] × + ( 1 − cos ⁡ θ ) [ u ] × 2 V = I + 1 − cos ⁡ θ θ [ u ] × + θ − sin ⁡ θ θ [ u ] × 2 \begin{aligned} R&=I+\sin\theta[\bf{u}]_\times+(1-\cos\theta)[\bf{u}]_\times^2 \\ V&=I+\frac{1-\cos\theta}{\theta}[\bf{u}]_\times+\frac{\theta-\sin\theta}{\theta}[\bf{u}]_\times^2 \end{aligned} RV=I+sinθ[u]×+(1cosθ)[u]×2=I+θ1cosθ[u]×+θθsinθ[u]×2

s e k + 1 ( 3 ) se_{k+1}(3) sek+1(3) S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)

简单计算即可发现, s e k + 1 ( 3 ) se_{k+1}(3) sek+1(3)的指数映射就是 s e ( 3 ) se(3) se(3)的简单扩展,这里直接给出结果。设 ξ = ( ξ R T , ξ t T , ξ p 1 T , . . . , ξ p k T ) T \xi=(\xi_R^T, \xi_t^T, \xi_{p_1}^T, ..., \xi_{p_k}^T)^T ξ=(ξRT,ξtT,ξp1T,...,ξpkT)T,则

Exp ( ξ ) = ( R V ξ t V ξ p 1 . . . V ξ p k 0 1 0 . . . 0 0 0 1 . . . 0 ⋮ 0 0 0 . . . 1 ) \text{Exp}(\xi)= \begin{pmatrix} R & V\xi_t &V\xi_{p_1} & ... & V\xi_{p_k} \\ 0 & 1 & 0 & ... & 0 \\ 0 & 0 & 1 & ... & 0 \\ \vdots \\ 0 & 0 & 0 & ... & 1 \end{pmatrix} Exp(ξ)=R000Vξt100Vξp1010............Vξpk001

其中

R = I + sin ⁡ θ [ u ] × + ( 1 − cos ⁡ θ ) [ u ] × 2 V = I + 1 − cos ⁡ θ θ [ u ] × + θ − sin ⁡ θ θ [ u ] × 2 \begin{aligned} R&=I+\sin\theta[\bf{u}]_\times+(1-\cos\theta)[\bf{u}]_\times^2 \\ V&=I+\frac{1-\cos\theta}{\theta}[\bf{u}]_\times+\frac{\theta-\sin\theta}{\theta}[\bf{u}]_\times^2 \end{aligned} RV=I+sinθ[u]×+(1cosθ)[u]×2=I+θ1cosθ[u]×+θθsinθ[u]×2

一些指数映射的其他性质

当两个矩阵满足交换律时,即 A B = B A AB=BA AB=BA时,有

e A e B = e A + B e^Ae^B=e^{A+B} eAeB=eA+B

指数映射的行列式与矩阵的迹还有如下一个美妙关系

d e t ( e A ) = e t r ( A ) det(e^A)=e^{tr(A)} det(eA)=etr(A)

群伴随

这里省去很多关于伴随的导出过程,直接给出其定义。

S O ( 3 ) SO(3) SO(3)的伴随

R ∈ S O ( 3 ) , ξ ∈ s o ( 3 ) R\in SO(3), \xi \in so(3) RSO(3),ξso(3),则在 R R R处的伴随记为 A d R Ad_R AdR,定义为

R ⋅ Exp ( ξ ) = Exp ( A d R ⋅ ξ ) ⋅ R R\cdot \text{Exp}(\xi) = \text{Exp}(Ad_R\cdot \xi)\cdot R RExp(ξ)=Exp(AdRξ)R

下面给出 A d R Ad_R AdR的具体形式。由上式可得

Exp ( A d R ⋅ ξ ) = R ⋅ Exp ( ξ ) ⋅ R − 1 = R ( ∑ n ∞ 1 n ! [ ξ ] × n ) R − 1 = ∑ n ∞ 1 n ! ( R [ ξ ] × R − 1 ) n = exp ⁡ ( R [ ξ ] × R − 1 ) = exp ⁡ ( [ R ξ ] × ) = Exp ( R ξ ) \begin{aligned} \text{Exp}(Ad_R\cdot\xi)&=R\cdot\text{Exp}(\xi)\cdot R^{-1} \\ &=R(\sum_n^{\infty}{\frac{1}{n!}[\xi]_\times^n})R^{-1} \\ &=\sum_n^{\infty}{\frac{1}{n!}(R[\xi]_\times R^{-1})^n} \\ &=\exp(R[\xi]_\times R^{-1}) \\ &=\exp([R\xi]_\times) \\ &=\text{Exp}(R\xi) \end{aligned} Exp(AdRξ)=RExp(ξ)R1=R(nn!1[ξ]×n)R1=nn!1(R[ξ]×R1)n=exp(R[ξ]×R1)=exp([Rξ]×)=Exp(Rξ)

所以有

A d R = R Ad_R=R AdR=R

关于 R [ ξ ] × R − 1 = [ R ξ ] × R[\xi]_\times R^{-1} = [R\xi]_\times R[ξ]×R1=[Rξ]×的证明可见Cross Product一文。

S E ( 3 ) SE(3) SE(3) S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)的伴随

推导方式与 S O ( 3 ) SO(3) SO(3)类似,设 T ∈ S E ( 3 ) T\in SE(3) TSE(3),即

T = ( R t 0 1 ) T= \begin{pmatrix} R & t \\ 0 & 1 \end{pmatrix} T=(R0t1)

又设 ξ = ( ξ R T , ξ t T ) T ∈ s e ( 3 ) \xi=(\xi_R^T, \xi_t^T)^T \in se(3) ξ=(ξRT,ξtT)Tse(3),有

Exp ( A d T ⋅ ξ ) = exp ⁡ ( T Λ ( ξ ) T − 1 ) = exp ⁡ ( R [ ξ R ] × R − 1 − R [ ξ R ] × R − 1 t + R ξ t 0 0 ) = exp ⁡ ( [ R ξ R ] × − [ R ξ R ] × t + R ξ t 0 0 ) = exp ⁡ ( [ R ξ R ] × [ t ] × R ξ R + R ξ t 0 0 ) = exp ⁡ ( Λ [ ( R 0 [ t ] × R R ) ( ξ R ξ t ) ] ) = Exp ( ( R 0 [ t ] × R R ) ( ξ R ξ t ) ) \begin{aligned} \text{Exp}(Ad_T\cdot\xi)&=\exp(T\Lambda(\xi) T^{-1}) \\ &=\exp \begin{pmatrix} R[\xi_R]_\times R^{-1} & -R[\xi_R]_\times R^{-1}t+R\xi_t \\ 0 & 0 \end{pmatrix} \\ &=\exp \begin{pmatrix} [R\xi_R]_\times & -[R\xi_R]_\times t+R\xi_t \\ 0 & 0 \end{pmatrix} \\ &=\exp \begin{pmatrix} [R\xi_R]_\times & [t]_\times R\xi_R+R\xi_t \\ 0 & 0 \end{pmatrix} \\ &=\exp\Bigg( \Lambda \bigg[ \begin{pmatrix} R & 0 \\ [t]_\times R & R \end{pmatrix} \begin{pmatrix} \xi_R \\ \xi_t \end{pmatrix} \bigg] \Bigg) \\ &=\text{Exp}\Bigg( \begin{pmatrix} R & 0 \\ [t]_\times R & R \end{pmatrix} \begin{pmatrix} \xi_R \\ \xi_t \end{pmatrix} \Bigg) \end{aligned} Exp(AdTξ)=exp(TΛ(ξ)T1)=exp(R[ξR]×R10R[ξR]×R1t+Rξt0)=exp([RξR]×0[RξR]×t+Rξt0)=exp([RξR]×0[t]×RξR+Rξt0)=exp(Λ[(R[t]×R0R)(ξRξt)])=Exp((R[t]×R0R)(ξRξt))

因此有

A d T = ( R 0 [ t ] × R R ) Ad_T= \begin{pmatrix} R & 0 \\ [t]_\times R & R \end{pmatrix} AdT=(R[t]×R0R)

简单计算可以发现 S E k + 1 ( 3 ) SE_{k+1}(3) SEk+1(3)的伴随也是 S E ( 3 ) SE(3) SE(3)的扩展,设 χ ∈ S E k + 1 ( 3 ) \chi \in SE_{k+1}(3) χSEk+1(3),有

A d χ = ( R 0 0 0 . . . 0 [ t ] × R R 0 0 . . . 0 [ p 1 ] × R 0 R 0 . . . 0 [ p 2 ] × R 0 0 R . . . 0 ⋮ [ p k ] × R 0 0 0 . . . R ) Ad_\chi = \begin{pmatrix} R & 0 & 0 & 0 & ... & 0\\ [t]_\times R & R & 0 & 0 &... & 0\\ [p_1]_\times R & 0 & R & 0 &... & 0 \\ [p_2]_\times R & 0 & 0 & R &... & 0 \\ \vdots \\ [p_k]_\times R & 0 & 0 & 0 &... & R \end{pmatrix} Adχ=R[t]×R[p1]×R[p2]×R[pk]×R0R00000R00000R0...............0000R

References

  1. Lie Groups for 2D and 3D Transformations
  2. Quaternion kinematics for the error-state Kalman filter
  3. Naive Lie Theory by John Stillwell
  4. The Invariant Extended Kalman Filter as a Stable Observer
  5. An EKF-SLAM algorithm with consistency property

你可能感兴趣的:(Robotics,李群,SLAM,卡尔曼滤波,李代数)