当前位置: 首页 > news >正文

SLAM中求导相关的公式总结

李代数与李群的关系
R ˙ R T \dot{R}R^{T} R˙RT 是一个反对称矩阵,所以这个矩阵可以用一个1×3向量进行反对称来表示
R ˙ R T = Φ ^ \dot{R}R^{T}=Φ^{\hat{}} R˙RT=Φ^
根据十四讲 4.8 的推导,最后则有 R ( t ) ˙ = Φ ^ ⋅ R ( t ) \dot{R(t)}=Φ^{\hat{}}·R(t) R(t)˙=Φ^R(t)
这个李代数 Φ Φ Φ 反映了 R R R 的导数性质,所以李代数是李群 S O ( 3 ) SO(3) SO(3) 的正切空间,因为这里李群是9维的,所以切向量也是一个空间

李代数由一个方向和夹角构成, Φ = θ a , ∣ ∣ a ⃗ ∣ ∣ = 1 Φ=θa,||\vec{a}||=1 Φ=θa∣∣a ∣∣=1
指数映射,也是罗德里格斯公式
e x p ( Φ ∧ ) = e x p ( θ a ∧ ) = c o s θ I + ( 1 − c o s θ ) a a T + s i n θ a ∧ = R exp(Φ^{\wedge})=exp(θa^{\wedge})=cosθI+(1-cosθ)aa^{T}+sinθa^{\wedge}=R exp(Φ)=exp(θa)=cosθI+(1cosθ)aaT+sinθa=R
e x p ( Φ ∧ ) = R exp(Φ^{\wedge})=R exp(Φ)=R
意思就是李代数 Φ Φ Φ 可以由角度 θ θ θ 和方向向量 a ⃗ \vec{a} a 表示,通过罗德里格斯公式可以变换成对应的旋转矩阵 S O ( 3 ) SO(3) SO(3)

用李代数表示旋转会有个问题,就是周期性,就是多个李代数可以对应一个旋转矩阵,如果固定旋转角度在±π时就是唯一对应的

由旋转矩阵 R R R 求李代数 Φ Φ Φ θ = a r c c o s t r ( R ) − 1 2 , R a = a θ=arccos\frac{tr(R)-1}{2},Ra=a θ=arccos2tr(R)1,Ra=a,由 l n ( R ) ∨ = Φ ln(R)^{\vee}=Φ ln(R)=Φ 表示

BCH一阶线性近似表达
l n ( e x p ( ϕ 1 ∧ ) e x p ( ϕ 2 ∧ ) ) ∨ ln(exp(\phi^{\wedge}_{1})exp(\phi^{\wedge}_{2}))^{\vee} ln(exp(ϕ1)exp(ϕ2))

当左边的 ϕ 1 \phi_{1} ϕ1 为小量时,此时相当于左乘,则
= > J l ( ϕ 2 ) − 1 ϕ 1 + ϕ 2 =>J_{l}(\phi_{2})^{-1}\phi_{1}+\phi_{2} =>Jl(ϕ2)1ϕ1+ϕ2
其实就是相当于在 ϕ 2 \phi_{2} ϕ2 的基础上加上微量 J l ( ϕ 2 ) − 1 ϕ 1 J_{l}(\phi_{2})^{-1}\phi_{1} Jl(ϕ2)1ϕ1

当右边的 ϕ 2 \phi_{2} ϕ2 为小量时,此时相当于右乘,则
= > J l ( ϕ 1 ) − 1 ϕ 2 + ϕ 1 =>J_{l}(\phi_{1})^{-1}\phi_{2}+\phi_{1} =>Jl(ϕ1)1ϕ2+ϕ1

SLAM中我们构建了与位姿相关的函数后,需要讨论该函数对位姿的求导,以估计当前值
有两种方法求导
1、用李代数表示位姿,根据李代数加法对李代数求导
2、对李群进行左乘或右乘进行扰动,对扰动求导

