论文阅读《机器人状态估计中的李群》

目录

  • 摘要
  • 1 介绍
  • 2 微李理论
    • 2.1 李群

摘要

李群是一个古老的数学抽象对象,可以追溯到19世纪,当时数学家 Sophus Lie奠定了连续变换群理论的基础。多年后,它的影响已经蔓延到科学和技术的各个领域。在机器人领域,我们最近正在经历一个重要的趋势,至少在估计领域,特别是在导航的运动估计方面。然而,对于绝大多数机器人专家来说,李群是高度抽象的结构,因此难以理解和使用。

在机器人估计技术中,通常不需要充分利用李群理论的能力,因此需要努力选择合适的阅读材料。在本文中,我们将通过李理论的最基本原理,目的是传达清晰和有用的想法,并留下一个重要的李理论语料库。即使有这样的缺陷,这里包含的材料已经被证明在机器人的现代估计算法中非常有用,特别是在SLAM,视觉里程计等领域。

除了这个微李理论之外,我们还提供了一个章节,其中包含一些应用示例,以及机器人中使用的主要李群的大量公式参考,包括大多数雅可比矩阵和容易操作它们的方法。我们还提供了一个新的C++模板库,实现了这里描述的所有功能。

1 介绍

在过去的几年里,机器人社区在正确地表述估计问题方面做出了显著的努力。这是由于对解决方案的精度、一致性和稳定性的要求越来越高。事实上,对状态和测量、与它们相关的函数及其不确定性进行适当的建模,对于实现这些目标至关重要。这导致了涉及所谓的“流形”的设计,在这种情况下,流形不亚于李群的光滑拓扑表面,状态表示在这里演变。依托李理论,我们能够构建一个严格的微积分语料库,以精确和轻松地处理不确定性、导数和积分。通常,这些工作集中在众所周知的旋转 S O ( 3 ) SO(3) SO(3)和刚性运动 S E ( 3 ) SE(3) SE(3)流形上。

当你第一次听说李群时,试着从不同的角度来看待它们是很重要的。拓扑学的观点,见图1,涉及流形的形状,并传达了它与切空间和指数映射关系的强大直觉。代数观点涉及群运算及其具体实现,允许利用代数性质来开发封闭形式的公式或简化它们。几何观点在机器人技术中特别有用,它将群元素与物体或参考系的位置、速度、方向和/或其他修改联系起来。原点坐标系可以用群的同一性来标识,流形上的任何其他点都代表某个“局部”坐标系。通过采用这些类比,李群的许多数学抽象可以更接近于向量空间、几何、运动学和其他更经典领域中的直观概念。

在这里插入图片描述
图1 李群与李代数关系的表示。李代数 T ε M T_{\varepsilon}\mathcal{M} TεM(红色平面)是李群流形 M \mathcal{M} M(这里用蓝色球体表示)在值 ε \varepsilon ε处的切空间。通过指数映射,经过李代数原点的直线 v t vt vt,变为沿着流型自测地线的路径 e x p ( v t ) exp(vt) exp(vt)。相反的,李群中的每一个元素在李代数中都能找到一个等价。这种关系是如此深刻,以至于(几乎)群中的所有运算,它是弯曲的和非线性的,在李代数中有一个完全等价的,李代数是一个线性向量空间。虽然 R 3 \mathbb{R}^3 R3中的球不是李群(我们只是把它作为一种可以在纸上画出来的表示),但 R 4 \mathbb{R}^4 R4中的球是李群,并描述了单位四元数群——见图4和例5。

