抽象
该 REP 为单位和坐标约定提供了参考 在 ROS 中使用。
理由
单位和约定的不一致是 开发人员的集成问题,也可能导致软件 错误。由于数据,它还可能产生不必要的计算
转换。该 REP 记录了 ROS 的标准约定 以减轻这些问题。
异常
潜在的机器人软件的范围太广了,不能要求所有 ROS 软件遵循此 REP 的准则。但是,选择不同的
公约应有充分的理由和充分的文件记录。
例如,有些域的默认约定不是 适当。星际长度的测量不恰当 米,而面向空间的图书馆可能希望选择不同的
公约。不同的域可能希望有其他例外情况 解决。
单位
我们选择对 SI 单位进行标准化。这些单位是最多的 一致的国际标准。SI单位由主席团维护 International
des Poids et Mesures.[1] 有很好的文档 在维基百科上为国际单位制 [2]
基本单元
这些是常用的基本单位
派生单位
SI 定义了七个基本单位和许多派生单位。如果您不使用 SI 基本单位,则应使用 SI 派生单位。
可以在维基百科上找到关于 SI 派生单位的良好文档 [3]
ROS 中常用的 SI 派生单位有:
坐标系约定
所有坐标系都应遵循这些约定。
手性
所有系统都是右撇子。这意味着它们符合右手法则[4]。
轴方向
就身体而言,标准是:
对于地理位置的短程笛卡尔表示,请使用东北向上 [5] (ENU) 约定:
为避免 float32 值较大的精度问题,建议 选择附近的原点,例如系统的起始位置。
后缀帧
对于相机,通常有第二个帧定义 “_optical”后缀。这使用了一个略有不同的约定:
对于希望在东北向下 [6] (NED) 约定下工作的室外系统,定义适当转换的 带有“_ned”后缀的辅助帧:
旋转表示
有许多方法可以表示旋转。下面列出了首选顺序以及基本原理。
1.四元数
2.旋转矩阵
3.固定轴分别围绕X、Y、Z轴横滚、俯仰、偏航
4.欧拉角分别围绕 Z、Y、X 轴偏航、俯仰和滚动
- 由于有 24 个“有效”,通常不鼓励使用欧拉角 不同域的约定使用不同的约定违约。
根据右手定则,方向的偏航分量随着子框架的增加而增加 逆时针旋转,对于地理姿势,指向东方时偏航为零。
这需要特别提及,因为它与传统的罗盘轴承不同, 指向北方时为零,顺时针递增。硬件驱动程序应使
在发布标准 ROS 消息之前进行适当的转换。
协方差表示
线性
float64[9] linear_acceleration_covariance # 3x3 row major matrix in x, y, z order
|
角
float64[9] angular_velocity_covariance # 3x3 row major matrix about x, y, z order with fixed axes
|
六维
# Row-major representation of the 6x6 covariance matrix
# The orientation parameters use a fixed-axis representation.
# In order, the parameters are:
# (x, y, z, rotation about X axis, rotation about Y axis, rotation about Z axis)
float64[36] covariance
|
|