• 视觉SLAM十四讲_4李群与李代数


    本文为b站视频的一个笔记
    SLAM中,我们经常要解下面一个问题
    F = m i n J ( T ) = Σ i = 1 N ∣ ∣ z i − T p i ∣ ∣ 2 F = minJ(T) = \Sigma_{i=1}^N||z_i - Tp_i||^2 F=minJ(T)=Σi=1N∣∣ziTpi2
    这个问题中, T是位姿变量。对于求最小值问题,我们第一步就要求函数对于变量的偏导数,比如说我们对 y = x 2 y = x^2 y=x2这个函数来说,偏导数就是 y ′ = 2 x y' = 2x y=2x, 初始值 x = 10 x = 10 x=10, 设置步长为1,那就是逐步从10->0. 直到偏导数等于0的时候,收敛至稳定解x= 0.

    这里我们要求F对T的偏导数
    然后将小量 δ T \delta T δT 加到T上去迭代

    因为表示旋转的李群SO(3)是不能直接相加的,所以这里要费一番功夫来介绍李代数的概念。

    一、群的概念

    用于机器人中表示位姿的是特殊正交群SO(3):
    S O ( 3 ) = R ∈ 3 × 3 ∣ R R T = I , d e t ( R ) = 1 SO(3) = {R\in 3\times 3| RR^T=I, det(R) = 1} SO(3)=R3×3∣RRT=I,det(R)=1
    严格的来说,群需要满足如下定义:

    1. 封闭性 ∀ a 1 , a 2 ∈ A , a 1 a 2 ∈ A \forall a_1, a_2 \in A, a_1a_2\in A a1,a2A,a1a2A
    2. 结合律 ∀ a 1 , a 2 , a 3 , a 1 a 2 a 3 = a 1 ( a 2 a 3 ) \forall a_1, a_2, a_3, a_1a_2a_3 = a_1(a_2a_3) a1,a2,a3,a1a2a3=a1(a2a3)
    3. 幺元 ∃ a 0 , s . t . ∀ a ∈ A , a 0 a = a a 0 = a \exists a_0, s.t. \forall a\in A, a_0a = aa_0 = a a0,s.t.∀aA,a0a=aa0=a
    4. ∀ a ∈ A , ∃ a − 1 ∈ A , s . t . a a − 1 = a 0 \forall a \in A, \exists a^{-1} \in A, s.t. aa^{-1}=a_0 aA,a1A,s.t.aa1=a0

    上面四个条件用人话说一遍其实就是:1. 两个这种东西相乘,本质还是这个东西。2. 先乘后乘一样。3. 有一个单位阵。4. 有个相反的东西可以让它乘了就回去。可以简单的验证,旋转矩阵集合+矩阵乘法,它是构成群的。
    李群是指连续性质的群,很显然,SO(3)是属于李群的。
    SO(3)有个缺点,那就是它是由旋转矩阵+乘法构成的,它没有加法。因此直接在SO(3)上求偏导数不行,得想其他办法。而李代数,刚好能解决这个问题。李代数对应李群的正切空间,它描述了李群局部的导数。

    二、李代数

    首先对旋转矩阵的导数形式进行了探索:
    在这里插入图片描述
    在这里插入图片描述
    也就是说,旋转矩阵是可以表示成指数形式的。那只要把 ϕ \phi ϕ找出来,就可以求旋转矩阵的导数了。

    李代数的定义

    每一个李群都有与之对应的李代数,李代数描述了李群单位元数的正切空间性质
    三维空间向量 + R 3 R^3 R3 + 叉乘运算 构成李代数
    其中,这个里面证明 ϕ \phi ϕ是一个单位向量与模长相乘,那么就可以说明它就是旋转向量。

    三、李代数求导与扰动模型

    BCH公式

    这个公式的作用,就是解决 f ( x + δ x ) f(x+\delta x) f(x+δx)是多少的问题

    KaTeX parse error: Got function '\hat' with no arguments as superscript at position 15: ln(exp(\phi_1^\̲h̲a̲t̲ ̲))

  • 相关阅读:
    硬件寿命警告!Windows11在特定情况下对【固态硬盘】执行与【机械硬盘】相同的磁盘碎片整理。
    [架构设计-1]:系统架构部门的主要角色
    一种超轻量级神经网络加速器实现
    【大数据之Hadoop】三十七、Hadoop HA高可用
    Apache Kudu的Transaction Semantics事务语义
    springcloud项目,无法在Sentinel Dashboard查看到服务的访问监控信息【解决方法】
    优化Vue项目架构和模块化:提升应用性能与开发效率
    【牛客刷题】带你在牛客刷题第八弹(简单排序)
    【java零基础入门到就业】第四天:Notepad++软件的下载和安装
    Docker更改镜像源
  • 原文地址:https://blog.csdn.net/wang_jun_whu/article/details/126904902