第27章 工业机器人轨迹:关节空间轨迹 vs 笛卡尔空间轨迹、奇异点处理
各位工程师朋友,今天我们来聊聊工业机器人轨迹规划里一个绕不开的话题——关节空间和笛卡尔空间的抉择,以及那个让人头疼的奇异点问题。
说实话,我刚入行那会儿,也在这两个空间的选择上栽过跟头。有一次调试一台六轴机器人,明明仿真跑得好好的,一上机就抖得跟筛糠似的。后来才发现,是笛卡尔空间轨迹遇到了奇异点。嗯,从那以后,我对这两个概念的理解就深刻多了。
27.1 关节空间轨迹 vs 笛卡尔空间轨迹
先说说最核心的区别。关节空间轨迹,规划的是每个关节的角度随时间的变化。笛卡尔空间轨迹,规划的是机器人末端在三维空间的位置和姿态。
说白了,一个管「关节怎么动」,一个管「手往哪儿走」。
27.1.1 关节空间轨迹的特点
我个人习惯在以下场景优先考虑关节空间:
- 点到点运动:比如抓取-放置,中间路径不重要
- 避障需求简单:关节空间计算量小,实时性好
- 避免奇异点:关节空间天生不会遇到奇异点问题
关节空间轨迹的规划,本质上就是每个关节独立做插补。比如用三次多项式或五次多项式,让关节从θ₀平滑运动到θ₁。
// 关节空间五次多项式插补示例
double q0 = 0.0; // 起始角度
double q1 = 90.0; // 目标角度
double t = 0.5; // 归一化时间 [0,1]
// 五次多项式系数
double a0 = q0;
double a1 = 0; // 起始速度=0
double a2 = 0; // 起始加速度=0
double a3 = 10 * (q1 - q0);
double a4 = -15 * (q1 - q0);
double a5 = 6 * (q1 - q0);
double q = a0 + a1*t + a2*t*t + a3*t*t*t + a4*t*t*t*t + a5*t*t*t*t*t;
你看,代码很简单。但有个坑——关节空间轨迹无法保证末端走直线。如果你需要机器人沿着焊缝走直线,关节空间就不行了。
27.1.2 笛卡尔空间轨迹的特点
笛卡尔空间轨迹,说白了就是让末端执行器在三维空间走一条精确的路径。比如直线、圆弧、样条曲线。
什么时候必须用笛卡尔空间?
- 直线运动:比如涂胶、焊接、切割
- 圆弧运动:比如打磨曲面、装配圆孔
- 姿态约束:比如保持工具垂直于工件表面
笛卡尔空间轨迹的规划流程是这样的:
- 在笛卡尔空间插补出路径点(位置+姿态)
- 通过逆运动学将每个路径点映射到关节空间
- 在关节空间执行运动
这里有个关键问题——逆运动学求解。每插补一个点,就要解一次逆运动学。如果机器人构型复杂,计算量会很大。
27.2 奇异点处理
奇异点,是每个做机器人轨迹规划的人绕不开的坎。说白了,就是机器人某些关节的构型导致末端在某些方向上失去自由度。
27.2.1 奇异点的本质
从数学上看,奇异点对应的是雅可比矩阵秩亏损。从物理上看,就是机器人某个关节无论怎么动,末端都只能朝一个方向走。
常见的奇异点类型:
| 类型 | 描述 | 典型场景 |
|---|---|---|
| 腕部奇异点 | 关节4和关节6轴线共线 | 末端姿态变化时 |
| 肩部奇异点 | 关节1和关节2轴线共线 | 机器人手臂伸直时 |
| 肘部奇异点 | 关节3和关节4轴线共线 | 肘关节完全伸展时 |
为什么会这样?你想想看,当两个关节的轴线重合时,它们其实在做同一个自由度的运动。这时候雅可比矩阵就「缺了一维」。
27.2.2 奇异点的处理方法
我在项目中遇到过好几次奇异点问题,总结下来有几种处理思路:
方法一:阻尼最小二乘法(DLS)
这是最常用的方法。在逆运动学求解时,给雅可比矩阵加一个阻尼项,避免关节速度发散。
// 阻尼最小二乘法伪代码
Matrix J; // 雅可比矩阵
Matrix J_damped; // 阻尼雅可比
double lambda; // 阻尼系数
// 标准DLS公式
J_damped = J^T * (J * J^T + lambda^2 * I)^(-1);
// 关节速度
q_dot = J_damped * v_desired;
阻尼系数λ的选择很关键。λ太大,轨迹精度下降;λ太小,奇异点附近速度仍然很大。我一般取λ = 0.01 ~ 0.1,根据实际调试效果调整。
方法二:奇异值分解(SVD)
SVD可以精确分析雅可比矩阵的奇异值。当某个奇异值接近0时,就说明接近奇异点了。
// SVD分解雅可比矩阵
[U, S, V] = svd(J);
// 检查奇异值
for i = 1:6
if S(i,i) < epsilon
// 该方向接近奇异,做特殊处理
S_inv(i,i) = 0; // 或者用阻尼
else
S_inv(i,i) = 1 / S(i,i);
end
end
// 重构逆雅可比
J_inv = V * S_inv * U^T;
方法三:路径重规划
如果奇异点不可避免,我建议直接修改路径。比如在奇异点附近插入过渡点,或者改用关节空间轨迹绕过奇异区域。
27.2.3 工程实践中的建议
说了这么多理论,最后给几条实际建议:
- 离线仿真一定要做:在仿真中检查轨迹是否经过奇异点。很多商业软件都有奇异点检测功能。
- 预留安全裕度:不要刚好在奇异点边界上规划轨迹。留出5-10度的安全角度。
- 关节空间优先:如果对路径精度要求不高,优先用关节空间。省心省力。
- 笛卡尔空间加保护:必须用笛卡尔空间时,加上奇异点检测和阻尼处理。
嗯,关于关节空间和笛卡尔空间的抉择,以及奇异点的处理,今天就聊到这儿。这两个概念看似基础,但真正用好需要大量实践。下次遇到机器人抖动、速度异常的问题,不妨先想想——是不是碰到了奇异点?