SLAM中刚体的运动描述

news2024/11/27 21:54:20

简介

物体在真实世界中是运动的,SLAM中求解的机器人位姿就是求解机器人的运动。SLAM的问题就是求解世界坐标系中的静态物理点坐标以及运动的机器人点坐标集合(机器人运动点的集合构成机器人的运动轨迹)。而通常我们获取的信息是以机器人本体为坐标系下的世界点的坐标信息,因此需要完成运动坐标系下的坐标到世界坐标系坐标的转换。

基本概念

刚体

考虑物体的形状,且假设物体形状不发生改变的物体,也就是自身一个点的运动就代表着整个物体的运动。

三维空间中物体的描述方式叫做位姿(位置+姿态),其运动描述为平移+旋转。

质点

中学就学过,假象的点,只有位置没有姿态。只有质量没有形状

坐标系

世界坐标系:
    用来描述三维世界物体位置信息的参考系,也叫静态坐标系,通常是机器人运动时的起点。描述机器人的位姿,地图点的坐标都要参考该坐标系

机器人坐标系(动态坐标系):
    通常机器人传感器观测到的世界信息都是以自身为坐标系参考,该坐标系随着机器人的运动而变化,因此需要将某一时刻观测的信息转换到世界坐标系下,而且自身坐标系也是在世界坐标系下进行观测的,自身的坐标系原点在世界坐标系中的集合代表着机器人的运动轨迹

描述运动的方式

刚体在三维世界中的运动可以用一个旋转 + 平移来描述,三维点在不同坐标系下的坐标是不同的,但是他们可以通过坐标系间的变换进行转换。也就是说坐标的转换和坐标系的变换是相关联的,求解时只需要求解坐标系的变换即可。

在SLAM中,由世界坐标系到机器人坐标系的转换,这个变换过程我们叫做机器人的位姿变换,而机器人坐标系在世界坐标系中的坐标和朝向叫做机器人的位姿,机器人本体上有很多坐标系,这里用传感器的自身坐标系代替机器人坐标系,因为这里考虑的是动态坐标和静态坐标之间的变换(在ROS中叫有一个叫做动态坐标发布就是说的这个变换),机器人本体上的坐标系之间相对位置都是不变的,他们之间的变换很简单,ROS中的静态TF变换指的就是这种变换。

描述坐标系之间旋转的方式以及特点

SLAM中我们获得的世界信息(物理点在机器人传感器坐标系下的坐标)都是基于机器人本身坐标系确定的,构建地图需要的是这些坐标是相对于世界坐标系的,因此需要将坐标从机器人坐标系转换到世界坐标系下,我们需要知道的是机器人坐标系相对于世界坐标系的变换(相对位置关系)。由世界坐标系变换到机器人坐标系可以通过旋转+平移来直观的描述。

坐标系间的变换

坐标变换的实质类似于统一单位。

1、旋转矩阵、变换矩阵的推导

(1)向量、向量坐标、基、单位正交基

向量:
    向量是空间中的具有方向的线段,可以来描述刚体,其性质是不变的,不随着坐标系的变化发生改变。
    
向量坐标:
    向量坐标就是坐标系中向量线段起点坐标减去终点坐标,在指定坐标系下才有意义。
    
单位正交基:
    基就是向量,单位长度为1的向量,用来描述向量的方向;
    单位正交基可以理解为笛卡尔坐标系,就是用来描述向量的参照系。
    三维空间中的三个不平行的三个向量基就能够表示整个三维空间中的向量。

(2)通过向量的特点推导坐标系之间的旋转关系 旋转矩阵

通过向量的性质可以描述不同坐标系之间的变换。同一个向量在不同坐标系下是不变的。因此可以通过单位正交基来描述向量:

在这里插入图片描述

e表示单位正交基(坐标系),a表示两个坐标系下的向量坐标。R的实质就是用e1来描述e ,因为空间中的一组基可以可以描述空间中的任何向量,所以求解的R实质就是e 在e1下的线性组合(坐标),表示了两个坐标系之间的转换

两边变换一下得到R就是坐标系之间的旋转矩阵,:

在这里插入图片描述

旋转矩阵的特点:
    1、矩阵为单位正交矩阵、可逆矩阵
     2、各分量为各向量基的夹角的余弦值
     3、该矩阵是特殊正交群

(3)旋转+平移描述了坐标系之间的变换 变换矩阵

旋转+平移刻画了坐标系之间的整体变换,坐标系之间的平移就是左边原点之间的相对位置,直接在原坐标中加上这个平移值即可。

在这里插入图片描述

(4)齐次坐标描述了变换矩阵的线性连续变换

当坐标系连续的变换时,变换公式可以依次类推,如下:

