3. 机构学基础
灵巧手的运动学本质,是研究手掌、各节指骨、关节与指尖在三维空间中的位姿关系。无论是正运动学求解、雅可比矩阵推导,还是轨迹规划与力控,都建立在刚体运动描述这一数学基础之上。本章围绕刚体运动、旋转矩阵、齐次变换、欧拉角与四元数五种表示方法,说明它们在灵巧手建模中的具体作用与选用原则。
一、核心原理:刚体运动与位姿表示
刚体在三维空间中的运动可分解为平移与旋转两部分。灵巧手的一根手指可视为由多个刚体(指骨)通过旋转关节串联而成的开链机构,每个关节提供一个自由度,指尖位姿由各关节角度累积决定。描述刚体位姿需要回答两个问题:位置在哪里(平移向量 p ∈ R³),姿态朝向如何(旋转矩阵 R ∈ SO(3))。
旋转矩阵是 3×3 正交矩阵,满足 RᵀR = I 且 det(R) = 1。它直接作用于向量完成坐标变换,物理意义清晰,但存在 9 个参数、6 个约束,冗余度高,且无法直接插值。齐次变换矩阵将旋转与平移统一为 4×4 矩阵,使连续变换可通过矩阵连乘表达,是机器人运动学中最常用的形式。
二、五种表示方法及其在灵巧手中的应用
不同表示方法各有适用场景,下表对比了它们在灵巧手建模中的特性。
| 表示方法 | 参数数量 | 优点 | 局限 | 灵巧手典型用途 |
|---|---|---|---|---|
| 旋转矩阵 R | 9(含6约束) | 变换直观、可连乘 | 冗余、难插值 | 雅可比、力传递计算 |
| 齐次变换 T | 16(含约束) | 平移旋转统一 | 存储冗余 | 正运动学链式求解 |
| 欧拉角 | 3 | 紧凑、易理解 | 万向锁、多解 | 关节角直观配置 |
| 轴角 | 4 | 几何意义明确 | 插值不自然 | 单关节旋转描述 |
| 四元数 | 4 | 无万向锁、插值平滑 | 不够直观 | 姿态插值、抓取规划 |
在灵巧手中,关节通常为旋转副,单关节旋转可用轴角或四元数描述;而整根手指的位姿链则用齐次变换矩阵串联。欧拉角常用于人机交互界面中让操作者直观设定手指姿态,四元数则用于抓取过程中的平滑姿态插值。
三、方法流程:从关节角到指尖位姿
以三关节手指为例,从关节角计算指尖位姿的流程如下:
- 确定各关节旋转轴与相邻指骨的固定变换(DH 参数或旋量参数)。
- 为每个关节构造单关节齐次变换矩阵
Tᵢ(θᵢ)。 - 按运动链顺序连乘:
T_tip = T_base · T₁ · T₂ · T₃。 - 从
T_tip中提取位置向量与旋转矩阵,得到指尖位姿。 - 如需姿态插值,将旋转矩阵转为四元数,用球面线性插值(SLERP)生成中间姿态。
# 单关节齐次变换(绕 z 轴旋转 θ,沿 z 平移 d)
def dh_transform(theta, d, a, alpha):
return np.array([
[cos(theta), -sin(theta)*cos(alpha), sin(theta)*sin(alpha), a*cos(theta)],
[sin(theta), cos(theta)*cos(alpha), -cos(theta)*sin(alpha), a*sin(theta)],
[0, sin(alpha), cos(alpha), d],
[0, 0, 0, 1]
])
# 三关节手指指尖位姿
T_tip = T_base @ dh_transform(q1, 0, L1, 0) \
@ dh_transform(q2, 0, L2, 0) \
@ dh_transform(q3, 0, L3, 0)
p_tip = T_tip[:3, 3] # 指尖位置
R_tip = T_tip[:3, :3] # 指尖姿态
四、案例场景:抓取姿态插值
假设灵巧手需要从张开姿态过渡到捏取姿态。若直接用欧拉角线性插值,当俯仰角接近 ±90° 时会出现万向锁,导致中间姿态跳变。改用四元数后,先由起始与目标旋转矩阵求出两个单位四元数 q₀、q₁,再按 q(t) = slerp(q₀, q₁, t) 生成平滑轨迹,指尖姿态过渡自然,避免奇异点附近的抖动。这一流程在抓取规划与遥操作中非常常见。
五、常见误区与复盘
- 误区一:认为欧拉角可以直接线性插值。实际上欧拉角存在多解与万向锁,插值结果可能不连续。
- 误区二:混淆旋转矩阵左乘与右乘的坐标系含义。左乘对应固定坐标系变换,右乘对应动坐标系变换。
- 误区三:四元数未归一化就参与运算,导致旋转矩阵出现缩放误差。
- 复盘建议:建立统一的位姿数据结构,明确存储格式(矩阵/四元数)与转换接口,减少不同模块间的表示混用。
掌握上述五种表示方法及其转换关系,是后续建立灵巧手正逆运动学、雅可比矩阵与抓取力分析的前提。实际工程中应根据计算效率、奇异点规避与插值需求,灵活选择并统一位姿表示规范。