【SLAM数学基础】李群与李代数 BCH近似公式

news2025/1/15 21:00:21

三维旋转构成了三维旋转群 SO(3),其对应的李代数为 s o \mathfrak{so} so(3);三维变换构成了三维变换群 SE(3),其对应的李代数为 s e \mathfrak{se} se(3)。

1.指数映射

李代数元素到李群元素的映射为指数映射,其中 s o \mathfrak{so} so(3) 至 SO(3) 的指数映射为:

exp ⁡ ( ϕ ∧ ) = R = Exp ( ϕ ) \exp(\bm{\phi}^{\wedge}) = \bm{R} = \text{Exp}(\bm{\phi}) exp(ϕ)=R=Exp(ϕ)

具体计算公式由罗德里格斯公式给出:

R = cos ⁡ θ ⋅ I + ( 1 − cos ⁡ θ ) n n T + sin ⁡ θ ⋅ n ∧ = exp ⁡ ( ϕ ∧ ) \bm{R} = \cos\theta \cdot \bm{I} + (1-\cos \theta) \bm{n}\bm{n}^T + \sin\theta\cdot \bm{n}^{\wedge} = \exp(\bm{\phi}^{\wedge}) R=cosθI+(1cosθ)nnT+sinθn=exp(ϕ)

其中 ϕ ∈ s o ( 3 ) \bm{\phi}\in \mathfrak{so}(3) ϕso(3) 可以分解为 ϕ = θ n \bm{\phi} =\theta\bm{n} ϕ=θn.

2.对数映射

从李群元素到李代数元素的映射为对数映射,记作

ϕ = log ⁡ ( R ) ∨ = Log ( R ) \bm{\phi} = \log(\bm{R})^{\vee} = \text{Log}(\bm{R}) ϕ=log(R)=Log(R)

其中 ϕ ∈ s o ( 3 ) \bm{\phi}\in \mathfrak{so}(3) ϕso(3) 可以分解为 ϕ = θ n \bm{\phi} =\theta\bm{n} ϕ=θn,具体的计算过程由下式给出:

θ = arccos ⁡ ( t r ( R ) − 1 2 ) R n = n \theta = \arccos\left(\frac{tr(\bm{R}) - 1}{2}\right) \\ \bm{R}\bm{n} = \bm{n} θ=arccos(2tr(R)1)Rn=n

其中 转轴 n \bm{n} n 是矩阵 R R R 特征值1对应的单位特征向量。

3. BCH公式及其线性近似表达

两个李代数指数映射乘积的完整形式,由 Baker-Campbell-Hausdorff 公式(BCH公式)给出,其展开式的前几项为:

ln ⁡ ( exp ⁡ ( A ) exp ⁡ ( B ) ) = A + B + 1 2 [ A , B ] + 1 12 [ A , [ A , B ] ] − 1 12 [ B , [ A , B ] ] + ⋯ \ln\left(\exp(A)\exp(B)\right) = A + B + \frac{1}{2}[A, B] + \frac{1}{12}[A,[A,B]] - \frac{1}{12}[B,[A,B]] + \cdots ln(exp(A)exp(B))=A+B+21[A,B]+121[A,[A,B]]121[B,[A,B]]+

其中 [ ] 为李括号。特别地,考虑 SO(3) 上的李代数 ln ⁡ ( exp ⁡ ( ϕ 1 ∧ ) exp ⁡ ( ϕ 2 ∧ ) ) ∨ \ln\left(\exp(\bm{\phi}^{\wedge}_1)\exp(\bm{\phi}^{\wedge}_2)\right)^{\vee} ln(exp(ϕ1)exp(ϕ2)),当 ϕ 1 \bm{\phi}_1 ϕ1 ϕ 2 \bm{\phi}_2 ϕ2 为小量时,小量二次以上的项可以忽略,此时 BCH 具有线性近似表达:

在这里插入图片描述

