【视觉SLAM十四讲学习笔记】第四讲——李代数求导与扰动模型

news2024/11/25 22:25:16

专栏系列文章如下:
【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍
【视觉SLAM十四讲学习笔记】第二讲——初识SLAM
【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵
【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角
【视觉SLAM十四讲学习笔记】第三讲——四元数
【视觉SLAM十四讲学习笔记】第三讲——Eigen库
【视觉SLAM十四讲学习笔记】第四讲——李群与李代数基础
【视觉SLAM十四讲学习笔记】第四讲——指数映射

BCH公式与近似形式

使用李代数的一大动机是进行优化,而在优化过程中导数是非常重要的信息。虽然我们已经清楚了SO(3)和SE(3)上的李群与李代数关系,但是当在SO(3)中完成两个矩阵乘法时,李代数中so(3)上发生了什么改变呢?反过来说,当so(3)上做两个李代数的加法时,SO(3)上是否对应着两个矩阵的乘积?

如果成立,相当于:
在这里插入图片描述
如果ϕ_1,ϕ_2为标量,那么显然该式成立;但此处我们计算的是矩阵的指数函数,而非标量的指数。换言之,我们在研究下式是否成立:
在这里插入图片描述
很遗憾,该式在矩阵时并不成立。两个李代数指数映射乘积的完整形式,由BCH公式给出。由于其完整形式较复杂,我们只给出其展开式的前几项,其中[ ]为李括号:
在这里插入图片描述
上面的BCH公式告诉我们,当处理两个矩阵指数之积时,它们会产生一些由李括号组成的余项。特别地,考虑SO(3)上的李代数ln(exp(ϕ_1^)exp(ϕ_2 ^))∨,当ϕ_1或ϕ_2为小量时,小量二次以上的项都可以被忽略。此时,BCH拥有线性近似表达:
在这里插入图片描述
以第一个近似为例。该式告诉我们,当对一个旋转矩阵R_2(李代数为ϕ_2)左乘一个微小旋转矩阵R_1(李代数为ϕ_1)时,可以近似地看作,在原有的李代数ϕ_2上加上了一项J_l(ϕ_2)-1ϕ_1。同理,第二个近似描述了右乘一个微小位移的情况。于是,李代数在BCH近似下,分成了左乘近似和右乘近似两种。而右乘雅可比仅需要对自变量取负号即可:
在这里插入图片描述
这样,我们就可以谈论李群乘法和李代数加法的关系了。为了方便理解,我们重新叙述BCH近似的意义。假定对于某个旋转R,对应的李代数为ϕ。我们给他左乘一个微小旋转,记作ΔR,对应的李代数为Δϕ。那么,在李群上,得到的结果就是ΔR·R,而在李代数上,根据BCH近似,为J_l-1(ϕ) Δϕ+ϕ。合并起来,可以简单地写成:
在这里插入图片描述
反之,如果我们在李代数上进行加法,让一个ϕ加上Δϕ,那么可以近似为李群上带左右雅可比的乘法:
在这里插入图片描述
这就为之后李代数上做微积分提供了理论基础。同样地,对于SE(3),也有类似的BCH近似:
在这里插入图片描述

SO(3)上的李代数求导

在SLAM中,要估计一个相机的位置和姿态,该位姿是由SO(3)上的旋转矩阵或SE(3)上的变换矩阵描述的。设某个时刻机器人的位姿为T,它观察到了一个世界坐标位于p的点,产生了一个观测数据z。由坐标变换关系知:
在这里插入图片描述
其中w为随机噪声。由于它的存在,z 往往不可能精确地满足z=Tp的关系。所以通常会计算理想的观测与实际数据的误差:
在这里插入图片描述假设一共有N个这样的路标点和观测,于是就有N个上式。那么,对机器人的位姿估计,相当于是寻找一个最优的T,使得整体误差最小化:
在这里插入图片描述
求解此问题,需要计算目标函数J关于变换矩阵T的导数。重点是构建与位姿有关的函数,讨论该函数关于位姿的导数,以调整当前的估计值。然而SO(3),SE(3)上并没有良好定义的加法,它们是群。如果把T当成一个普通矩阵来处理优化,那就必须对它加以约束(旋转矩阵的约束是行列式值唯一,计算复杂)。而从李代数角度来说,由于李代数由向量组成,具有良好的加法运算。