在这里插入图片描述
但是该递推公式太过于复杂,可以利用齐次坐标将其变换为矩阵的线性变换。
齐次坐标就是在原来的坐标上添加1维,特点是能够使连续变换的非线性公式变成矩阵中的线性变换。T就是整个变换矩阵,由旋转矩阵和平移矩阵构成。

在这里插入图片描述

以上就是坐标系之间的转关系,有了这个变换矩阵T,我们就能够进行世界坐标系和机器人坐标系中物理信息的坐标变换了。

这里补充一下,向量之间的变换关系推导出来的变换矩阵,同样也适用于质点之间的坐标系转换(假设这个质点是长度为0的向量)。其中的关系推导可以参考这篇文章,讲的非常细致,其实就是线性代数里边的东西。

2、旋转向量

描述旋转的另外一个方式,也就表示世界坐标系绕某一轴,一次性旋转x角度,变换为另一个坐标系,也就是用转轴和转角的方式来描述。这种方式具有奇异性,转角是360°具有周期性。

旋转向量和旋转矩阵的转换:

罗德里格斯公式:

在这里插入图片描述
在这里插入图片描述

3、欧拉角

这个更直观,直接就是坐标系绕其自身的三个轴旋转得到转换后的坐标。ROS的TF也是用欧拉角来描述坐标系间的相对位置,其描述顺序为Z,Y,X

绕z轴旋转:偏航 yaw
绕x轴旋转:翻滚 roll
绕y轴旋转:俯仰 pitch

万向锁问题:俯仰角为±90°时,第一次和第三次旋转使用的轴为同一个轴,可以参考这篇文章 ,这篇博客也很细致

4、四元数

该描述旋转的方法很神奇,很有用,没看懂,直接上转换公式。可以参考这些博客

1、四元素表示旋转

在这里插入图片描述

任意的单位四元素描述了一个旋转,单位四元素表示的旋转不该表旋转后的向量模。

2、四元素转换为旋转矩阵

在这里插入图片描述

3、四元数转换为旋转向量

在这里插入图片描述

以上就是描述刚体的所有运动公式推导了

总结

在SLAM中我们需要将机器人观察到的物理信息转换到世界坐标系下,引入了坐标系之间的变换和坐标变换。

我们需要通过坐标之间的变换关系,来求解世界坐标系下的物理点坐标(建图环节)。

相反我们通过传感器获得了不同机器人坐标系下的物理信息点,然后通过对应的物理信息点来求解变换矩阵(位姿、环节定位)。

当然位姿变换T的求解不一定全部通过坐标变换来求解,也有可能采用运动学模型、其他传感器来获取。

结合上一节的相机模型,我们就能够通过视觉相机来对环境进行探索了。其过程如下:
首先相机采集到不同时刻的图像像素坐标信息,通过逆推投影模型获得了物理点在相机坐标系下的坐标(包括深度信息),然后在逆推坐标变换公式,从而得到了不同时刻相机之间的位姿变换,将多个时刻的位姿信息记录下来,便构成了机器人的移动轨迹。

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

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

相关文章

测试真的会被ChatGPT代替一文告诉你

送走最后一车货,最后三个工人,老王吃力的关上大铁门。左手从口袋摸出一盒烟,轻轻一颠,滑落一根,右手娴熟的夹住。掏出打火机,点燃,一丝青烟腾起,萦绕在指头。 夕阳穿过玻璃&#xf…

知道这些英文文档翻译的方式吗

在工作中,大家有没有遇到领导交给你一份外语的文档,要你去观看和理解,但是我们看不太懂或者没啥时间去一点点翻译怎么办呢?我们就需要有工具来将文档翻译,它是一项非常实用和便捷的功能,它可以将文档中的文…

高级运维工程师的工作职责描述(合集)

高级运维工程师的工作职责描述1 职责: 1、参与设计、审核的Linux系统以及各应用系统的体系架构; 2、全面负责公司运维项目的系统升级、linux系统运营维护,保障公司服务器零风险; 3、负责阿里云服务器监控,搭建cacti、zabbix、nagios等监控产品&#xff0…

STM32信号量

目录 什么是信号量? 什么是二值信号量? 二值信号量相关 API 函数 1. 创建二值信号量 2. 释放二值信号量 3. 获取二值信号量 实操 实验需求 cubeMX配置​编辑 代码实现 计数型信号量 什么是计数型信号量? 计数型信号量相关 API 函…

CENTO OS上的网络安全工具(二十三)VSCODE SPARK 容器式编程环境构建

在vscode上使用maven构建spark的scala编程环境,很大程度上需要不断地从网络上下载各种依赖和插件,而且这一过程复杂而不可控。下面这段,是整个安装过程中/root目录下不断增加的内容。 [rootd7ff8f448a0d /]# cd /root [rootd7ff8f448a0d ~]#…

