很多初学者在 URDF 建模、TF 坐标变换、机器人姿态调试时,最容易踩坑的就是 RPY 欧拉角。网上大量教程存在口语歧义、旋转方向写反、倾斜效果描述错误。

本文基于 **ROS2 官方标准 **,详细讨论 RPY 定义及相关问题。

一、ROS 机器人本体坐标系(base_link)

所有 RPY 判断,必须基于这套固定坐标系,否则全部错乱:

  • X+:机器人正前方(前进方向)

  • Y+:机器人自身左侧

  • Z+:机器人竖直向上

ROS、URDF、RViz、TF2 全部统一遵循这套右手坐标系。

把机器人想像成一架飞机,你是驾驶员,上述坐标正向就是指向你的正前方、左侧、上方。

二、RPY 全称与对应旋转轴

RPY 是机器人领域专用航空欧拉角:

  • R = Roll 滚转:绕 X 轴 旋转

  • P = Pitch 俯仰:绕 Y 轴旋转

  • Y = Yaw 偏航:绕 Z 轴 旋转

URDF 写法固定:rpy="roll pitch yaw"

三、核心规则:右手定则(ROS 唯一正方向标准)

所有正负角度判断只看这一条:

右手大拇指指向坐标轴正方向,四指弯曲方向 = 角度正向旋转方向

四、逐轴精准姿态效果(纠正常见错误)

1. Roll(绕 X 前向轴旋转)

  • Roll > 0(正向):机器人左侧抬高、右侧下沉(视觉车身向右歪)

  • Roll < 0(负向):机器人右侧抬高、左侧下沉(视觉车身向左歪)

早期很多教程误认为“正向是向左倾斜”,这是典型歧义错误!Roll 正向一定是左高右低

2. Pitch(绕 Y 左向轴旋转)

  • Pitch > 0:车头抬起、车尾下沉(抬头)

  • Pitch < 0:车头下压、车尾抬起(低头)

3. Yaw(绕 Z 向上轴旋转)

  • Yaw > 0:机器人水平向左原地转弯(口令:向左转)

  • Yaw < 0:机器人水平向右原地转弯

五、URDF 的RPY 旋转顺序(90%新手踩坑)

URDF 的 <origin rpy="">不是同时旋转,而是固定顺序:

先 Roll(X) → 再 Pitch(Y) → 最后 Yaw(Z)

且全程基于 机体自身坐标系(动轴) 叠加旋转,不是世界坐标系。

这就是为什么复制别人 rpy 参数、姿态完全对不上的核心原因。

实例:修改连杆/关节姿态

<origin xyz="0 0 0.1" rpy="0.2 0 0" />

含义:Z 升高 0.1m,机身轻微左侧抬高、向右倾斜

六、常见误区汇总

  1. 误区:Roll 正向向左倾斜 → (左抬高=车身向右倒)

  2. 误区:RPY 三个角度同时生效 → (严格 X→Y→Z 顺序叠加)

  3. 误区:凭视觉直觉判断正负 → (必须严格右手定则)

  4. 误区:和游戏/相机坐标系混用 → (机器人坐标系专属标准)

记住:X前Y左Z上 + 右手定则 + 左高右低Roll正向 + XYZ固定旋转顺序

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