由于使用李代数求导要计算 雅可比 J J J ,这个形式比较复杂,工程中不用这个方法,都是用扰动模型,所以只看扰动模型
∂ ( R p ) ∂ φ = l i m φ → 0 e x p ( φ ∧ ) e x p ( ϕ ∧ ) p − e x p ( ϕ ∧ ) p φ \frac{\partial(Rp)}{\partial\varphi}=lim_{\varphi\rightarrow0}\frac{exp(\varphi^{\wedge})exp(\phi^{\wedge})p-exp(\phi^{\wedge})p}{\varphi} φ(Rp)=limφ0φexp(φ)exp(ϕ)pexp(ϕ)p
e x p ( φ ∧ ) exp(\varphi^{\wedge}) exp(φ) 是微量,相当于是对旋转的导数,则等于 ( I + φ ∧ ) (I+\varphi^{\wedge}) (I+φ)
具体推导如下在这里插入图片描述
左乘扰动求导
这里是旋转 R R R 对向量 p p p 进行旋转,不停地左乘扰动来改变向量 p p p 的方向,左扰动 Δ R \Delta{R} ΔR 对应的李代数 φ \varphi φ R p Rp Rp 的结果也是向量

∂ ( R p ) ∂ φ = l i m φ → 0 e x p ( φ ∧ ) e x p ( ϕ ∧ ) p − e x p ( ϕ ∧ ) p φ \frac{\partial(Rp)}{\partial\varphi}=lim_{\varphi\rightarrow0}\frac{exp(\varphi^{\wedge})exp(\phi^{\wedge})p-exp(\phi^{\wedge})p}{\varphi} φ(Rp)=limφ0φexp(φ)exp(ϕ)pexp(ϕ)p
= l i m φ → 0 ( I + φ ∧ ) e x p ( ϕ ∧ ) p − e x p ( ϕ ∧ ) p φ =lim_{\varphi\rightarrow0}\frac{(I+\varphi^{\wedge})exp(\phi^{\wedge})p-exp(\phi^{\wedge})p}{\varphi} =limφ0φ(I+φ)exp(ϕ)pexp(ϕ)p
乘进去相减,很明显
= l i m φ → 0 φ ∧ R p φ =lim_{\varphi\rightarrow0}\frac{\varphi^{\wedge}Rp}{\varphi} =limφ0φφRp

叉乘有一个性质, a ⃗ × b ⃗ = − b ⃗ × a ⃗ \vec{a}×\vec{b}=-\vec{b}×\vec{a} a ×b =b ×a
a ⃗ × b ⃗ = a ∧ ⋅ b \vec{a}×\vec{b}=a^{\wedge}·b a ×b =ab
− b ⃗ × a ⃗ = − b ∧ ⋅ a -\vec{b}×\vec{a}=-b^{\wedge}·a b ×a =ba

则上式等于
= l i m φ → 0 − ( R p ) ∧ φ φ =lim_{\varphi\rightarrow0}\frac{-(Rp)^{\wedge}\varphi}{\varphi} =limφ0φ(Rp)φ
约掉 φ \varphi φ l i m φ → 0 = − ( R p ) ∧ lim_{\varphi\rightarrow0}=-(Rp)^{\wedge} limφ0=(Rp)
这里省去了雅可比 J J J 的计算
对右乘也是一样的方法

矩阵转置的性质
( A + B ) T = A T + B T (A+B)^{T}=A^{T}+B^{T} (A+B)T=AT+BT
( λ A ) T = λ A T (\lambda{A})^{T}=\lambda{A^{T}} (λA)T=λAT
( A B ) T = B T A T (AB)^{T}=B^{T}A^{T} (AB)T=BTAT

SO(3)的伴随性质
R T E x p ( ϕ ) R = E x p ( R T ϕ ) R^{T}Exp(\phi)R=Exp(R^{T}\phi) RTExp(ϕ)R=Exp(RTϕ)
ϕ \phi ϕ 为扰动量 Δ R \Delta{R} ΔR 对应的李代数

对复合旋转进行求导

∂ L o g ( R 1 R 2 ) ∂ R 1 \frac{\partial Log(R_{1}R_{2})}{\partial R_{1}} R1Log(R1R2)

这里是对两个相乘的旋转矩阵中的其中一个旋转进行求导,上面的左乘扰动例子是对矩阵相乘向量进行求导的,所以可以直接对矩阵进行扰动

但是这里不能直接对矩阵 S O ( 3 ) SO(3) SO(3) 进行扰动,不能直接说 R 1 R 2 R_{1}R_{2} R1R2 R 1 R_{1} R1 R 2 R_{2} R2 的导数,这样就变成矩阵对向量的求导,因为扰动量是可以用向量表示的,前面的例子 R p Rp Rp 相乘后也是个向量,所以可以直接对扰动量进行求导,但是这里两个矩阵相乘还是矩阵,所以得用 L o g Log Log 将矩阵相乘结果变为李代数,这样才符合求导的定义
L o g ( R ) = l o g ( R ) ∨ Log(R)=log(R)^{\vee} Log(R)=log(R),用 L o g Log Log 就是为了懒得写 ∨ \vee

R 1 R_{1} R1 进行右扰动
∂ L o g ( R 1 R 2 ) ∂ R 1 = l i m φ → 0 L o g ( R 1 E x p ( ϕ ) R 2 ) − L o g ( R 1 R 2 ) ϕ \frac{\partial Log(R_{1}R_{2})}{\partial R_{1}}=lim_{\varphi\rightarrow0}\frac{Log(R_{1}Exp(\phi)R_{2})-Log(R_{1}R_{2})}{\phi} R1Log(R1R2)=limφ0ϕLog(R1Exp(ϕ)R2)Log(R1R2)
推导明天再写了

相关文章:

SLAM中求导相关的公式总结

李代数与李群的关系 R ˙ R T \dot{R}R^{T} R˙RT 是一个反对称矩阵,所以这个矩阵可以用一个13向量进行反对称来表示 R ˙ R T Φ ^ \dot{R}R^{T}Φ^{\hat{}} R˙RTΦ^ , 根据十四讲 4.8 的推导,最后则有 R ( t ) ˙ Φ ^ ⋅ R ( t ) \d…...

在微信小程序中怎么做投票活动

在当今社交媒体时代,微信小程序已经成为一种广泛使用的互动营销工具。通过各种活动,企业可以吸引用户的关注,提升品牌影响力。其中,投票活动是一种特别受欢迎的形式。本文将为你详细介绍如何在微信小程序中创建投票活动。 一、微信…...

如何使用 NFTScan NFT API 在 Arbitrum 网络上开发 Web3 应用

Arbitrum 是以太坊的 Layer 2 扩容方案,为以太坊面临的高 gas 费和网络拥堵问题,提供了一个解决方案。作为 Layer 1 的以太坊基础层受每秒只能验算 15 笔交易的限制,在目前以太坊使用需求庞大的情况下,局限了以太坊的可扩展性。Ar…...

线上问题排查方法

查看栈信息 先进入docker容器,docker exec -it 容器号 bash *查看线程占用排行top -Hp 1,此处PID为线程号 查看各线程情况jstack -l 1 可以将栈信息生成文件jstack -l 1 > 2.log 查看对应线程号的信息,比如要看线程号PID是28的,那么28的16进制是1C,则检索栈文件里ox1…...

智能柜+MRO:制造业中的自动售货机

每当谈及企业数字化转型,多数人想到的是人工智能、大数据等高端技术的应用,或是原有业务流程和运营方式的数字化与自动化,实现大幅降本增效等。然而,对于急需在数字时代找到生存之道的企业来说,数字化转型的要求远不止…...

flutter笔记:骨架化加载器