李理论绝不简单。为了对李理论可能是什么有一个最起码的概念,我们可以考虑以下三个参考文献。第一篇,Abbaspour的《基本李理论》,它有400多页。第二篇,Howe的《非常基本的李理论》,共24页(密集),有时被认为是必读的介绍。第三篇,更现代、更著名的Stillwell的《朴素李理论》有200多页。有了这些被标记为“基本”、“非常基本”和“朴素”的先例,这篇只有17页的论文的目的是进一步简化李理论(因此我们在标题中使用了形容词“微”)。我们有两种方法。首先,我们从LT中选择一小部分材料。这个子集是如此之小,以至于它仅仅是在探索LT的潜力。然而,它对于我们在机器人技术中处理的估计问题中的不确定性管理(例如惯性预积分,里程计和SLAM,视觉伺服等)似乎非常有用,从而实现最优优化器的优雅和严格设计。其次,我们以教学的方式进行解释,并带有大量冗余,以进一步缩小LT的理解差距,我们认为这仍然是必要的。也就是说,我们坚持朝着这个方向努力,命名一个典型的标题,Stillwell的,并提供一个更简化的版本。本文主体是通用的,尽管我们试图将抽象级别保持在最低限度。当应用于已知的群(旋转和运动矩阵、四元数等)时,插入的例子可以作为一般概念的基础。此外,大量带有冗长标题的图表再次解释了相同的概念。我们特别关注雅可比矩阵的计算(这个主题在中没有讨论),这对于大多数最优估计是必不可少的,也是设计新算法时的许多麻烦的来源。在这一章中,我们给出了机器人定位和建图的一些应用实例,实现了EKF和基于LT的非线性优化算法。最后,几个附录包含了机器人中最常用群的相关细节的大量参考:单位复数,四元数,2D和3D旋转矩阵,2D和3D刚性运动矩阵,以及平凡的平移群。

然而,我们对李理论最重要的简化是在范围方面。以下来自Howe的段落可以帮助我们说明我们留下的内容:“李理论的本质现象是,人们可以以一种自然的方式将李群 G \mathcal{G} G与它的李代数 g \mathcal{g} g联系起来。李代数 g \mathcal{g} g首先是一个向量空间,其次被赋予一个称为李括号的双线性非结合积[…]。令人惊奇的是,李群 G \mathcal{G} G几乎完全由李代数 g \mathcal{g} g和它的李括号决定。因此,在许多情况下,我们可以用李代数 g \mathcal{g} g来代替李群 G \mathcal{G} G。因为李群 G \mathcal{G} G是一个复杂的非线性对象,而李代数 g \mathcal{g} g只是一个向量空间,所以用李代数 g \mathcal{g} g来处理通常要简单得多。这是李理论力量的来源之一。”在[3]中,Stillwell甚至谈到了“李理论的奇迹”。在这项工作中,我们有效地将李代数降至第二平面,以支持其等效向量空间 R n \mathbb{R}^n Rn,并且根本不引入李括号。因此,李群和它的李代数之间的联系将不会在这里做得像它应该做的那样深刻。我们的立场是,考虑到我们预见的目标应用领域,这种阅读材料通常是不必要的。此外,如果包括在内,那么我们将无法实现清晰和有用的目标。由于它们的抽象或微妙,读者将不得不进入数学概念,这是不必要的复杂。

我们的努力与最近其他关于该主题的工作一致,这些工作也确定了使LT更接近机器人专家的需求。我们的方法旨在使本文的目标受众熟悉:精通状态估计(卡尔曼滤波,基于图的优化等)的受众,但还不熟悉李理论。为此,我们在符号上做了一些改进,特别是在导数的定义上,使它接近向量的对应项,从而使链式法则清晰可见。如前所述,我们的选择实际上避免了李代数的材料,而更喜欢在它的同构切向量空间 R n \mathbb{R}^n Rn上工作,这是我们最终表示不确定性或(小)状态增量的地方。所有这些步骤在精度和准确性上都绝对不会有任何损失,我们相信它们使得对LT的理解和其工具的操作变得更容易。

在这里插入图片描述
图2 流形 M \mathcal{M} M和向量空间 T X M \mathcal{T}_{\mathcal{X}}\mathcal{M} TXM(在这种情况下 ≅ R 2 \cong \mathbb{R}^2 R2)相切于点 X \mathcal{X} X。同时,也展示了侧切图。速度元素 X ˙ = ∂ X / ∂ t \dot{\mathcal{X}}=\partial{X}/\partial{t} X˙=X/t不属于流形 M \mathcal{M} M,但属于正切空间 T X M \mathcal{T}_{\mathcal{X}}\mathcal{M} TXM

本文附带了一个新的开源C++头文件库,称为manif,可以在https://github.com/artivis/manif上找到。manif实现了广泛使用的群 S O ( 2 ) SO(2) SO(2) S O ( 3 ) SO(3) SO(3) S E ( 2 ) SE(2) SE(2) S E ( 3 ) SE(3) SE(3),并支持创建解析雅可比矩阵。该库的设计是为了易用性、灵活性和性能。

2 微李理论

2.1 李群

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

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

相关文章

EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?

在现代视频监控领域,跨区域的网络化视频监控管理平台成为了大中型项目的首选。EHOME视频平台EasyCVR以其强大的功能和兼容性,成为了众多项目的核心组件。它不仅能够管理视频资源、设备、用户、运维和安全,还支持多种行业标准协议,…

浮动路由:实现出口线路的负载均衡冗余备份。

浮动路由 Tip:浮动路由指在多条默认路由基础上加入优先级参数,实现出口线路冗余备份。 ip routing-table //查看路由表命令 路由优先级参数:越小越优 本次实验测试两条默认路由,其中一条默认路由添加优先级参数,设置…

Android CCodec Codec2 (十九)C2LinearBlock

在上一篇文章的结尾,我们看到fetchLinearBlock方法最终创建了一个C2LinearBlock对象。这一节,我们将深入了解C2LinearBlock是什么,它的作用是什么,以及它是如何被创建的。 1、_C2BlockFactory 先对上一篇文章的结尾内容做简单回顾…

Axure PR 9 多级下拉选择器 设计交互

​ 大家好,我是大明同学。 Axure选择器是一种在交互设计中常用的组件,这期内容,我们来探讨Axure中多级下拉选择器设计与交互技巧。 下拉列表选择输入框元件 创建选择输入框所需的元件 1.在元件库中拖出一个矩形元件。 2.选中矩形元件&…

SparkSql读取数据的方式

一、读取普通文件 方式一:给定读取数据源的类型和地址 spark.read.format("json").load(path) spark.read.format("csv").load(path) spark.read.format("parquet").load(path) 方式二:直接调用对应数据源类型的方法 …

使用Python实现图像的手绘风格效果

使用Python实现图像的手绘风格效果 一、引言二、代码详细解释与示例三、完整框架流程四、运行五、结论附:完整代码 一、引言 在数字图像处理领域,模拟手绘风格是一项有趣且具有挑战性的任务。手绘风格图像通常具有独特的纹理和深浅变化,给人…

Oracle Select语句

SELECT语句使用方法 在Oracle中,表是由列和行组成。 例如,示例数据库中的customers表具有以下列:customer_id,name,address,website和credit_limit。customers表中这些列中也有对应的数据。 要从表的一个或…

w~大模型~合集21

我自己的原文哦~ https://blog.51cto.com/whaosoft/12459590 #大模型~微调~用带反馈的自训练 面对当前微调大模型主要依赖人类生成数据的普遍做法,谷歌 DeepMind 探索出了一种减少这种依赖的更高效方法。大模型微调非得依赖人类数据吗?用带反馈的自训…

ctfshow(316,317,318)--XSS漏洞--反射性XSS

反射型XSS相关知识 Web316 进入界面: 审计 显示是关于反射性XSS的题目。 思路 首先想到利用XSS平台解题,看其他师傅的wp提示flag是在cookie中。 当前页面的cookie是flagyou%20are%20not%20admin%20no%20flag。 但是这里我使用XSS平台,…

【案例】Excel使用宏来批量插入图片

