ROS建图之ROS标准REP-105(官方搬运翻译+个人理解)

news2025/1/9 15:09:47

        REP-105 是一个由 Wim Meeussen 于 2010年10月27日 创建并维护的,名为 "Coordinate Frames for Mobile Platforms"(移动平台的坐标系框架)的 ROS Enhancement Proposal(REP)。ROS官方教程:REP 105 -- Coordinate Frames for Mobile Platforms (ROS.org)icon-default.png?t=N7T8https://www.ros.org/reps/rep-0105.html

摘要

        REP-105规定了与ROS配合使用的移动的平台坐标系的命名约定和语义,旨在定义移动平台上使用的统一坐标系框架。它提供了一种规范,以描述移动平台的不同坐标系之间的关系,并定义了一些常用的坐标系,以方便在ROS系统中进行移动平台的建模和控制。

1 目的及意义

       移动平台通常包括机器人、车辆和其他移动设备,它们具有多个不同的坐标系,例如车身坐标系、底盘坐标系、惯性坐标系等。这些坐标系之间的关系不一致,导致了在不同平台和工具之间进行数据交换和应用开发时的困难。为了更好地集成和重用软件组件,驱动程序、模型和库的开发人员需要一个坐标系的共享约定。坐标框架的共享约定为开发人员创建移动的底座的驱动程序和模型提供了规范。类似地,创建库和应用程序的开发人员可以更容易地将他们的软件与各种与此规范兼容的移动的基座一起使用。例如,这个REP指定了编写一个新的本地化组件所需的帧。它还指定了可用于引用机器人移动的基座的帧。

2 主要内容

       REP-105定义了一套命名规则和转换关系,以定义和描述移动平台的坐标系。它规定了坐标系名称的命名空间、命名约定,以及如何通过变换矩阵和旋转表示坐标系之间的关系。

3 坐标系

       REP-105定义了几个常用的移动平台坐标系,包括车辆坐标系、底盘坐标系、IMU坐标系、激光雷达坐标系等。它描述了这些坐标系相对于其他坐标系的位置、方向和变换关系。

3.1 base_link

       base_link 坐标系刚性地附接到移动的机器人基座。 base_link 可以以任意位置或取向附接到基座;对于每个硬件平台,在基座上将存在提供明显参考点的不同位置。请注意,REP 103 [1]规定了框架的首选方向。

3.2 odom

       odom 的坐标系是世界固定坐标系。移动的平台在 odom 帧中的姿态可以随时间漂移,没有任何界限。该漂移使得 odom 帧不能用作长期全局参考。然而, odom 帧中的机器人的姿态被保证是连续的,这意味着 odom 帧中的移动的平台的姿态总是以平滑的方式演变,而没有离散的跳跃。在典型的设置中, odom 帧是基于诸如车轮里程计、视觉里程计或惯性测量单元之类的里程计源来计算的。odom 帧作为精确的短期局部参考是有用的,但是漂移使其成为不适合长期参考的帧。

3.3 map

       称为 map 的坐标系是一个世界固定坐标系,其Z轴指向上方。移动的平台相对于 map 帧的姿态不应随时间显著漂移。 map 帧不是连续的,这意味着 map 帧中移动的平台的姿态可以在任何时间以离散跳跃的方式改变。在典型的设置中,定位组件基于传感器观测不断地重新计算 map 帧中的机器人姿态,因此消除了漂移,但是当新的传感器信息到达时导致离散跳跃。map 帧作为长期全局参考是有用的,但是位置估计器中的离散跳跃使其成为局部感测和动作的差的参考帧。

3.3.1 map conventions

       地图坐标框架可以全局引用,也可以引用到特定于应用程序的位置。应用特定定位的示例可以是根据EGM1996 [4]的平均海平面[3],使得地图帧中的z位置等于海平面以上的米。无论选择什么,最重要的部分是参考位置的选择被清楚地记录下来,以避免用户混淆。

相对于地球等全局参照定义坐标系时:

  • 默认设置应该是在坐标系原点处将x轴向东、y轴向北和z轴向上对齐。
  • 如果没有其他参照,则z轴的默认位置应为WGS84椭球体高度处的零。

       如果存在无法满足上述要求的应用特定要求,则仍应尽可能多地满足。
       不能满足上述要求的应用的一个示例是在没有外部参考设备(例如GPS、罗盘或高度计)的情况下启动机器人。但是如果机器人仍然有一个加速度计,它可以初始化地图在其当前位置与z轴向上。
       如果机器人有一个罗盘航向作为启动,那么它也可以初始化x东,y北。
       如果机器人在启动时有高度计估计,它可以在MSL初始化高度。
       强烈建议在非结构化环境中使用上述约定。

3.3.2 结构化环境中的映射约定

       在结构化环境中,将地图与环境对齐可能更有用。诸如办公楼内部的示例结构化环境通常是直线的并且具有有限的全局定位方法,推荐将地图与建筑物对准,特别是如果建筑物布局是先验已知的。类似地,在室内环境中,建议将地图与地面对齐。如果您在多个楼层上操作,则使用多个坐标系(每个楼层一个坐标系)可能是有意义的。
       如果存在歧义,请回到上面的非结构化环境的约定。或者,如果对环境的先验知识有限,则在结构化环境中仍然可以使用非结构化约定。

3.4 earth

        earth 的坐标系是ECEF的原点。
       此框架旨在允许不同地图框架中的多个机器人进行交互。如果应用程序只需要一个映射,则不期望存在 earth 坐标系。在同时运行多个映射的情况下,需要为每个机器人定制map、odom和base_link帧。如果运行多个机器人并在它们之间桥接数据,则在重写其他机器人的frame_id时,变换frame_id可以在每个机器人上保持标准。
       如果 map 帧被全局引用,则从 earth 到 map 的发布者可以是静态变换发布者。否则,map到earth变换通常需要通过取得当前全球位置的估计并减去地图中的当前估计姿态以获得地图原点的估计姿态来计算。
       在 map 帧的绝对位置在启动时未知的情况下,它可以保持分离,直到可以适当地评估全球位置估计。这将以与在 map 帧中的定位被初始化之前机器人可以在 odom 帧中操作相同的方式操作。

使用切向 map 框架的“地心固定”的可视化效果

4 坐标系之间的关系:

       REP-105定义了通过转换矩阵和欧拉角来表示坐标系之间的变换关系。它规定了如何在ROS系统中进行坐标系的传递和计算,以便在不同的坐标系之间进行转换和转发数据。选择了一个树形表示来将机器人系统中的所有坐标系彼此连接起来。因此,每个坐标系具有一个父坐标系和任意数目的子坐标系。本REP中描述的框架随附如下:

       map 帧是 odom 的父帧, odom 是 base_link 的父帧。尽管直觉告诉我们 map 和 odom 都应该被附加到 base_link ,但是这是不允许的,因为每个帧只能有一个父帧。

       注:上图为坐标系之间关系的最简框图,在图中插入其他额外的坐标系可以提供额外发数据功能。如:在表示飞行器的压力高度的坐标系,压力高度是基于大气大气压的共享估计的高度的近似值。 [5]在飞行应用中,仅使用气压高度计就可以精确地测量压力高度。它可能像里程计一样随时间漂移,但只会垂直漂移。为记录垂直漂移量,可以在惯性一致的 odom 帧和 map 帧之间插入pressure_altitud e帧。将需要额外的估计器来估计 pressure_altitude 相对于 map 的偏移,此额外坐标系可支持额外功能性且不破坏上文相关概念。

5 结论

       REP-105的目标是提供一个标准的坐标系框架,以方便移动平台的建模、控制和导航。它提供了一种统一的方式来定义坐标系,并明确定义了坐标系之间的关系,从而使得在ROS系统中进行移动平台开发和应用更加简单和可靠。

参考文献

