第12章 速度与雅可比矩阵

码枢沄社 · 嵌入式体系化教程平台
进阶 👤 已掌握机器人正逆运动学,希望理解速度控制原理的开发者 🔧 机器人关节速度规划、末端轨迹跟踪、奇异点分析
本章你将学到
  • 理解末端速度与关节速度的关系
  • 掌握雅可比矩阵的定义与计算方法
  • 学会分析机器人奇异位形及其影响
核心概念雅可比矩阵奇异位形

正向运动学告诉我们机器人的末端在哪里,逆向运动学告诉我们如何让末端到达某个位置。但在实际控制中,机器人是连续运动的,我们更关心的是“末端以多快的速度移动”以及“各个关节需要以多快的速度转动才能实现这个末端速度”。连接这两个速度的桥梁,就是雅可比矩阵。

生活类比: 想象你驾驶一辆汽车,方向盘转动的角度(关节速度)决定了汽车前进方向的变化率(末端速度)。雅可比矩阵就像是你大脑里那个将“方向盘转多快”映射到“车头指向变化多快”的直觉模型。技术定义: 在机器人学中,雅可比矩阵是一个将关节空间速度映射到末端操作空间速度的线性变换矩阵。

从位置关系到速度关系

正向运动学方程描述了末端位姿 X 与关节角度 θ 的函数关系:X = f(θ)。当我们对时间求导,就得到了速度关系:

核心公式: Ẋ = J(θ) * θ̇

  • 是末端在操作空间的速度(线速度v和角速度ω组成的6维向量)。
  • θ̇ 是关节速度向量(对于6轴机器人,就是6个关节的角速度)。
  • J(θ) 就是雅可比矩阵,它是关节角度 θ 的函数。

这个公式揭示了本质:末端速度是各个关节速度贡献的线性叠加。雅可比矩阵的每一列,就代表了当某个关节以单位速度运动,而其他关节静止时,对末端速度的贡献。

雅可比矩阵的计算与结构

雅可比矩阵的维度是 m × n,其中 m 是操作空间的维度(通常为6,包含3个线速度和3个角速度),n 是机器人的关节数。对于常见的旋转关节机器人,其雅可比矩阵可以按列构造。

关节速度 θ̇
雅可比矩阵 J(θ)
末端速度 Ẋ
(n×1向量)
(m×n矩阵)
(m×1向量)

构造第 i 个旋转关节对应的雅可比矩阵列向量,需要两个关键几何量:

  1. zi-1:第 i 个关节轴在前一个连杆坐标系下的方向向量。
  2. pe - pi-1:从第 i-1 个坐标系原点到末端坐标系原点的向量。

那么,第 i 列的计算公式为:

// 对于旋转关节i
J_i = [ cross(z_{i-1}, (p_e - p_{i-1}));
        z_{i-1} ];

上半部分(前3行)是对末端线速度的贡献,下半部分(后3行)是对末端角速度的贡献。

常见误区

  • 混淆坐标系: 向量 zi-1pe - pi-1 必须在同一个坐标系下表示(通常是基坐标系或世界坐标系),才能进行叉积运算。我在一个六轴机械臂项目中,因为各向量所在的坐标系未统一,导致计算出的雅可比矩阵完全错误,末端运动轨迹严重偏离预期。
  • 忽略角速度部分: 初学者有时只关注末端点的线速度,忘记雅可比矩阵也包含了末端姿态的角速度信息。对于需要精确控制末端姿态的任务(如拧螺丝),角速度部分至关重要。
  • 静态计算动态使用: 雅可比矩阵 J(θ) 是随关节角度变化的。不能在一次轨迹规划中只计算一次就用于全程,而应该在每个控制周期(或足够小的步长内)根据当前关节角度重新计算或更新。

雅可比矩阵的两种核心用途

正向速度计算

  • 已知: 当前关节角度θ和关节速度θ̇。
  • 求解: 末端速度Ẋ。
  • 方法: 直接代入公式 Ẋ = J(θ) * θ̇
  • 场景: 预测机器人在给定关节运动指令下的末端运动状态。

逆向速度计算

  • 已知: 期望的末端速度Ẋd和当前关节角度θ。
  • 求解: 所需的关节速度θ̇。
  • 方法: 求解线性方程 θ̇ = J(θ)-1 * Ẋd(当J可逆时)。
  • 场景: 实现末端轨迹的实时跟踪控制。

逆向速度计算是机器人轨迹跟踪控制的核心。控制器在每个毫秒级周期内,根据期望的末端速度(来自规划好的轨迹)和当前的雅可比矩阵,解算出应立即发送给各关节伺服驱动器的速度指令。

编者提示: 在实际的机器人控制器(如ROS2的ros2_control或厂商SDK)中,雅可比矩阵的计算通常由底层库或固件提供,开发者通过API获取。例如,你可能调用getJacobian(joint_positions)这样一个函数来获得当前位形下的雅可比矩阵,而无需自己从DH参数开始推导编码。理解其原理是为了更好地调试当运动出现异常时,能判断是否是奇异点或雅可比计算问题。

机器人奇异位形:雅可比矩阵的“盲区”

