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

        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 )

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

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

相关文章

Page 251~254 Win32 GUI项目

win32_gui 源代码&#xff1a; #if defined(UNICODE) && !defined(_UNICODE)#define _UNICODE #elif defined(_UNICODE) && !defined(UNICODE)#define UNICODE #endif#include <tchar.h> #include <windows.h>/* Declare Windows procedure */…

【Vue2】一个数组按时间分割为【今年】和【往年】俩个数组

一. 需求 后端返回一个数组&#xff0c;前端按时间维度将该数组的分割为【今年】和【往年】俩个数组后端返回的数组格式如下 timeList:[{id:1,billTime:"2024-01-10",createTime:"2024-01-10 00:00:00",status:0},{id:2,billTime:"2022-05-25"…

EVE-NG初次启动及WEB客户端访问来了

本章从虚拟机Eve模拟器启动、模拟器的启动配置、浏览器访问三个步骤讲解EVE-NG的首次启动。 1.启动模拟器 打开虚拟机环境&#xff0c;启动安装好的EVE-NG虚拟机&#xff0c;进入如下界面。 登录时输入社区版默认账户是root&#xff0c;密码是eve&#xff0c;完成登陆。 1.配置…

00后网文作家年入百万,跻身“十二天王”之列!

各位书友们&#xff0c;有没有觉得现在网文界越来越风起云涌&#xff1f;最近&#xff0c;2023年网络文学榜样作家“十二天王”出炉&#xff0c;其中一位00后作家季越人引起了广泛关注&#xff01;这位公共管理系的大四学生凭借他的第一部网文小说《玄鉴仙族》一鸣惊人&#xf…

Ubuntu系统中指定端口防火墙状态查询与操作

浏览器访问&#xff1a; 如果遇到如山图所示的情况&#xff0c;既有可能是防火墙的问题。具体解决方案参照如下&#xff1a; 1.指定端口的防火墙状态查询 &#xff08;1&#xff09;查询命令 sudo ufw status | grep 8081/tcp #其中8081为要查询的端口号 如果端口是打开的…

达梦数据库的使用

文章目录 一、安装程序介绍1.dm管理工具2.dm服务查看器3.数据迁移工具 二、达梦数据库联机备份与还原操作1.配置归档2.备份1.归档备份 3.备份还原 一、安装程序介绍 官网文档&#xff1a;https://eco.dameng.com/docs/zh-cn/faq/faq-import-export.html 达梦数据库安装成功后…

windows安装RabbitMq,修改数据保存位置

1、先安装Erlang&#xff0c; Erlang和RabbitMQ有版本对应关系。 官网RabbitMQ与Erlang版本对应RabbitMQ Erlang Version Requirements — RabbitMQ 2、安装RabbitMQ。 3、修改数据保存地址。找到安装目录下的sbin文件夹&#xff0c;找到rabbitmq-env.bat&#xff0c;编辑文件…

免费简单好用的 webshell 在线检测:支持 php、jsp、asp等多格式文件

话不多说&#xff0c;直接上图上链接&#xff1a;https://rivers.chaitin.cn/?share3d4f2e8aaec211eea5550242c0a8170c 还是比较好用的&#xff0c;支持 PHP、JSP 文件 webshell 检测&#xff0c;看官方解释文档&#xff0c;引擎使用静态文本特征、骨架哈希、静态语义分析、动…

广告投放场景中ABtest分析的评价、优化和决策建议

写在开头 在当今数字化的商业环境中&#xff0c;广告投放是企业获取客户和推动销售的重要手段。然而&#xff0c;随着市场竞争的加剧&#xff0c;制定有效的广告策略变得愈发复杂。在这个背景下&#xff0c;AB测试成为了广告主们不可或缺的工具之一。本文将深入探讨广告投放中…

TDengine 时序数据库 研究学习以及实战