[1](1,2)REP 103,标准测量单位和坐标惯例( REP 103 -- Standard Units of Measure and Coordinate Conventions (ROS.org) )
[2]地球中心,地球固定维基百科条目( https://en.wikipedia.org/wiki/ECEF )
[3]平均海平面( https://en.wikipedia.org/wiki/Sea_level )
[4]EGM1996( http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html )
[5] 压力高度( https://en.wikipedia.org/wiki/Pressure_altitude )

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

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

相关文章

C盘删除的文件怎么恢复?恢复文件,4个方法!

“请问一下在c盘中删除的文件还有机会恢复吗?保存了一些比较重要的工作文件,但是在清理电脑时误删了,怎么恢复呢?” C盘作为系统盘,保存了很多重要的文件。有时候电脑会默认将某些文件自动保存在c盘。那么,…

视频监控录像服务器(中心录像服务器)功能详细介绍

目 录 一、概述 (一)定义 (二)视频监控中心录像服务器 二、存储策略服务 (一)存储策略配置 1、 录入页面 2、 选择需要进行录像的视频 3、批量选择多个通道号 4、其他关键参数…

迅为RK3568开发板Android11/12/Linux编译驱动到内核

在平时的驱动开发中,经常需要在内核中配置某种功能,为了方便大家开发和学习,本小 节讲解如何在内核中添加驱动。具体的讲解原理讲解请参考本手册的驱动教程。 Android11 源码如果想要修改内核,可以运行以下命令进行修改: cd ke…

Python类型转换,数据类型转换函数大全 与 strip()函数介绍

Python类型转换,数据类型转换函数大全 虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。 比如说,我们想通过使用 print() 函数…

前端本地覆盖资源(local override)调试

文章目录 前言一、本地替换(local override)能干啥?二、以CSDN为例 实践一波替换图片资源 总结 前言 Chrome 65 中的开发者工具将包含以下新功能: 本地替换 新的无障碍工具 更改标签页 新的搜索引擎优化 (SEO) 和性能审核 Perfo…

rocketmq实现延迟消息

SpringBoot整合RocketMQ发送延时消息 springboot rocketmq 延迟消息 Windows下RocketMQ安装及可视化界面搭建 Java 客户端 RocketMQ延迟消息 项目背景 项目中有延时消息的需求,综合考量RocketMQ比较适合。 RocketMQ支持多维度的延迟级别 支持多种消息类型 基…

Go模板后端渲染时vue单页面冲突处理

go后端模版语法是通过 {{}} ,vue也是通过双花括号来渲染的,如果使用go渲染vue的html页面的时候就会报错,因为分别不出来哪个是vue的,哪个是go的,既可以修改go的模板语法 template.New("output").Delims(&qu…

【大数据进阶第三阶段之Datax学习笔记】使用阿里云开源离线同步工具DataX 实现数据同步

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax快速入门 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax类图 【大数据进阶第三阶段之Datax学习笔记】使用…

新生儿成长的阳光之钙:补充注意事项指南

引言: 钙是新生儿骨骼发育不可或缺的重要元素,对于宝宝的生长发育起着至关重要的作用。本文将深入探讨钙的功能、补充时机,以及在给新生儿补充钙时应该注意的事项,为小天使们提供最贴心的呵护。 第一部分:钙的重要性与…

基于ssm社区老年人关怀服务系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本社区老年人关怀服务系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数…

Linux系统——测试端口连通性方法

目录 一、TCP端口连通性测试 1、ssh 2、telnet(可能需要安装) 3、curl 4、tcping(需要安装) 5、nc(需要安装) 6、nmap(需要安装) 二、UDP端口连通性测试 1、nc(…

11Spring IoC注解式开发(上)(元注解/声明Bean的注解/注解的使用/负责实例化Bean的注解)

注解的存在主要是为了简化XML的配置。Spring6倡导全注解开发。 注解开发的优点:提高开发效率 注解开发的缺点:在一定程度上违背了OCP原则,使用注解的开发的前提是需求比较固定,变动较小。 1 注解的注解称为元注解 自定义一个注解: package com.sunspl…

保留几位小数的函数、全排列函数、​反斜杠的作用、二进制、八进制、十六进制的输入​、求三角形面积的三种方法、求平方根、N次方如何表示

保留几位小数的函数 方法一&#xff1a; 头文件 #include<iomanip> 格式 cout<<fixed<<setprecision(int n)<<a; 作用&#xff1a;把a保留三位小数 方法二&#xff1a; 还有一种方法&#xff0c;就是用C从C语言保留的printf()方法。 保留二位小数&a…

QML实现的图片浏览器

很久之前实现了一个QWidget版本的图片浏览器:基于Qt5的图片浏览器QHImageViewer 今天用QML也实现一个,功能差不多: ●悬浮工具栏 ●支持图片缩放、旋转、还原、旋转、拖动。 ●拖动图片时,释放鼠标图片会惯性滑动。 ●支持左右翻页查看文件夹中的图片。 ●支持保存图片至本…

低代码的应用场景

Gartner 在 2019 年的低代码调研报告中&#xff0c;曾经绘制过一张用来阐述低代码适用场景的“应用金字塔”&#xff0c;如下图所示&#xff1a; 应用级别划分&#xff1a;从下往上&#xff0c;分别为工作组级(Workgroup Class)、部门级(Departmental Class)、企业级(Enterpris…

【HashMap】结构和底层原理

文章目录 HashMap结构和底层原理 HashMap 结构和底层原理 ​ HashMap 是我们非常常用到数据结构&#xff0c;由数组和链表构成的数据结构&#xff0c;数组里面每个地方都存了 key-value 这样的实例&#xff0c;在Java7叫 Entry 在 Java8 中叫 Node ​ 因为他本身所有的位置都…

模型的权值平均的原理和Pytorch的实现

一、前言 模型权值平均是一种用于改善深度神经网络泛化性能的技术。通过对训练过程中不同时间步的模型权值进行平均&#xff0c;可以得到更宽的极值点&#xff08;optima&#xff09;并提高模型的泛化能力。 在PyTorch中&#xff0c;官方提供了实现模型权值平均的方法。 这里…

李沐-《动手学深度学习》--02-目标检测

一 、目标检测算法 1. R-CNN a . 算法步骤 使用启发式搜索算法来选择锚框&#xff08;选出多个锚框大小可能不一&#xff0c;需要使用Rol pooling&#xff09;使用预训练好的模型&#xff08;去掉分类层&#xff09;对每个锚框进行特征抽取&#xff08;如VGG,AlexNet…)训练…

MYSQL篇--事务机制高频面试题

事务 1 什么是数据库事务&#xff1f; 事务是一个不可分割的数据库操作序列&#xff0c;也是数据库并发控制的基本单位&#xff0c;其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作&#xff0c;要么都执行&#xff0c;要么都不执行。…

【sqlite3】sqlite3在linux下使用sqlitebrowser工具实现数据可视化

sqlite3在linux下使用sqlitebrowser工具实现数据可视化 1. ### install sqlitebrowser 1. ### install sqlitebrowser 安装指令 sudo apt-get install sqlitebrowser通过工具打开数据库 sqlitebrowser stereo.db打开效果