3. 机构学基础

灵巧手的运动学本质,是研究手掌、各节指骨、关节与指尖在三维空间中的位姿关系。无论是正运动学求解、雅可比矩阵推导,还是轨迹规划与力控,都建立在刚体运动描述这一数学基础之上。本章围绕刚体运动、旋转矩阵、齐次变换、欧拉角与四元数五种表示方法,说明它们在灵巧手建模中的具体作用与选用原则。

一、核心原理:刚体运动与位姿表示

刚体在三维空间中的运动可分解为平移与旋转两部分。灵巧手的一根手指可视为由多个刚体(指骨)通过旋转关节串联而成的开链机构,每个关节提供一个自由度,指尖位姿由各关节角度累积决定。描述刚体位姿需要回答两个问题:位置在哪里(平移向量 p ∈ R³),姿态朝向如何(旋转矩阵 R ∈ SO(3))。

旋转矩阵是 3×3 正交矩阵,满足 RᵀR = I 且 det(R) = 1。它直接作用于向量完成坐标变换,物理意义清晰,但存在 9 个参数、6 个约束,冗余度高,且无法直接插值。齐次变换矩阵将旋转与平移统一为 4×4 矩阵,使连续变换可通过矩阵连乘表达,是机器人运动学中最常用的形式。

灵巧手单指运动学链:基座 → 掌指关节(MCP) → 近节指骨 → 近端指间关节(PIP) → 中节指骨 → 远端指间关节(DIP) → 远节指骨 → 指尖。每一段对应一个齐次变换矩阵,指尖位姿为各矩阵之积。

二、五种表示方法及其在灵巧手中的应用

不同表示方法各有适用场景,下表对比了它们在灵巧手建模中的特性。

表示方法 参数数量 优点 局限 灵巧手典型用途
旋转矩阵 R 9(含6约束) 变换直观、可连乘 冗余、难插值 雅可比、力传递计算
齐次变换 T 16(含约束) 平移旋转统一 存储冗余 正运动学链式求解
欧拉角 3 紧凑、易理解 万向锁、多解 关节角直观配置
轴角 4 几何意义明确 插值不自然 单关节旋转描述
四元数 4 无万向锁、插值平滑 不够直观 姿态插值、抓取规划

在灵巧手中,关节通常为旋转副,单关节旋转可用轴角或四元数描述;而整根手指的位姿链则用齐次变换矩阵串联。欧拉角常用于人机交互界面中让操作者直观设定手指姿态,四元数则用于抓取过程中的平滑姿态插值。

三、方法流程:从关节角到指尖位姿

以三关节手指为例,从关节角计算指尖位姿的流程如下:

  1. 确定各关节旋转轴与相邻指骨的固定变换(DH 参数或旋量参数)。
  2. 为每个关节构造单关节齐次变换矩阵 Tᵢ(θᵢ)。
  3. 按运动链顺序连乘:T_tip = T_base · T₁ · T₂ · T₃。
  4. 从 T_tip 中提取位置向量与旋转矩阵,得到指尖位姿。
  5. 如需姿态插值,将旋转矩阵转为四元数,用球面线性插值(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) 生成平滑轨迹,指尖姿态过渡自然,避免奇异点附近的抖动。这一流程在抓取规划与遥操作中非常常见。

在灵巧手控制中,建议内部计算统一使用四元数或旋转矩阵,仅在显示与人工输入时转换为欧拉角,可有效规避万向锁与多解问题。

五、常见误区与复盘

  • 误区一:认为欧拉角可以直接线性插值。实际上欧拉角存在多解与万向锁,插值结果可能不连续。
  • 误区二:混淆旋转矩阵左乘与右乘的坐标系含义。左乘对应固定坐标系变换,右乘对应动坐标系变换。
  • 误区三:四元数未归一化就参与运算,导致旋转矩阵出现缩放误差。
  • 复盘建议:建立统一的位姿数据结构,明确存储格式(矩阵/四元数)与转换接口,减少不同模块间的表示混用。
灵巧手单指运动链与位姿表示 基座 T_base MCP θ₁ 近节指骨 PIP θ₂ 中节指骨 DIP θ₃ 远节指骨 指尖 T_tip T₁(θ₁) T₂(θ₂) T₃(θ₃) 旋转矩阵 R 3×3 正交矩阵 齐次变换 T 4×4 平移+旋转 欧拉角 3 参数,直观 四元数 4 参数,无万向锁 关节角 θ₁,θ₂,θ₃ → 齐次变换连乘 → 指尖位姿 (p_tip, R_tip) 姿态插值:R → 四元数 → SLERP → 平滑轨迹

掌握上述五种表示方法及其转换关系,是后续建立灵巧手正逆运动学、雅可比矩阵与抓取力分析的前提。实际工程中应根据计算效率、奇异点规避与插值需求,灵活选择并统一位姿表示规范。