? ? ? ? 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)https://www.ros.org/reps/rep-0105.html
? ? ? ? REP-105规定了与ROS配合使用的移动的平台坐标系的命名约定和语义,旨在定义移动平台上使用的统一坐标系框架。它提供了一种规范,以描述移动平台的不同坐标系之间的关系,并定义了一些常用的坐标系,以方便在ROS系统中进行移动平台的建模和控制。
? ? ? ?移动平台通常包括机器人、车辆和其他移动设备,它们具有多个不同的坐标系,例如车身坐标系、底盘坐标系、惯性坐标系等。这些坐标系之间的关系不一致,导致了在不同平台和工具之间进行数据交换和应用开发时的困难。为了更好地集成和重用软件组件,驱动程序、模型和库的开发人员需要一个坐标系的共享约定。坐标框架的共享约定为开发人员创建移动的底座的驱动程序和模型提供了规范。类似地,创建库和应用程序的开发人员可以更容易地将他们的软件与各种与此规范兼容的移动的基座一起使用。例如,这个REP指定了编写一个新的本地化组件所需的帧。它还指定了可用于引用机器人移动的基座的帧。
? ? ? ?REP-105定义了一套命名规则和转换关系,以定义和描述移动平台的坐标系。它规定了坐标系名称的命名空间、命名约定,以及如何通过变换矩阵和旋转表示坐标系之间的关系。
? ? ? ?REP-105定义了几个常用的移动平台坐标系,包括车辆坐标系、底盘坐标系、IMU坐标系、激光雷达坐标系等。它描述了这些坐标系相对于其他坐标系的位置、方向和变换关系。
? ? ? ?base_link 坐标系刚性地附接到移动的机器人基座。?base_link?可以以任意位置或取向附接到基座;对于每个硬件平台,在基座上将存在提供明显参考点的不同位置。请注意,REP 103 [1]规定了框架的首选方向。
? ? ? ?odom?的坐标系是世界固定坐标系。移动的平台在?odom?帧中的姿态可以随时间漂移,没有任何界限。该漂移使得?odom?帧不能用作长期全局参考。然而,?odom?帧中的机器人的姿态被保证是连续的,这意味着?odom?帧中的移动的平台的姿态总是以平滑的方式演变,而没有离散的跳跃。在典型的设置中,?odom?帧是基于诸如车轮里程计、视觉里程计或惯性测量单元之类的里程计源来计算的。odom?帧作为精确的短期局部参考是有用的,但是漂移使其成为不适合长期参考的帧。
? ? ? ?称为?map?的坐标系是一个世界固定坐标系,其Z轴指向上方。移动的平台相对于?map?帧的姿态不应随时间显著漂移。?map?帧不是连续的,这意味着?map?帧中移动的平台的姿态可以在任何时间以离散跳跃的方式改变。在典型的设置中,定位组件基于传感器观测不断地重新计算?map?帧中的机器人姿态,因此消除了漂移,但是当新的传感器信息到达时导致离散跳跃。map?帧作为长期全局参考是有用的,但是位置估计器中的离散跳跃使其成为局部感测和动作的差的参考帧。
? ? ? ?地图坐标框架可以全局引用,也可以引用到特定于应用程序的位置。应用特定定位的示例可以是根据EGM1996 [4]的平均海平面[3],使得地图帧中的z位置等于海平面以上的米。无论选择什么,最重要的部分是参考位置的选择被清楚地记录下来,以避免用户混淆。
相对于地球等全局参照定义坐标系时:
? ? ? ?如果存在无法满足上述要求的应用特定要求,则仍应尽可能多地满足。
? ? ? ?不能满足上述要求的应用的一个示例是在没有外部参考设备(例如GPS、罗盘或高度计)的情况下启动机器人。但是如果机器人仍然有一个加速度计,它可以初始化地图在其当前位置与z轴向上。
? ? ? ?如果机器人有一个罗盘航向作为启动,那么它也可以初始化x东,y北。
? ? ? ?如果机器人在启动时有高度计估计,它可以在MSL初始化高度。
? ? ? ?强烈建议在非结构化环境中使用上述约定。
? ? ? ?在结构化环境中,将地图与环境对齐可能更有用。诸如办公楼内部的示例结构化环境通常是直线的并且具有有限的全局定位方法,推荐将地图与建筑物对准,特别是如果建筑物布局是先验已知的。类似地,在室内环境中,建议将地图与地面对齐。如果您在多个楼层上操作,则使用多个坐标系(每个楼层一个坐标系)可能是有意义的。
? ? ? ?如果存在歧义,请回到上面的非结构化环境的约定。或者,如果对环境的先验知识有限,则在结构化环境中仍然可以使用非结构化约定。
?? ? ? ?earth?的坐标系是ECEF的原点。
? ? ? ?此框架旨在允许不同地图框架中的多个机器人进行交互。如果应用程序只需要一个映射,则不期望存在?earth?坐标系。在同时运行多个映射的情况下,需要为每个机器人定制map、odom和base_link帧。如果运行多个机器人并在它们之间桥接数据,则在重写其他机器人的frame_id时,变换frame_id可以在每个机器人上保持标准。
? ? ? ?如果?map?帧被全局引用,则从?earth?到?map?的发布者可以是静态变换发布者。否则,map到earth变换通常需要通过取得当前全球位置的估计并减去地图中的当前估计姿态以获得地图原点的估计姿态来计算。
? ? ? ?在?map?帧的绝对位置在启动时未知的情况下,它可以保持分离,直到可以适当地评估全球位置估计。这将以与在?map?帧中的定位被初始化之前机器人可以在?odom?帧中操作相同的方式操作。
使用切向?map?框架的“地心固定”的可视化效果
? ? ? ?REP-105定义了通过转换矩阵和欧拉角来表示坐标系之间的变换关系。它规定了如何在ROS系统中进行坐标系的传递和计算,以便在不同的坐标系之间进行转换和转发数据。选择了一个树形表示来将机器人系统中的所有坐标系彼此连接起来。因此,每个坐标系具有一个父坐标系和任意数目的子坐标系。本REP中描述的框架随附如下:
? ? ? ?map?帧是?odom?的父帧,?odom?是?base_link?的父帧。尽管直觉告诉我们?map?和?odom?都应该被附加到?base_link?,但是这是不允许的,因为每个帧只能有一个父帧。
? ? ? ?注:上图为坐标系之间关系的最简框图,在图中插入其他额外的坐标系可以提供额外发数据功能。如:在表示飞行器的压力高度的坐标系,压力高度是基于大气大气压的共享估计的高度的近似值。 [5]在飞行应用中,仅使用气压高度计就可以精确地测量压力高度。它可能像里程计一样随时间漂移,但只会垂直漂移。为记录垂直漂移量,可以在惯性一致的?odom?帧和?map?帧之间插入pressure_altitud e帧。将需要额外的估计器来估计?pressure_altitude?相对于?map?的偏移,此额外坐标系可支持额外功能性且不破坏上文相关概念。
? ? ? ?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?) |