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

news/2024/5/3 8:53:31/文章来源:https://blog.csdn.net/wang_jun_whu/article/details/126904902

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

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

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

一、群的概念

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

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

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

二、李代数

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

李代数的定义

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java小白踩坑录上

文章目录1、Java小白踩坑录 - String和char2、Java小白踩坑录 - Random 揭秘3、Java小白踩坑录 - B计划之Java资源如何释放?4、Java小白踩坑录 - 反射到底有多慢?5、Java小白踩坑录 - 数组 & List6、Java小白踩坑录 - Java类型的七十二变揭秘7、Java…

IDEA生成带参数和返回值注解

文章目录步骤说明打开IDEA进入 - 设置 - 编辑器 - 活动模板现象一:IDEA提示悬空的注解现象二:IDEA提示标签说明已丢失使用范围设置注解使用步骤说明 打开IDEA进入点击左上角 - 文件 - 设置 - 编辑器 - 活动模板 新建活动模板 填写模板文本 编辑变量 …

2.canal服务器配置及java客户端

【README】 1.本文总结自 B站《尚硅谷-canal》; 2.canal 介绍,可以参考 GitHub - alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件 3. canal服务器配置包括 mysql配置,canal配置等; 4.mysql服务器,ca…

完美且简要,如此输出风控中的重要数据指标曲线(如KS等)

先前,我们用excel给大家演示过一个KS的计算方式。 ks值是在模型中用于区分预测正负样本分隔程度的评价指标。每个样本的预测结果化对应的一个个分数,从最低分到最高分,输出为正负样本的累积分布。Ks值为这个两个正负样本中,最大差…

听吧音乐项目测试

听吧音乐项目 听吧音乐测试1.项目背景2.需求分析2.1 用户需求2.2 软件需求3. 测试点分析及测试用例4. 自动化测试代码4.1 注册登录注销模块自动化测试代码4.2 专辑播放自动化测试代码5. 测试报告1.项目背景 听吧音乐是一个在线听歌网站,游客通过首页可以在线收听其…

WinUI 3 踩坑记:第一个窗口

本文是 WinUI 3 踩坑记 的一部分,该系列发布于 GitHub@Scighost/WinUI3Keng,文中的代码也在此仓库中,若内容出现冲突以 GitHub 上的为准。WinUI 3 应用的入口和 UWP 类似,也是继承自 Application 的一个类,略有不同的是没有 UWP 那么多的启动方式可供重写,只有一个 OnLau…

python计算离散积分

前言 本文是傅立叶及其python应用系列的第一篇文章对应的仓库地址为https://github.com/yuanzhoulvpi2017/tiny_python/tree/main/Fourier_Series 介绍 本篇文章将要介绍一个非常小众的scipy函数:simpson. 这个函数的一大功能就是可以对离散数据积分。之所以要介…

P39 事件处理

P39 事件处理1.事件模型的流程2.事件监听器2.1 动作监听器(ActionListener)2.2 焦点监听器(FocusListener)2.3 鼠标监听器(MouseListener)2.4 鼠标移动/拖动监听器(MouseMotionListener&#xf…

SpringAOP的概述与实现

目录 SpringAOP的概述 什么是AOP AOP能干什么 AOP的特点 AOP底层实现 AOP基本概念 连接点 切入点 通知 切面 目标对象 织入 引入 谈谈你对AOP的理解? SpringAOP的实现 依赖引用 spring.xml配置 注解实现 1.定义切面 设置通知 2.开启aop 3.测试 …

金仓数据库KingbaseES客户端编程开发框架-MyBatis(2. 概述 3. MyBatis配置说明)

2. 概述 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息, 将接口和 Java 的 POJOs(Plain Old Ja…

Sourcemap 配置详解

前言 之前在脚手架工具内整合将sourcemap上传sentry能力的时候,考虑bundle分割对.map文件关联的限制:比如TerserWebpackPlugin(JS压缩)只对 devtool 选项的 source-map,inline-source-map,hidden-source-m…

后端研发工程师面经——JAVA语言

文章目录2. JAVA语言2.1 面向对象的三大特性2.2 JAVA异常2.2.1 异常产生的原因2.2.2 异常的分类2.2.3 异常的处理方式2.3 序列化和反序列化2.3.1 概念2.3.2 JAVA中的序列化和反序列化2.3.3 序列化和反序列化的接口2.3.4 Serialization接口详解2.3.5 Externalizable接口详解2.3.…

3D建模师做多了女人会不会找不到老婆?次世代美少女战士建模流程讲解

什么是次世代? 次世代是个舶来语,“次世代游戏”指代和同类游戏相比下更加先进的游戏,即“下一代游戏”。 次世代是利用高模烘焙的法线贴图回帖到低模上,让低模在游戏引擎里可以及时显示高模的视觉效果。模型面数比较高&#xf…

算法 - 计数排序(Counting_Sort)

目录 引言: 学习: 什么是计数排序(Counting_sort)? 定义: 算法思想: 排序过程: Step 1 : Step 2 : Step 3 : Step 4 : Step 5 &…

单片机项目式实训总篇

采取新方法,让自己尽快变强,为了更好的再次见面。停止大脑内斗。 总学习目标:(完成后此文字支持跳转) 基础知识 端口操作 显示 高级输入 时间控制 综合 Flag: 一周破解C51程序 学习内容: 了解单片…

DeepExploit——当Metasploit遇上机器学习

Metasploit Meets Machine Learning 文章目录Metasploit Meets Machine Learning1. Metasploit准备1.1 与外部项目的合作1.1.1 启用RPC API1.1.2 使用RPC API操作Metasploit2. 创建机器学习模型2.1 DQN2.2 A3C2.2.1 CartPole2.2.2 分布式学习机制3. 深度利用3.1 代理任务3.2 当…

JVM——GC垃圾回收机制

文章目录JVM——GC垃圾回收机制一、如何判断哪些对象应该被回收——对象判活算法引用计数算法可达性分析算法引用最终判定二、对象应该怎么被回收——垃圾回收算法分代收集理论标记-清除算法标记-复制算法标记-整理算法三、内存对象什么时候被回收——触发条件年轻代GC(Minor G…

如期而至的SVN服务器迁移引来一个大瓜XAMPP

文章目录前言方案评估前奏XAMMP搭建svn服务准备软件包安装必要环境和工具安装xampp运行xampp编辑xampp访问xampp安装subversion安装svnmanager创建svn仓库目录修改配置文件为svnmanager创建MySQL用户重启xammp服务访问svnmanager登录svnmanager可能遇到的错误查看服务器目录信息…

10 nginx 中的 slab

前言 这里主要是描述 nginx 中的 slab 内存分配相关 slab 在很多的地方都有使用, 比如 linux, nginx, netty 等等 主要的作用是 内存管理, 复用 简略 nginx 中的 slab 的流程 # slab relatedvoid* poolPtr malloc(2048);ngx_slab_pool_t *pool (ngx_slab_pool_t *)poo…

Pytorch深度学习——线性回归实现 04(未完)

文章目录1 问题假设2 步骤3 学习使用Pytorch的API来搭建模型3.1 nn.Model3.2 优化器类3.3 评估模式和训练模式3.4 使用GPUdata和item的区别1 问题假设 假设我们的基础模型就是y wxb,其中w和b均为参数,我们使用y 3x0.8来构造数据x、y,所以最后通过模型…