【 Python 全栈开发 - WEB开发篇 - 32 】MySQL高级查询

文章目录 一、LIMIT限制查询结果的数量二、使用GROUP BY进行分组查询1.GROUP BY和聚合函数一起使用2.GROUP BY和聚合函数以及HAVING一起使用 三、使用ORDER BY对查询结果排序 一、LIMIT限制查询结果的数量 开始之前,我们先准备一下数据,打开cmd&#xf…

MsSqlServer2008R2移动数据库迁移复制粘贴附加.mdf不要.ldf日志 230609记录

MsSqlServer2008R2数据库迁移复制粘贴附加.mdf 230609记录 将一个SqlServer的某个数据文件.mdf拷贝到另一个数据库当中,并启用 操作工具为 SSMS(SQL Server Management Studio) 19.1 免费下载 SQL Server Management Studio (SSMS) 19.1 .mdf文件 SQL Server 数据库中的三…

【数据结构】何为数据结构。

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星T…

chatgpt赋能python:Python循环暂停和继续的方法

Python循环暂停和继续的方法 Python是一种高级编程语言,在编程中使用循环结构非常常见。很多情况下,我们需要在循环中暂停或者继续执行。在本文中,我们将介绍如何在Python中实现循环暂停和继续的方法。 循环暂停和继续的意义 在Python编程…

打死也要学的VUE.js(中文官方文档)

VUE.js中文官方文档 文章目录 VUE.js中文官方文档 创建一个 Vue 应用[#](https://cn.vuejs.org/guide/essentials/application.html#creating-a-vue-application)应用实例[#](https://cn.vuejs.org/guide/essentials/application.html#the-application-instance)根组件[#](http…

微信小程序抓包你会吗?不会我来教你

目录 前言 先来说小程序抓包问题 再说下小程序调试问题 解包wxapkg 调试小程序 总结: 前言 今天聊下微信小程序的抓取,其实小程序的抓取不难,主要解决抓包和如何调试小程序这两个问题。如果你运用chrome调试已经比较熟练了的话,就…

Java多线程、进程、并行、并发的理解(通俗易懂)

程序(programm) 概念:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。 进程(process) 概念:程序的一次执行过程,或是正在运行的一个程序。 说明:进程作为资源分配的单位,系统在运行时会为每…

基于VITS-fast-fine-tuning构建多speaker语音训练

1 VITS模型介绍 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)是一种语音合成方法,它使用预先训练好的语音编码器 (vocoder声码器) 将文本转化为语音。 VITS 的工作流程如下: &#xff0…

【CSS按钮特效】css如何实现科技感好看按钮效果(尾附源码下载)

【写在前面】这两天还是比较痴迷于CSS特效的,甚至还想着去用CSS做动画片呢,希望后面能做到,今天主要讲的是我们页面常见的元素-按钮,很多时候按钮也需要高级化,但是很多人苦于没有途径去寻找,于是乎借这个机…

jsx底层渲染机制,函数组件的底层渲染机制

jsx底层渲染机制!! 1.第一大步创建virtualDom 首先把我们编写的JSX语法,编译为虚拟DOM对象「virtualDOM」,这一步也分为两小步 虚拟DON对象∶框架自己内部构建的一套对象体系(对象的相关成员都是React内部规定的)&a…

深入理解深度学习——注意力机制(Attention Mechanism):多头注意力(Multihead Attention)

分类目录:《深入理解深度学习》总目录 在实践中,当给定相同的查询、键和值的集合时,我们希望模型可以基于相同的注意力机制学习到不同的行为, 然后将不同的行为作为知识组合起来, 捕获序列内各种范围的依赖关系 &#…

论文解读:GBPNet:蛋白质结构的通用几何表示学习

GBPNet: Universal Geometric Representation Learning on Protein Structures DOI:https://doi.org/10.1145/3534678.3539441 Github:GBPNet/gbpnet/datamodules at main sarpaykent/GBPNet GitHub 摘要: 蛋白质3D结构的表示学习对于例如计算蛋白质设计或蛋白…

单链表OJ题:LeetCode--160.相交链表

朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第160道单链表OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏:数据结构与算法 个 人…

Lecture 19 Question Answering

目录 introductionIR-based QA (dominant approach)Knowledge-based QAHybrid QAConclusion introduction Definition: question answering (“QA”) is the task of automatically determining the answer for a natural language questionMostly focus on “factoid” quest…

牛客网论坛最具争议的Linux内核成神笔记,GitHub已下载量已过百万

原文地址:牛客网论坛最具争议的Linux内核成神笔记,GitHub已下载量已过百万 1、前言 Linux内核是一个操作系统(OS)内核,本质上定义为类Unix。它用于不同的操作系统,主要是以不同的Linux发行版的形式。Linu…