1 摘要
该REP为ROS中使用的单位和坐标约定提供了参考。
2 基本原理
单位和约定不一致是开发人员常见的集成问题来源,也可能导致软件错误。由于数据转换,它还会创建不必要的计算。该REP记录了ROS的标准约定,以减少这些问题。
3 例外情况
潜在的机器人软件的范围太广,无法要求所有ROS软件都遵循本REP的准则。但是,选择不同的约定应该有充分的理由并有据可查。
4 单位
我们选择对国际单位制进行标准化。这些单位是最一致的国际标准。国际单位制是由国际度量衡局维护的[1]。维基百科上有很多关于国际单位制的文档[2]。
4.1 基本单位
这些是常用的基本单位:
4.2 衍生单位
SI定义了七个基本单位和许多派生单位。如果您不使用SI基本单位,则应使用SI衍生的单位。
可以在Wikipedia上找到有关SI派生单位的好的文档。
ROS中常用的SI衍生单位为:
5 坐标系约定
所有坐标系都应遵循这些约定。
5.1 Chirality
所有系统都是右手的。这意味着他们遵守右手规则。
5.2 轴方向
对于本体,标准是:
- x forward
- y left
- z up
对于地理位置的短距离笛卡尔表示法,请使用East North Up(ENU)约定:
- X east
- Y north
- Z up
为避免float32值较大的精度问题,建议选择附近的原点,例如系统的起始位置。
5.3 Suffix Frames(后缀坐标系)
对于摄像机,通常会有第二个坐标系以“ _optical”后缀定义。这使用了稍微不同的约定:
- z forward
- x right
- y down
对于需要在北东下(NED)约定下工作的室外系统,请定义一个经过适当转换的后缀“ _ned”的辅助坐标系:
- X north
- Y east
- Z down
5.4 旋转表示
有很多表示旋转的方法。下面列出了首选顺序以及基本原理。
1.四元数
- 紧凑的表示
- 没有奇异性
2.旋转矩阵
- 没有奇异性
3.fixed axis roll, pitch, yaw about X, Y, Z axes respectively
- 顺序上没有歧义
- 用于角速度
4.euler angles yaw, pitch, and roll about Z, Y, X axes respectively
通常不建议使用欧拉角,这是因为默认情况下具有使用不同约定的24个“有效”约定以及不同的域。
根据右手定则,方向的偏航分量会随着子坐标系的逆时针旋转而增加,对于地理位姿,指向东方时偏航为零。
这仅需特别提及,因为它不同于传统的罗盘方位角,后者在指向北时为零,并顺时针递增。硬件驱动程序应在发布标准ROS消息之前进行适当的转换。
5.5 协方差表示
1.Linear
float64[9] linear_acceleration_covariance # 3x3 row major matrix in x, y, z order
2.Angular
float64[9] angular_velocity_covariance # 3x3 row major matrix about x, y, z order with fixed axes
3.Six Dimensional
# 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
参考
https://www.ros.org/reps/rep-0103.html