flutter笔记 骨架化加载器 - 文章信息 - Author: Jack Lee (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/134224135 【介绍】:本文介…...

关于视频封装格式和视频编码格式的简介

文章目录 简介视频封装格式(Video Container Format)视频编码格式(Video Compression Format)两者关系总结webm 格式简介webm视频编码格式webm音频编码格式webm总结 简介 视频封装格式(Video Container Format&#x…...

npm发布自己的包

npm发布自己的包 1. 首先在npm官网注册一个自己的账户(有账号的可以直接登录) 注册地址 2. 创建一个自己的项目(如果已有自己的项目, 跳过这一步) npm init -y3. 确认自己的npm下载源, 只能使用npm官方的地址 npm config get registry修改地址源 npm config set registr…...

【漏洞复现】weblogic-10.3.6-‘wls-wsat‘-XMLDecoder反序列化(CVE-2017-10271)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描nacsweblogicScanner3、漏洞验证 说明内容漏洞编号CVE-2017-10271漏洞名称Weblogic < 10.3.…...

CRM中的销售机会管理是什么?三个步骤帮你创建销售渠道

企业销售业务中&#xff0c;有个名词叫做“机会管理”&#xff0c;有效的机会管理可以帮助销售人员准确地抓住潜在客户群体&#xff0c;并将其转化为真正的客户、持续带来收入。CRM客户管理系统也是销售机会管理的一个重要工具&#xff0c;帮助销售人员与正确的人建立起关系&am…...

X(原Twitter)怎么发推文最有效?技巧分享

随着人们对于TikTok和INS 等社交媒体平台的热情不断高涨&#xff0c;可能渐渐忽视了X&#xff08;原Twitter&#xff09;这一不可或缺的海外社交媒体巨头。尽管 X&#xff08;原Twitter&#xff09;并未放弃其以280个字符的推文为核心的社交模式&#xff0c;但是众多流行文化和…...

Ionic 模块组件的理解

1 Ionic4.x 文件分析 1.1 app.module.ts 分析 Ionic 是一个基于 Angular 的移动应用开发框架&#xff0c;能帮助开发者使用 Web 技术&#xff08;HTML5、CSS3、JavaScript&#xff09;创建跨平台的应用程序。在 Ionic 应用程序中&#xff0c;app.module.ts 文件是整个应用程序的…...

sql:1对多获取最新一条数据

假设A表为table_a&#xff0c;B表为table_b&#xff0c;它们之间通过主键ID关联。我们可以利用窗口函数ROW_NUMBER()来获取B表中每条A记录对应的最新一条B记录。以下是SQL语句&#xff1a; SELECT a.*,b.* FROM table_a a LEFT JOIN (SELECT *,ROW_NUMBER() OVER (PARTITION B…...

CDN加速技术:降低企业云服务成本的有效利用

在当今数字化时代&#xff0c;云服务已经成为企业运营的不可或缺的一部分。然而&#xff0c;与此同时&#xff0c;云服务的需求也在不断增长&#xff0c;使企业不得不应对更大的数据传输和负载。这就引出了一个关键问题&#xff1a;如何有效降低企业云服务成本&#xff0c;同时…...

设计模式——享元模式(Flyweight Pattern)+ Spring相关源码

文章目录 一、享元模式定义二、例子2.1 菜鸟教程例子2.1.1 定义被缓存对象2.1.2 定义ShapeFactory 2.2 JDK源码——Integer2.3 JDK源码——DriverManager2.4 Spring源码——HandlerMethodArgumentResolverComposite除此之外BeanFactory获取bean其实也是一种享元模式的应用。 三…...

vue3中el-tree设置默认选中节点和展开节点

1.el-tree设置 node-key&#xff0c;current-node-key&#xff0c;default-expanded-keys&#xff0c;highlight-current&#xff1a; <el-tree ref"taskTree" :data"ptreeData" node-key"key" :current-node-key"currentKey" …...

软件测试需求分析是什么?为什么需要进行测试需求分析?

在软件开发中&#xff0c;软件测试是确保软件质量的重要环节之一。而软件测试需求分析作为软件测试的前置工作&#xff0c;对于保证软件测试的顺利进行具有重要意义。软件测试需求分析是指对软件测试的需求进行细致的分析和规划&#xff0c;以明确测试的目标、任务和范围&#…...

GreenPlum简介

简介 Greenplum是一家总部位于**美国加利福尼亚州&#xff0c;为全球大型企业用户提供新型企业级数据仓库(EDW)、企业级数据云(EDC)和商务智能(BI)提供解决方案和咨询服务的公司&#xff0c;在全球已有&#xff1a;纳斯达克&#xff0c;纽约证券交易所&#xff0c;Skype. FOX&…...

HTML和CSS入门学习

目录 一.HTML 二.CSS 1.CSS作用&#xff1a;美化页面 2.CSS语法 【1】CSS语法规范 【2】如何插入样式表 3.CSS选择器 4.CSS设置样式属性--设置html各种标签的属性 【1】文本属性--设置整段文字的样式 【2】字体属性--设置单个字的样式 【3】链接属性--设置链接的样式…...

轻量封装WebGPU渲染系统示例<17>- 使用GPU Compute之元胞自动机(源码)

注&#xff1a; 此示例通过渲染实体的渲染过程控制来实现。此实现方式繁琐&#xff0c;这里用于说明相关用法。 更简洁的实现请见: 轻量封装WebGPU渲染系统示例&#xff1c;19&#xff1e;- 使用GPU Compute材质多pass元胞自动机(源码)-CSDN博客 当前示例源码github地址: ht…...

fmx windows 下 制作无边框窗口最小化最大化并鼠标可拖移窗口

1,最顶端 放一个rectangle 置顶 ,此区域后面实现鼠标拖动 移动窗口,可在上面放置最大,最小,关闭按钮 2,窗口边框模式 设置 none 3,rectangel mousemove事件 uses Winapi.Windows,Winapi.Messages,FMX.Platform.Winprocedure TfrmMain.Rectangle1MouseMove(Sender: TObje…...

【Python】11 Conda常用命令

Conda简介 Conda是一个开源的软件包管理系统和环境管理器&#xff0c;用于安装和管理不同语言的软件包&#xff0c;如Python、R等。它可以创建独立的环境&#xff0c;每个环境都可以安装特定版本的软件包和依赖项&#xff0c;而不必担心与其他环境冲突。Conda还可以轻松地在不…...

5G边缘计算网关 是什么?

5G边缘计算网关&#xff1a;智能设备的云端控制与数据采集 随着物联网技术的不断发展&#xff0c;5G边缘计算网关正在成为智能设备领域的一种重要技术。这种智能网关具备强大的功能&#xff0c;可以完成本地计算、消息通信、数据缓存等任务&#xff0c;同时支持云端远程配置和…...

mac电脑系统清理软件CleanMyMac X2024破解版下载

基本上&#xff0c;不管是win版还是Mac版的电脑&#xff0c;其装机必备就是一款电脑系统清理软件&#xff0c;就比如Mac&#xff0c;目前在市面上&#xff0c;电脑系统清理软件是非常多的。 对于不熟悉系统的用户来说&#xff0c;使用一些小众工具&#xff0c;往往很多用户都不…...

19 款Agent产品工具合集

原文&#xff1a;19 款Agent产品工具合集 什么是Agent? 你告诉GPT完成一项任务&#xff0c;它就会完成一项任务。 如果你不想为GPT提出所有任务怎么办&#xff1f;如果你想让GPT自己思考怎么办&#xff1f; 想象一下&#xff0c;你创建了一个AI&#xff0c;你可以给它一个…...

[尚硅谷React笔记]——第8章 扩展

目录&#xff1a; 扩展1_setState扩展2_lazyLoad扩展3_stateHook扩展4_EffectHook扩展5_RefHook扩展6_Fragment扩展7_Context扩展8_PureComponent扩展9_renderProps扩展10_ErrorBoundary组件通信方式总结 1.扩展1_setState setState更新状态的2种写法 setState(stateChange…...

卷积神经网络中 6 种经典卷积操作

深度学习的模型大致可以分为两类&#xff0c;一类是卷积神经网络&#xff0c;另外一类循环神经网络&#xff0c;在计算机视觉领域应用最多的就是卷积神经网络&#xff08;CNN&#xff09;。CNN在图像分类、对象检测、语义分割等经典的视觉任务中表现出色&#xff0c;因此也早就…...

下拉列表框Spinner

在XML文件中的创建 <Spinnerandroid:id"id/spinner"android:layout_width"wrap_content"android:layout_height"wrap_content"/> 在Java文件中的设置 //获取Spinner对象 Spinner spinnerfindViewById(R.id.spinner); //创建数组…...

C++高级功能笔记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…...

PTE SST和RL模板

目录 事实证明&#xff0c;SST分值占比很小&#xff0c;不是很需要好好练 SST的模板&#xff1a; RL模板&#xff1a; 给你一个模版供参考&#xff1a; RA技巧 为什么说日本人团结 This lecture mainly talked about the importance of words and the sound of words and…...