第一个近似公式表明,当对一个旋转矩阵 R 2 \bm{R}_2 R2(李代数为 ϕ 2 \bm{\phi}_2 ϕ2) 左乘一个微小旋转矩阵 R 1 \bm{R}_1 R1(李代数为 ϕ 1 \bm{\phi}_1 ϕ1)时,可以近似看作在原来的李代数 ϕ 2 \bm{\phi}_2 ϕ2 加上了一项 J l ( ϕ 2 ) − 1 ϕ 1 \bm{J}_l(\bm{\phi}_2)^{-1}\bm{\phi}_1 Jl(ϕ2)1ϕ1。同理,第二个近似公式描述了右乘一个微小旋转的情况。

因此,李代数在BCH近似下分成了左乘和右乘近似两种,使用时需要注意区分。

4. SO(3)上的BCH近似公式

BCH公式给出了李代数上的小量加法与李群上小量乘法之间的关系(李代数加法 ⇔ \Leftrightarrow 李群乘法),其线性近似公式广泛应用于各种函数的线性化。

在SO(3)中,某个旋转 R \bm{R} R 对应的李代数为 ϕ \bm{\phi} ϕ,左乘一个微小旋转,记作 Δ R \Delta \bm{R} ΔR,对应的李代数为 Δ ϕ \Delta \bm{\phi} Δϕ,那么在李群上得到的结果就是 Δ R R \Delta \bm{R} \bm{R} ΔRR,而在李代数上,根据BCH近似,为 J l ( ϕ ) − 1 Δ ϕ + ϕ \bm{J}_l(\bm{\phi})^{-1}\Delta\bm{\phi} + \bm{\phi} Jl(ϕ)1Δϕ+ϕ,合并后可以简单写成:

Δ R R = exp ⁡ ( Δ ϕ ∧ ) exp ⁡ ( ϕ ∧ ) = exp ⁡ ( ( ϕ + J l ( ϕ ) − 1 Δ ϕ ) ∧ ) \Delta \bm{R} \bm{R} = \exp(\Delta \bm{\phi}^{\wedge})\exp(\bm{\phi}^{\wedge}) = \exp \left( (\bm{\phi} + \bm{J}_l(\bm{\phi})^{-1}\Delta\bm{\phi})^{\wedge} \right) ΔRR=exp(Δϕ)exp(ϕ)=exp((ϕ+Jl(ϕ)1Δϕ))

反过来,如果在李代数上进行加法,让一个 ϕ \bm{\phi} ϕ 加上小量 Δ ϕ \Delta \bm{\phi} Δϕ,那么可以近似为李群上带左右雅克比矩阵的乘法:

exp ⁡ ( ( ϕ + Δ ϕ ) ∧ ) = exp ⁡ ( ( J l ( ϕ ) Δ ϕ ) ∧ ) exp ⁡ ( ϕ ∧ ) = exp ⁡ ( ϕ ∧ ) exp ⁡ ( ( J r ( ϕ ) Δ ϕ ) ∧ ) \exp((\bm{\phi} + \Delta \bm{\phi})^{\wedge}) = \exp((\bm{J}_l(\bm{\phi})\Delta \bm{\phi})^\wedge) \exp(\bm{\phi}^\wedge) = \exp( \bm{\phi}^\wedge) \exp((\bm{J}_r(\bm{\phi})\Delta\bm{\phi})^\wedge) exp((ϕ+Δϕ))=exp((Jl(ϕ)Δϕ))exp(ϕ)=exp(ϕ)exp((Jr(ϕ)Δϕ))

其中SO(3)的左雅克比矩阵为

