ROS 坐标系 官方教程与个人理解
1. 概述
根据官方教程和SLAM中坐标系的使用总结ROS中坐标系相关知识,以供自己以后复习参考。建议直接跳转到7.个人理解
部分,当然前面的也可以慢慢看看~
2. REP 105——移动平台坐标系(ROS.org)
REP代表了ROS使用的移动平台的坐标框架的命名约定和语义意义。
为了更好地集成和重用软件组件,驱动程序、模型和库的开发人员需要一个共享约定来协调框架。坐标框架的共享约定为开发人员创建移动基地的驱动程序和模型提供了规范。类似地,创建库和应用程序的开发人员可以更容易地使用与此规范兼容的各种移动基础上的软件。例如,该代表指定了编写新的本地化组件所需的框架。它还指定了可以用来引用机器人的移动基座的帧。
3. 坐标系
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坐标系可用于作为长期的全局参考
,由于离散变化的性质,进行局部感知和局部行动时效果并不好。
3.4 坐标系的约定
坐标系可以作为全局的参考,也可以只是应用于程序的特定场合。
特定场合的一个例子:根据EGM1996[4]的平均海平面[3],map坐标系的z位置相当于海平面以上几米。无论选择什么,最重要的是参考位置的选择要清楚地记录下来,以使用户避免混淆。
当定义一个像地球这样的全局参考系时:
默认情况下,x轴向东对齐,y轴向北对齐,z轴向上对齐。东北天坐标系
。
如果没有其他参考,默认的z轴位置在WGS84椭球高度为零。
如果应用的具体要求不能满足上述要求,则仍应尽可能多地满足要求。
不能满足上述要求的应用程序的一个例子:机器人在没有外部参考设备(如GPS、罗盘或高度计)的情况下启动。但如果机器人仍然有一个加速计,它可以将当前位置进行map初始化
,z轴向上。
如果机器人在启动时有一个罗盘航向,那么它也可以初始化x向东,y向北。
如果机器人在启动时有测高仪估计,则可以将高度初始化为MSL。
4. 坐标系之间的联系
我们选择了一种树表示法来将机器人系统中的所有坐标系连接到一起。因此每个坐标系都有一个父坐标系和任意数量的子坐标系
。REP所描述的坐标系联系关系如下: