原地址:REP 103 – Standard Units of Measure and Coordinate Conventions (ROS.org)
摘要
本报告为ROS中使用的单位和坐标惯例提供参考。
理论依据
单位和惯例的不一致是开发人员整合问题的一个常见来源,也可能导致软件的错误。它还可能由于数据转换而产生不必要的计算。本报告记录了ROS的标准约定,以减少这些问题。
例外情况
潜在的机器人软件的范围太广,不能要求所有的ROS软件都遵循本REP的准则。然而,选择不同的惯例应该有充分的理由,并有充分的文件证明。
例如,有些领域的默认约定是不合适的。星际长度不适合用米来衡量,面向空间的库可能希望选择不同的惯例。还有其他的例外情况,不同的领域可能希望解决。
单位
我们选择以SI单位为标准。这些单位是最一致的国际标准。SI单位由Bureau International des Poids et Mesures维护。 维基百科上有关于国际单位制的良好文档 。
基本单位
这些是常用的基本单位
数量 | 单位 |
---|---|
长度 | 米 |
质量 | 千克 |
时间 | 秒 |
电流 | 安培 |
派生单位
SI定义了七个基本单位和许多衍生单位。如果你不使用SI的基本单位,你应该使用SI的派生单位。
在维基百科上可以找到关于SI派生单位的良好文档[3] 。
ROS中常用的SI派生单位有。
数量 | 单位 |
---|---|
角度 | 弧度 |
频率 | 赫兹 |
力 | 牛顿 |
功率 | 瓦特 |
电压 | 伏特 |
温度 | 摄氏度 |
磁性 | 特斯拉 |
坐标框架公约
所有坐标框架都应遵循这些约定。
手性
所有系统都是右手的。这意味着它们符合右手规则[4]。
轴的方向
相对于一个身体来说,标准是。
-
x向前
-
y 向左
-
z向上
对于地理位置的短距离直角坐标表示,使用**东北上(ENU)**惯例。 -
X东
-
Y北
-
Z向上
为了避免大浮点32值的精度问题,建议选择一个附近的原点,比如你的系统的起始位置。
后缀框架
在相机的情况下,通常会有一个定义为"_optical "后缀的第二帧。这使用了一个稍微不同的惯例。
- z向前
- x 向右
- y向下
对于户外系统,如果希望在**东北下(NED)**的惯例下工作,可以用"_ned "后缀定义一个适当的转换的第二帧。
- X北
- Y 东
- Z向下
旋转表示法
有许多方法来表示旋转。首选的顺序列在下面,并附有理由。
-
四元数
- 紧凑的表示法
- 没有奇异性
-
旋转矩阵
- 没有奇异性
-
分别围绕X、Y、Z轴的固定轴滚动、俯仰、偏航
- 顺序上没有歧义
- 用于角速度
-
欧拉角 分别围绕Z、Y、X轴的偏航、俯仰和滚动
- 由于有24个 "有效 "约定,不同领域默认使用不同的约定,所以一般不鼓励使用欧拉角。
根据右手规则,方向的偏航随着子框架的逆时针旋转而增加,对于地理姿势,当指向东方时偏航为零。
这需要特别提及,因为它与传统的罗盘方位不同,罗盘方位在指向北方时为零,并顺时针递增。硬件驱动应该在发布标准ROS消息之前进行适当的转换。
协方差表示法
线性
float64[9] linear_acceleration_covariance # 3x3行主要矩阵,按x、y、z顺序排列
角度性
float64[9] angular_velocity_covariance # 3x3行主要矩阵,关于x、y、z顺序的固定坐标轴
六维
# 6x6协方差矩阵的行主表示法
# 方向参数使用固定轴表示。
# 按照顺序,这些参数是
# (x, y, z, 关于X轴的旋转, 关于Y轴的旋转, 关于Z轴的旋转)
float64[36] 协方差
参考文献
[1] 国际计量局(http://www.bipm.org/en/home/)
[2] http://en.wikipedia.org/wiki/International_System_of_Units
[3] http://en.wikipedia.org/wiki/SI_derived_units
[4] http://en.wikipedia.org/wiki/Right-hand_rule
[5] http://en.wikipedia.org/wiki/Geodetic_datum#Local_east.2C_north.2C_up_.28ENU.29_coordinates
[6] http://en.wikipedia.org/wiki/North_east_down
版权声明
本文件已被置于公共领域。