J l ( θ a ) = sin ⁡ θ θ I + ( 1 − sin ⁡ θ θ ) a a T + ( 1 − cos ⁡ θ θ ) a ∧ J l − 1 ( θ a ) = θ 2 cot ⁡ θ 2 I + ( 1 − θ 2 cot ⁡ θ 2 ) a a T − θ 2 a ∧ \bm{J}_l(\theta\bm{a}) = \frac{\sin\theta}{\theta} \bm{I} + (1-\frac{\sin\theta}{\theta})\bm{a}\bm{a}^T+(\frac{1-\cos\theta}{\theta})\bm{a}^{\wedge} \\ \bm{J}^{-1}_l(\theta\bm{a}) = \frac{\theta}{2}\cot\frac{\theta}{2} \bm{I} + (1-\frac{\theta}{2}\cot\frac{\theta}{2})\bm{a}\bm{a}^T-\frac{\theta}{2}\bm{a}^{\wedge} Jl(θa)=θsinθI+(1θsinθ)aaT+(θ1cosθ)aJl1(θa)=2θcot2θI+(12θcot2θ)aaT2θa

而SO(3)的右雅克比矩阵为

J r ( ϕ ) = J l ( − ϕ ) \bm{J}_r(\bm{\phi}) = \bm{J}_l(-\bm{\phi}) Jr(ϕ)=Jl(ϕ)

值得注意的是,由于李代数 ϕ \bm{\phi} ϕ 可以和旋转矩阵 R \bm{R} R 简单地对应起来,因此有时也把 J r ( ϕ ) \bm{J}_r(\bm{\phi}) Jr(ϕ) 简单地记作 J r ( R ) \bm{J}_r(\bm{R}) Jr(R) 而不是 J r ( Log ( R ) ) \bm{J}_r(\text{Log}(\bm{R})) Jr(Log(R))。另外,在很多情况下,也会省略 J r ( ϕ ) \bm{J}_r(\bm{\phi}) Jr(ϕ) 括号里的内容,而直接记为 J r \bm{J}_r Jr J l \bm{J}_l Jl,这都是为了让公式看上去更加简洁。

参考教程

  1. 自动驾驶与机器人中的SLAM技术:从理论到实践/高翔著. —北京:电子工业出版社,2023.8
  2. 视觉SLAM十四讲:从理论到实践/高翔等著.— 2版. —北京:电子工业出版社,2019.9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1057816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第五十五天 | 动态规划 part 12 | 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

目录 300.最长递增子序列思路代码 674. 最长连续递增序列思路代码 718. 最长重复子数组思路代码 300.最长递增子序列 Leetcode 思路 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度递推公式:if (nums[i] > nums[j]) dp[i] max(dp[i], dp[j] 1)初…

力扣:118. 杨辉三角(Python3)

题目: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官…

linux 笔记:远程服务器登录jupyter notebook

1 生成jupyter notebook 配置文件(服务器端) jupyter notebook --generate-config #Writing default config to: /home/shuailiu/.jupyter/jupyter_notebook_config.py2 Ipython中设置密码(服务器端) 3 修改jupyter 配置文件&…

QT实现TCP服务器客户端搭建的代码,现象

1.效果 2.服务器&#xff1a; 2.1&#xff1a;ui界面 2.2&#xff1a;头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QList> #include <QMessageBox> #include <QDeb…

pip常用操作

目录 1. 下载库1.1. 常规安装1.1.1. 不指定版本(默认为最新)1.1.2. 指定版本 1.2. 配置镜像1.2.1. 使用临时镜像1.2.2. 使用永久镜像1.2.2.1. 命令行配置1.2.2.2. 配置文件配置 2. 删除库3. 删除缓存4. 更新4.1. 更新pip4.2. 更新某个包 5. 项目依赖文件5.1. 给项目添加 requir…

(高阶) Redis 7 第18讲 RedLock 分布式锁

🌹 以下分享 RedLock 分布式锁,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分享😀 问题 分布式锁问题从(高阶) Redis 7 第17讲 分布式锁 实战篇_PJ码匠人的博客-CSDN博客 这篇文章来看,…

基于Java的宠物用品商城设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

vscode 注释插件koroFileHeader

https://blog.51cto.com/u_15785499/5664323 https://blog.csdn.net/weixin_67697081/article/details/129004675

【精彩回顾】 用sCrypt在Bitcoin上构建智能合约(2)

2023年3月30日&#xff0c;sCrypt首席执行官刘晓晖在英国伦敦nChain做了题为“用sCrypt在Bitcoin上构建智能合约”的演讲&#xff0c;并与现场来宾进行了深入交流、互动。这次课程着重讲解了 BSV 智能合约的基础概念&#xff0c;以及如何利用 sCrypt 的相关工具构建应用。 ▲英…

密码技术 (6) - 证书

一. 前言 前面介绍的公钥密码和数字签名&#xff0c;都无法解决一个问题&#xff0c;那就是判断自己获取的公钥是否期望的&#xff0c;不能确定公钥是否被中间攻击人掉包。所以&#xff0c;证书的作用是用来证明公钥是否合法的。本文介绍的证书就是解决证书的可靠性的技术。 二…

从 0 到 1 ,手把手教你编写《消息队列》项目(Java实现) —— 核心类持久化存储

文章目录 一、持久化存储的方式与路径二、公共模块序列化 / 反序列化异常规定 三、持久化存储数据库数据管理文件数据管理读写规定新增 /删除规定内存中 Message 的规定存储规定代码编写 硬盘数据管理 一、持久化存储的方式与路径 交换机,队列,绑定关系,这些我们使用数据库来管…

【数据结构--八大排序】之希尔排序

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

从零手搓一个【消息队列】实现虚拟主机的核心功能

文章目录 一、虚拟主机设计二、实现虚拟主机1, 创建 VirtualHost 类2, VirtualHost() 构造方法3, exchangeDeclare() 创建交换机4, exchageDelete() 删除交换机5, queueDeclare() 创建队列6, queueDelete() 删除队列7, queueBind() 创建绑定8, queueUnBind() 删除绑定9, basicP…

基于Java的高校办公室会议行政事务管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

电气基础——电源、变压器、接触器、断路器、线缆

目录 1.电源 2.变压器 三项电和2相电的转换 3.接触器 4.断路器 5.线缆 1.电源 2.变压器 三项电和2相电的转换 三相电转为2相电 1.变压器 2.相位移转换器 3.电容器 两相电变不了三相电。但是两相电可以通过电容移相后带动三相电机 零线&#xff0c;地线N&#xff…

VD6283TX环境光传感器驱动开发(1)----获取ID

VD6283TX环境光传感器驱动开发----1.获取ID 概述视频教学样品申请源码下载模块参数IIC接线方式设备ID生成STM32CUBEMX串口配置 IIC配置串口重定向模块地址获取ID主函数结果演示 概述 环境光传感器是一种光电探测器&#xff0c;能够将光转换为电压或者电流&#xff0c;使用多光…

适合在校学生的云服务器有哪些?

随着云计算技术的发展&#xff0c;越来越多的学生开始使用云服务器来进行学习和实践。对于学生来说&#xff0c;选择一款便宜的云服务器不仅可以帮助他们降低成本&#xff0c;还可以提高学习和实践的效率。本文将介绍几款适合学生使用的便宜云服务器。 1、腾讯云学生服务器【点…

最新反编译小程序教程(支持分包一键反编译),反编译成功率高达99%

最新反编译小程序教程&#xff08;支持分包一键反编译&#xff09;&#xff0c;反编译成功率高达99% 优点&#xff1a; 1.支持多个分包以及主包一次性反编译&#xff1b; 2.使用wxappUnpacker无法进行解析的小程序包&#xff0c;一键反编译解析&#xff08;咱没有发现反编译失败…

【面试经典150 | 矩阵】生命游戏

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a; O ( m n ) O(mn) O(mn) 额外空间方法二&#xff1a; O ( 1 ) O(1) O(1) 额外空间 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专…

Explain执行计划字段解释说明---select_type、table、patitions字段说明

1、select_type的类型有哪些 2、select_type的查询类型说明 1、SIMPLE 简单的 select 查询,查询中不包含子查询或者UNION 2、PRIMARY 查询中若包含任何复杂的子部分&#xff0c;最外层查询则被标记为Primary 3、DERIVED 在FROM列表中包含的子查询被标记为DERIVED(衍生)&…