下载地址&#xff1a;TDengine 发布历史及下载链接 | TDengine 文档 | 涛思数据 下载客户端和服务端 服务端和客户端的安装后 TDengine 客户端连接工具地址&#xff1a;Archive Files | DBeaver Community 添加驱动 新增 》 设置 选择驱动类后 设置里的类名就自动填写了&…

Vs2019安装教程

1、下载链接&#xff1a;Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com)https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/2、下载 而后跟进安装&#xff1a;&#xff08;虽然这是2022的&#xff0c;但是和2022和2019基本差不多&am…

TS 36.331 V12.0.0-过程(2)-连接控制(2)-RRC连接重配

​本文的内容主要涉及TS 36.331&#xff0c;版本是C00&#xff0c;也就是V12.0.0。

基于实时Linux+FPGA实现NI CompactRIO系统详解

利用集成的软件工具链&#xff0c;结合信号调理I/O模块&#xff0c;轻松构建和部署实时应用程序。 什么是CompactRIO&#xff1f; CompactRIO系统提供了高处理性能、传感器专用I/O和紧密集成的软件工具&#xff0c;使其成为工业物联网、监测和控制应用的理想之选。实时处理器提…

YOLOv8优化策略:轻量化改进 | 华为Ghostnet,超越谷歌MobileNet | CVPR2020

🚀🚀🚀本文改进:Ghost bottleneck为堆叠Ghost模块 ,与YOLOV8建立轻量C2f_GhostBottleneck 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.Ghostnet介绍 论文: https://arxiv.org/pdf/1911.11907.…

科技创新领航 ,安川运动控制器为工业自动化赋能助力

迈入工业4.0时代&#xff0c;工业自动化的不断发展&#xff0c;让高精度运动控制成为制造业高质量发展的重要技术手段。北京北成新控伺服技术有限公司作为一家集工业自动化产品销售、系统设计、开发、服务于一体的高新技术企业&#xff0c;其引进推出的运动控制产品一直以卓越的…

Hive分区表实战 - 单分区字段

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;创建图书数据库&#xff08;二&#xff09;创建国别分区的图书表&#xff08;三&#xff09;在本地创建数据文件&#xff08;四&#xff09;按分区加载数据1、加载中文书籍数据到countrycn分区2、加载英文书籍数据…

分布式数据库原理及技术实验及个人思考

Hive的数据库及表的存储结构体系讨论&#xff1a; 1.显示hive所在数据库的位置 方法一&#xff1a;一次性临时存储 >hive set hive.cli.print.current.dbtrue 方法二&#xff1a;永久存储 在conf文件夹下修改hive-site.xml配置文件&#xff0c;添加 <property> …

医疗器械网络安全风险评定CVSS打分

为了完成医疗器械软件的网络安全风险评定相关文档&#xff0c;需要进行CVSS评分&#xff0c;这个评分对于第一次做的人来说感觉还是有些迷惑的&#xff0c;查了一些资料&#xff0c;留作参考。 CVSS 指的是 Common Vulnerability Scoring System&#xff0c;即通用漏洞评分系统…

Linux学习记录——삼십팔 网络层IP协议

文章目录 1、了解IP协议2、IP协议报文1、8位服务类型2、16位总长度&#xff08;字节数&#xff09;3、8位生存时间&#xff08;TTL&#xff09; 3、网段划分1、网段划分和CIDR方案2、子网划分简单方法3、IP地址问题的解决方案 4、公网内网1、内网分配2、运营商管理方法 5、路由…

23种设计模式精讲,配套23道编程题目 ,支持 C++、Java、Python、Go

关于设计模式的学习&#xff0c;大家应该还是看书或者看博客&#xff0c;但却没有一个边学边练的学习环境。 学完了一种设计模式 是不是应该去练一练&#xff1f; 所以卡码网 针对 23种设计&#xff0c;推出了 23道编程题目&#xff0c;来帮助大家练习设计模式&#xff0c;地…