当雅可比矩阵不是满秩时,即其行列式为零,机器人处于奇异位形。此时,矩阵不可逆(或条件数极大),逆向速度计算会遇到严重问题。

常见奇异位形类型与影响
奇异类型典型构型导致的结果直观比喻
边界奇异机械臂完全伸直或完全收回末端在某些方向(如径向)失去移动能力人的手臂完全伸直时,无法再沿手臂方向移动手肘
内部奇异多个关节轴共线或平行末端在某个方向失去移动或转动能力,关节速度可能趋于无穷大两个平行的旋转门(关节)无法产生垂直于门面的平移运动
腕部奇异(对于6轴机器人)第4和第6关节轴共线(腕部翻转)末端绕腕部轴线的旋转自由度丢失,无法改变末端姿态的某个分量手腕扭到极限时,无法再向该方向转动

在奇异点附近,即使求解出关节速度,其数值也会非常大,可能超出电机的能力范围,导致剧烈抖动甚至损坏。因此,路径规划必须设法避开奇异位形。

生活类比: 开车时,如果前轮方向(关节速度)正好与你想让车头移动的方向(末端速度)垂直,那么无论你怎么踩油门(增加关节速度),车都无法向你想要的方向前进,这就是一个“运动奇异点”。技术定义: 奇异位形是机器人操作空间与关节空间映射关系发生降维的构型,在此处机器人的运动灵活性下降。

处理奇异性的实用方法

由于完全避开奇异点有时不现实,工程上常用以下方法处理:

  1. 阻尼最小二乘法(DLS): 这是最常用的方法。不直接求逆,而是求解 (JTJ + λ2I) θ̇ = JTd。其中 λ 是一个小的阻尼因子。当接近奇异点时,λ 可以增大,牺牲一些跟踪精度来换取有限的关节速度。
  2. 任务优先级控制: 将控制任务分层。例如,首要任务是末端位置跟踪,次要任务是优化关节角度(如远离极限)。在奇异点,优先保证首要任务,允许次要任务性能下降。
  3. 奇异鲁棒逆: 对雅可比矩阵进行奇异值分解(SVD),将接近零的奇异值截断或加上阻尼,再构造近似的逆矩阵。

在实际开发中,大部分商业机器人控制器内部已经集成了DLS等算法。开发者需要做的是设置合理的阻尼参数,并监控机器人的“可操作度”指标(如雅可比矩阵的条件数或最小奇异值),当指标变差时触发预警或降速。

输入期望末端速度 Ẋd
获取当前关节角度 θ
计算当前雅可比矩阵 J(θ)
计算可操作度指标
指标良好?
是:标准逆 J-1
计算关节速度 θ̇
否(近奇异)
是:启用阻尼逆 (JTJ+λI)-1JT
计算关节速度 θ̇

这个流程体现了自适应速度求解的思想。我在调试一个焊接机器人时,就曾因为未加入近奇异检测,导致机器人在经过某个特定姿态时突然剧烈抖动。加入基于条件数的判断逻辑后,问题得以解决。

动手试一试

假设一个简单的2自由度平面机械臂,两个连杆长度均为 L1 = L2 = 1米。其末端位置(x, y)与关节角度(θ1, θ2)的正向运动学为:
x = cos(θ1) + cos(θ1+θ2)
y = sin(θ1) + sin(θ1+θ2)

  1. 请根据位置公式对时间求导,推导出末端线速度(ẋ, ẏ)与关节角速度(θ̇1, θ̇2)的关系,并将其写成 Ẋ = J(θ) * θ̇ 的形式,从而得到这个2维雅可比矩阵 J(θ) 的具体表达式。
  2. 计算当 θ1 = 0°, θ2 = 90° 时雅可比矩阵的值。
  3. 分析当 θ2 = 0° 或 180° 时,机器人的运动特性发生了什么变化?(提示:计算此时雅可比矩阵的行列式)。

检验你的理解

  1. 判断题:雅可比矩阵是一个常数矩阵,一旦机器人型号确定就不再改变。
  2. 选择题:当机器人处于奇异位形时,以下哪种情况最可能发生?
    A) 正向运动学计算失败。
    B) 逆向运动学有唯一解。
    C) 为实现某个末端速度,所需的关节速度会变得非常大。
    D) 末端执行器的绝对位置无法确定。
  3. 判断题:阻尼最小二乘法(DLS)通过完全避免奇异点来解决奇异问题。

本章小结

  • 雅可比矩阵 J(θ) 是连接关节速度空间与末端操作速度空间的线性变换桥梁,其核心公式为 Ẋ = J(θ) * θ̇
  • 雅可比矩阵是关节角度θ的函数,对于旋转关节,其各列可根据关节轴方向向量和末端位置向量构造。
  • 奇异位形发生在雅可比矩阵秩亏损时,导致机器人失去某些方向的运动能力,逆向速度求解困难。常见类型有边界奇异、内部奇异和腕部奇异。
  • 工程上采用阻尼最小二乘法(DLS)等数值方法处理近奇异问题,在跟踪精度和关节速度之间取得平衡。
  • 理解雅可比矩阵和奇异点对于实现稳定、高效的机器人速度控制和轨迹跟踪至关重要。