一、场景介绍 我有一个excel文件,需要通过一列的文件名称,按照规则给批量上传图片附件。 原始文件: 成功后文件: 二、实现方法 1. 使用【wps】工具打开Excel文件,将其保存为启用宏的文件。 2.找到编辑宏的【VB编辑器…

ENSP OSPF和BGP引入

路由协议分为:内部网关协议和外部网关协议。内部网关协议用于自治系统内部的路由,包括:RIP和OSPF。外部网关协议用于自治系统之间的路由,包括BGP。内部网关协议和外部网关协议配合来共同完成网络的路由。 BGP:边界网关路由协议(b…

Linux磁盘存储

磁盘存储 设备文件 设备文件是类Unix操作系统(包括Linux)中一种特殊的文件类型,它代表了设备接口,使得用户空间的程序可以通过标准的文件操作来访问和控制硬件设备。设备文件为周边设备提供了简单的接口,如打印机、硬…

阿里云ECS服务器使用限制及不允许做的事情

阿里云ECS(Elastic Compute Service)是一种高性能的弹性计算服务,允许用户在云端创建和管理虚拟服务器。尽管ECS提供了强大的功能,但在使用过程中,阿里云有一些限制和不允许的行为。以下是一些主要的使用限制和禁止行为…

【手撕排序4】计数排序+快速排序(非递归)

> 🍃 本系列包括常见的各种排序算法,如果感兴趣,欢迎订阅🚩 > 🎊个人主页:[小编的个人主页])小编的个人主页 > 🎀 🎉欢迎大家点赞👍收藏⭐文章 > ✌️ 🤞…

FPGA实现以太网(一)、以太网基础知识

系列文章目录 FPGA实现以太网(二)、初始化和配置PHY芯片 文章目录 系列文章目录一、以太网简介二、OSI七层模型三、TCP/IP五层模型四、MAC-PHY接口五、MAC帧格式六、IP帧格式6.1 IP首部校验和计算6.2 IP首部校验和校验 七、UDP帧格式7.1 UDP头部校验和…

Linux平台C99与C++11获取系统时间

源码: #include <iostream> #include <chrono> #include <ctime> #include <thread>using namespace std; int main() {cout << "===使用C99方式获取系统时间===" << endl;time_t now = time(nullptr);struct tm *tm_c99 = lo…

QT版发送邮件程序

简单的TCP邮箱程序 **教学与实践目的&#xff1a;**学会网络邮件发送的程序设计技术。 1.SMTP协议 邮件传输协议包括 SMTP&#xff08;简单邮件传输协议&#xff0c;RFC821&#xff09;及其扩充协议 MIME&#xff1b; 邮件接收协议包括 POP3 和功能更强大的 IMAP 协议。 服务…

【学习记录】使用CARLA录制双目摄像头SLAM数据

一、数据录制 数据录制的部分参考了网上的部分代码&#xff0c;代码本身并不复杂&#xff0c;基本都是简单的CARLA语法&#xff0c;关键的一点在于&#xff0c;CARLA内部本身并没有预设的双目摄像头&#xff0c;需要我们添加两个朝向相同的摄像头来组成双目系统&#xff0c;这…

第02章 CentOS基本操作

2.文件基本操作【文件操作&#xff08;一&#xff09;】 目标 理解Linux下路径的表示方法能够使用命令(mkdir和touch)在指定位置创建目录和文件能够使用命令(rm)删除指定的目录和文件能够使用命令(ls)列出目录里的文件能够使用命令(cat,head,tail,less,more)查看文件内容理解标…

【数字图像处理+MATLAB】解决 imshow 函数图像显示亮度异常问题:自动调整亮度范围使图像能正确显示

问题描述 在MATLAB中&#xff0c;使用imshow函数进行图像显示时&#xff0c;图片亮度显示异常。 imshow(im_avg);执行上述代码后&#xff0c;得到的图片亮度异常&#xff0c;如下图所示&#xff1a; 原因分析 在MATLAB中&#xff0c;imshow函数的亮度显示规则是基于图像数据…