因此,使用李代数解决求导问题的思路分为两种:

  1. 用李代数表示姿态,然后根据李代数加法来对李代数求导

  2. 对李群左乘右乘微小扰动,然后对该扰动求导,称为左扰动和右扰动模型。

第一种方式对应到李代数的求导模型,而第二种则对应到扰动模型。

李代数求导

首先,考虑SO(3)上的情况。假设对一个空间点p进行了旋转,得到了Rp。计算旋转之后点的坐标相对于旋转的导数,我们非正式地记为 :
在这里插入图片描述
由于SO(3)没有加法,所以该导数无法按照导数的定义进行计算。设R对应的李代数为ϕ,转而计算:
在这里插入图片描述
按照导数的定义,推导出了旋转后的点相对于李代数的导数:
在这里插入图片描述
不过,由于这里仍然含有形式比较复杂的雅可比式,我们不太希望计算它。而下面的扰动模型则提供了更简单的导数计算方式。

扰动模型(左乘)

另一种求导方式是对R进行一次扰动ΔR,看结果相对于扰动的变化率。这个扰动可以乘在左边也可以乘在右边,最后结果会有一点微小的差异,我们以左扰动为例。设左扰动ΔR对应的李代数为φ。然后对φ求导,即:
在这里插入图片描述
相比于直接对李代数求导,省去了一个雅可比矩阵的计算。这使得扰动模型更为实用,在位姿估计当中具有重要的意义。

SE(3)上的李代数求导

最后,我们给出SE(3)上的扰动模型,而直接李代数上的求导就不再介绍了。假设某空间点p经过一次变换T(对应李代数为ξ),得到TP

现在,给T左乘一个扰动∆T = exp(δξ∧),设扰动项的李代数为 δξ = [δρϕ]T,那么:
在这里插入图片描述
我们把最后的结果定义成一个算符,它把一个齐次坐标的空间点变换成一个4×6的矩阵。

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

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

相关文章

C#解析U8C返回的JSON

一、业务背景 最近项目需要与U8c对接,实现增删改查,借此机会,梳理一下C#解析Json字符串的问题。 这篇文章,先以查询接口为例。 二、查询接口 首先以一个查询接口为例。 访问U8c接口 string res sendPost(url, strdata, tran…

Docker网络模式:深度理解与容器网络配置

Docker 的网络模式是容器化应用中一个关键而复杂的方面。本文将深入讨论 Docker 的网络模式,包括基本概念、常用网络模式以及高级网络配置,并通过更为丰富和实际的示例代码,帮助读者全面掌握如何理解和配置容器网络。 Docker网络基础 1 Doc…

聚类笔记:聚类算法评估指标

1 内部评估方法 当一个聚类结果是基于数据聚类自身进行评估的,这一类叫做内部评估方法。如果某个聚类算法聚类的结果是类间相似性低,类内相似性高,那么内部评估方法会给予较高的分数评价。不过内部评价方法的缺点是: 这些评估方法…

阿里云部署k8s with kubesphere

阿里云ESC 创建实例 填入密码即可 云上的防火墙相关设置就是安全组 vpc 专有网络 划分私有ip 子网 vpc 隔离环境域 不同的vpc下 即使相同的子网也不互通 使用交换机继续划分子网 停止 释放 不收钱 k8s 服务器 4核8G*1 8核16G *2 git 创建凭证 pipeline 发邮箱 (p124)…

2019年第八届数学建模国际赛小美赛B题数据中心冷出风口的设计解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 B题 数据中心冷出风口的设计 原题再现: 这是数据中心空调设计面临的一个问题。在一些数据中心,计算机机柜是开放的,在一个房间里排列成三到四排。冷却后的空气通过主管进入房间,并分为三到四个…

