首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >机械臂末端坐标系表达方式

机械臂末端坐标系表达方式

作者头像
索旭东
发布2026-06-08 13:50:38
发布2026-06-08 13:50:38
00
举报
文章被收录于专栏:具身小站具身小站

PART 01

向量定义

在机器人学和计算机图形学中,有两个术语有严格的区分。

RPY 角 (Roll-Pitch-Yaw angles)

方向向量/法向向量 (Direction Vector / Normal Vector)

PART 02

方向向量/法向向量

指表示方向的单位向量,即三维空间中的一个归一化矢量。

n

(法向)就是一个方向向量。

n_x, n_y, n_z

是这个向量的三个分量,即向量在基坐标系 X、Y、Z 轴上的投影。

这种表示也被称为 方向余弦 (Direction Cosines),因为三个分量分别是该向量与三个坐标轴夹角的余弦值。

特点

特性

说明

定义形式

单位向量(n_x, n_y, n_z),满足 n_x2+n_y2+n_z2=1

物理意义

直接指向空间中的一个具体方向

自由度

2 个独立自由度(因为是单位向量,三个分量受一个约束)

唯一性

对于一个给定方向,有唯一表示

奇异性

无奇点

直观性

可以直接用来做位移:位移 = 距离 × 方向向量

用途

几何计算、力控、导纳控制、坐标系与基坐标系之间的映射

特性

说明

定义形式

三个角度 (roll,pitch,yaw)

物理意义

描述“怎么从基坐标系转到当前姿态”的过程

自由度

3 个独立参数

唯一性

不唯一:不同角度组合可表示同一姿态

奇异性

有万向节死锁:Pitch = ±90° 时,Roll 和 Yaw 自由度为 1

直观性

不直接;不能直接把角度乘到距离上做位移

用途

运动插补、用户界面显示、某些轨迹生成

PART 03

RPY 角

一种用三个 顺序旋转角度 表示空间姿态的欧拉角约定,RPY 来源于船舶/航空术语,由绕固定轴的旋转序列定义:

  • Roll(滚转) :绕 X 轴 旋转
  • Pitch(俯仰) :绕 Y 轴 旋转
  • Yaw(偏航) :绕 Z 轴 旋转

通常是地球固定轴按 Z → Y → X 顺序施加旋转。

特点

PART 04

区别对比

比较维度

RPY 角

法向向量 n_xy

表达什么

姿态本身的“旋转过程”

某个轴的“最终方向”

参数数量

3

3 个分量,2 个独立自由度

是否可直接用于位移

是(直接乘以距离)

是否有奇异

有(Pitch=±90°)

唯一性

差(同一姿态无数种表示)

好(唯一方向)

语义清晰度

依赖位姿序列定义

几何上唯一且不变

RPY 和法向向量 n的关系

RPY是“过程的描述”,法向向量是“结果”。

形式

含义

特点

RPY 角度

描述“为了得到这个姿态,基坐标系按什么顺序旋转了多少度”

三个数、有顺序依赖、不直观

法向向量 n

描述“末端工具的 Z 轴最终指向哪里”

一个方向向量、直接可用、无顺序歧义

数学关系: 给定一个旋转矩阵 R,可以用 RPY 序列表达它的旋转过程,反过来,给定 RPY 角度,可以计算出旋转矩阵。

而法向向量 n 就是旋转矩阵的 第三列

无论旋转用欧拉角、四元数还是其他方式表示, 法向向量是唯一的 ,它是姿态的最终结果。

例: 末端先偏航 30°,再俯仰 45°。

  • RPY:(yaw=30°, pitch=45°, roll=0°)
  • 法向向量:指向空间的某一个具体方向,不再是角度,而是三个分量,例如 (0.353, 0.612, 0.707)。

RPY 变化 ⇒ 旋转矩阵变化 ⇒ 法向向量随之变化。 RPY 里的“pitch”好像和法向关系紧密,但实际上法向方向同时受 yaw、pitch 甚至 roll 的影响 。

PART 05

末端姿态表达

用法向向量 n,不能用 RPY 角度直接作方向向量

理由有两点:

  1. 物理意义清晰,直接可操作 n 就是工具 Z 轴的指向,即接触法向。位移计算直接用 n:Δp=±Δd⋅n+表示前进,− 表示后退。用 RPY 无法直接做这个,不能把“pitch=30°”直接乘到位移上。
  2. 避免欧拉角的多个坑
  • 奇异点:pitch=±90°时,roll 和 yaw 混叠,方向突变。
  • 不唯一:RPY(30°,45°,0°) 和 RPY(210°,135°,180°) 姿态完全相同,角度值却差很远。
  • 顺序耦合:Yaw 改变时,工具 Z 轴方向也改变,并不只是 pitch 的事。

而 n是数值唯一的物理方向,绕过所有这些麻烦。

具体使用方法

在控制循环的第一步,做完正运动学后 不要用欧拉角 ,而是直接取旋转矩阵的第三列:

代码语言:javascript
复制
R = forward_kinematics(q)              # 得到 3x3 旋转矩阵
n = R[:, 2]                            # 取第三列 → 工具 Z 轴方向
n = n / norm(n)                        # 保证单位向量

然后用它合成位移:

代码语言:javascript
复制
delta_p = delta_x * t_x + delta_y * t_y + delta_z * n

这里 tx 、 ty 分别是旋转矩阵的第一列和第二列(切向), n是法向。

PART 06

总结

RPY 只是计算中间的过渡产物,不适合直接用于控制。

从正运动学得到旋转矩阵后, 立即提取它的三个列向量作为工具坐标系的方向基 。

法向控制用第三列 n,切向控制用第一、二列 tx,ty 。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 具身小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档