科普: ROS/URDF 标准 RPY 欧拉角
很多初学者在 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,机身轻微左侧抬高、向右倾斜。
六、常见误区汇总
-
误区:Roll 正向向左倾斜 → 错(左抬高=车身向右倒)
-
误区:RPY 三个角度同时生效 → 错(严格 X→Y→Z 顺序叠加)
-
误区:凭视觉直觉判断正负 → 错(必须严格右手定则)
-
误区:和游戏/相机坐标系混用 → 错(机器人坐标系专属标准)
记住:X前Y左Z上 + 右手定则 + 左高右低Roll正向 + XYZ固定旋转顺序
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)