XUbuntu22.04之HDMI显示器设置竖屏(一百九十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

五:爬虫-数据解析之xpath解析

五:数据解析之xpath解析 1.xpath介绍: ​ xpath是XML路径语言,它可以用来确定xml文档中的元素位置,通过元素路径来完成对元素的查找,HTML就是XML的一种实现方式,所以xpath是一种非常强大的定位方式​ XPa…

国际语音群呼系统有哪些应用场景?

国际语音群呼可应用于广告营销、消息通知、客情维护、金融催收等场景,助力出海企业产品营销和品牌推广。 广告营销 出海企业可以通过国际语音群呼系统,向目标市场的潜在客户进行广告宣传。例如,企业可以在系统中录制有关产品的宣传语&#…

大模型应用_PrivateGPT

https://github.com/imartinez/privateGPT 1 功能 整体功能,想解决什么问题 搭建完整的 RAG 系统,与 FastGPT相比,界面比较简单。但是底层支持比较丰富,可用于知识库的完全本地部署,包含大模型和向量库。适用于保密级…

STM32在CTF中的应用和快速解题

题目给的是bin文件,基本上就是需要我们手动修复的固件逆向。 如果给的是hex文件,我们可能需要使用MKD进行动态调试 主要还是以做题为目的 详细的可以去看文档:https://pdf1.alldatasheet.com/datasheet-pdf/view/201596/STMICROELECTRONIC…

ZLMediaKit 编译以及测试(Centos 7.9 环境)

文章目录 一、前言二、编译器1、获取代码2、编译器2.1 编译器版本要求2.2 安装编译器 3、安装cmake4、依赖库4.1 依赖库列表4.2 安装依赖库4.2.1 安装libssl-dev和libsdl-dev4.2.2 安装 ffmpeg-devel依赖和ffmpeg依赖 三、构建和编译项目(启用WebRTC功能&#xff09…

三大循环语句

goto 我们看代码去感受goto的循环,那么goto循环最经常搭配的就是loop,那么就像如下代码 这个代码中loop:就是个标志,然后程序正常向下运行,goto loop;就会让她回到loop,然后在运行到goto loop…

解决nuxt3引入图片报错:ReferenceError: require is not defined

现象: 原因:在nuxt3中不支持require的方式引入图片/文件等静态资源。 解决办法: 1. 直接在img标签中的src属性里写明图片的路径,但是此时src前面不能有冒号做动态绑定!: src"/assets/images/loading…

在IDEA中使用Git 、远程仓库克隆工程到本地

4.1 在IDEA中配置Git 安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。 选择File→Settings打开设置窗口,找到Version Control下的git选项&…

产品经理之如何编写竞品分析(医疗HIS系统管理详细案例模板)

目录 一.项目周期 二.竞品分析的目的 三.竞品分析包含的维度 四.如何选择竞品 五.竞品画布 六.案例模板 一.项目周期 在整个项目的周期,产品经理所做的事情主要在项目前期做市场分析、需求调研等,下面一张图概况了整个项目周期产品经理、开发工程师…

c++ qt 窗口开发中 俩按钮组合 配合 显影 已解决

在日常项目中,有这么需求,还想窗口移动,还想 右侧关闭 还能tab栏点击显影的需求,不得使用 qt模拟点击事件 进行功能优化 特大杯 大杯 控制 窗口显影, 咖啡 按钮 显示窗口 可乐 豆浆 不显示窗口 四个按钮的 互斥关…

智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.共生生物算法4.实验参数设定5.算法结果6.…

hive常用SQL函数及案例

1 函数简介 Hive会将常用的逻辑封装成函数给用户进行使用,类似于Java中的函数。 好处:避免用户反复写逻辑,可以直接拿来使用。 重点:用户需要知道函数叫什么,能做什么。 Hive提供了大量的内置函数,按照其特…

Unity中的ShaderToy

文章目录 前言一、ShaderToy网站二、ShaderToy基本框架1、我们可以在ShaderToy网站中,这样看用到的GLSL文档2、void mainImage 是我们的程序入口,类似于片断着色器3、fragColor作为输出变量,为屏幕每一像素的颜色,alpha一般赋值为…

17.分割有效信息【2023.12.9】

1.问题描述 有时候我们需要截取字符串以获取有用的信息,比如对于字符串 “日期:2010-10-29”,我们需要截取后面的 10 个字符来获取日期,以便进行进一步分析。编写一个程序,输入一个字符串,然后输出截取后的…