【原创】SLAM学习笔记(四)李群和李代数

一、李群与李代数

1、群

定义:群是一种集合加上一种运算的代数结构。我们把集合记作 A A A,运算记作·,那么群可以记作 G = ( A , ⋅ ) G=(A,\cdot) G=(A,)。群要求这个运算满足以下几个条件:

  • 封闭性: ∀ a 1 , a 2 ∈ A , a 1 ⋅ a 2 ∈ A \forall a_1,a_2 \in A, a_1\cdot a_2 \in A a1,a2A,a1a2A
  • 结合律: ∀ a 1 , a 2 , a 3 ∈ A , ( a 1 ⋅ a 2 ) ⋅ a 3 = a 1 ⋅ ( a 2 ⋅ a 3 ) \forall a_1,a_2,a_3 \in A, (a_1\cdot a_2) \cdot a_3 = a_1\cdot(a_2\cdot a_3) a1,a2,a3A,(a1a2)a3=a1(a2a3)
  • 幺元: ∃ a 0 ∈ A , ∀ a ∈ A , a 0 ⋅ a = a ⋅ a 0 = a \exists a_0\in A, \forall a \in A, a_0\cdot a=a\cdot a_0=a a0A,aA,a0a=aa0=a
  • 逆: ∀ a ∈ A , ∃ a − 1 ∈ A , ∀ a ⋅ a − 1 = a \forall a \in A, \exists a^{-1} \in A, \forall a \cdot a^{-1}=a aA,a1A,aa1=a

例如:整数和加法就可以组成一个群

2、李群与李代数

李群:具有连续(光滑)性质的群
李代数:由集合 V \mathbb V V和数域 F \Bbb F F以及二元运算 [ , ] [,] [,]组成,且满足以下条件

  • 封闭性: ∀ X , Y ∈ V , [ X , Y ] ∈ V \forall X,Y \in \mathbb V, [X,Y] \in \mathbb V X,YV,[X,Y]V
  • 双线性: ∀ X , Y , Z ∈ V , a , b ∈ F , [ a X + b Y , Z ] = a [ X , Z ] + b [ Y , Z ] , [ Z , a X + b Y ] = a [ Z , X ] + b [ Z , Y ] \forall X,Y,Z\in \mathbb V, a,b \in F, [aX+bY,Z]=a[X,Z]+b[Y,Z], [Z,aX+bY]=a[Z,X]+b[Z,Y] X,Y,ZV,a,bF,[aX+bY,Z]=a[X,Z]+b[Y,Z],[Z,aX+bY]=a[Z,X]+b[Z,Y]
  1. 自反性: ∀ X ∈ V , [ X , X ] = 0 \forall X\in \mathbb V, [X,X]=0 XV,[X,X]=0
  2. 雅可比等价: ∀ X , Y , Z ∈ V , [ X , [ Y , Z ] ] + [ Z , [ X , Y ] ] + [ Y , [ Z , X ] ] = 0 \forall X,Y,Z\in \mathbb V, [X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0 X,Y,ZV,[X,[Y,Z]]+[Z,[X,Y]]+[Y,[Z,X]]=0

李群和李代数在刚体运动中应用

对于任意的旋转矩阵 R R R,有如下性质,
R R T = 1 (1) RR^T=1 \tag1 RRT=1(1)
。认为刚体在空间中是连续运动的,则可以认为旋转矩阵 R R R是一个随着时间t变化的函数,即
R ( t ) R ( t ) T = I (2) R(t)R(t)^T=I\tag2 R(t)R(t)T=I(2)
,同时对其两边进行求导可得,
R ˙ ( t ) R T ( t ) + R T ( t ) R ˙ ( t ) = 0 (3) \dot R(t)R^T(t)+R^T(t)\dot R(t)=0\tag3 R˙(t)RT(t)+RT(t)R˙(t)=0(3)
即(等式3由矩阵乘法 A B = ( B T A T ) T AB=(B^TA^T)^T AB=(BTAT)T得到)
R ˙ ( t ) R T ( t ) = − ( R T ( t ) R ˙ ( t ) ) = − ( R R ˙ T ( t ) ) T \dot R(t)R^T(t)=-(R^T(t)\dot R(t))=-(R\dot R^T(t))^T R˙(t)RT(t)=(RT(t)R˙(t))=(RR˙T(t))T
由之前的反对称矩阵性值的知识可以看出 R ˙ ( t ) R T ( t ) \dot R(t)R^T(t) R˙(t)RT(t)就是一个反对称矩阵,则此时等式两边同时右乘 R ( t ) R(t) R(t)可得到,
R ˙ ( t ) = ϕ ^ ( t ) R ( t ) \dot R(t)=\phi\hat{}(t)R(t) R˙(t)=ϕ^(t)R(t)
设有随时间变化的旋转矩阵函数 R ( t ) R(t) R(t) t = t 0 t=t_0 t=t0时刻 R ( 0 ) = I R(0)=I R(0)=I,则在 t = 0 t=0 t=0附近将此函数进行泰勒展开
R ( t ) ≈ R ( t 0 ) ( t − t 0 ) = I + ϕ ^ ( t 0 ) ( t ) R(t)\approx R(t_0)(t-t_0)=I+\phi\hat{}(t_0)(t) R(t)R(t0)(tt0)=I+ϕ^(t0)(t)
ϕ ^ ( t 0 ) \phi\hat{}(t_0) ϕ^(t0)在0时刻为常量 ϕ ^ 0 \phi\hat{}_0 ϕ^0
R ˙ ( t ) = ϕ ^ 0 R ( t ) \dot R(t)=\phi\hat{}_0R(t) R˙(t)=ϕ^0R(t)
可以解得该微分方程
R ( t ) = exp ⁡ ( ϕ ^ 0 t ) R(t)=\exp(\phi\hat{}_0t) R(t)=exp(ϕ^0t)
由上述推导可以说明:只要给定一个时刻的 R R R,就可以求出对应的向量 ϕ \phi ϕ,且向 ϕ \phi ϕ量就是R对应的李代数

李代数so(3)

SO(3)对应的李代数是定义在 R 3 \Bbb R^3 R3上的向量,我们记作 ϕ \phi ϕ。根据前面的推倒,每一个 ϕ \phi ϕ都可以写成一个反对称矩阵:
Φ = ϕ ^ = ( 0 − ϕ 3 ϕ 2 ϕ 3 0 − ϕ 1 − ϕ 2 ϕ 1 0 ) ∈ R 3 x 3 \Phi=\phi\hat{}=\left(\begin{matrix} 0 & -\phi_3&\phi_2\\ \phi_3&0&-\phi_1\\ -\phi_2&\phi_1&0 \end{matrix}\right) \in \Bbb R^{3x3} Φ=ϕ^=0ϕ3ϕ2ϕ30ϕ1ϕ2ϕ10R3x3
在此定义下,两个向量 ϕ 1 \phi_1 ϕ1, ϕ 2 \phi_2 ϕ2的李括号为
[ ϕ 1 , ϕ 2 ] = ( Φ 1 Φ 2 − Φ 2 Φ 1 ) ∨ [\phi_1,\phi_2]=(\Phi_1\Phi_2-\Phi_2\Phi_1)^\lor [ϕ1,ϕ2]=(Φ1Φ2Φ2Φ1)

( ∨ ^\lor ∧ ^\land 的逆运算)

由于向量 ϕ \phi ϕ和反对称矩阵一一对应,就说 s o ( 3 ) so(3) so(3)的元素是三为向量或者三为向量的反对称矩阵不加区别:
s o ( 3 ) = { ϕ ∈ R 3 , Φ = ϕ ∧ ∈ R 3 × 3 } so(3)=\{\phi\in\mathbb R^3, \Phi=\phi^\land\in\Bbb R^{3\times3}\} so(3)={ϕR3,Φ=ϕR3×3}

每个向量对应反对称矩阵,可以用表达旋转矩阵的导数,它与 S O ( 3 ) SO(3) SO(3)的关系由指数映射给定
R = exp ⁡ ( ϕ ∧ ) R=\exp(\phi^\land) R=exp(ϕ)

python实现

比如以下的demo

from liepack.liepack import so

so3 = so(3)
so3.set_vector([1,2,3])
print(so3)

print(so(3, [[ 0.,-3.,2.],
 [ 3.,0.,-1.],
 [-2.,1.,0.]]).get_vector())

由于这个so(3)基于继承了np.ndarray, 直接可以进行矩阵运算,十分好用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A.Star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值