坐标系与运动学:关节空间与笛卡尔空间,正逆运动学基础

各位同学,大家好。我是你们这堂课的主讲人。咱们直接进入正题。

做多轴同步控制,你绕不开一个核心问题:机器人的“脑子”里,到底在想什么? 说白了,就是它怎么知道自己该往哪儿动,以及怎么动。

这背后,就是坐标系和运动学。我刚开始接触这行的时候,也觉得这东西太理论,不就是个坐标嘛。直到有一次,我在调试一台六轴机器人时,发现它走直线总是抖,查了三天,最后发现是逆运动学求解时,一个奇异点没处理好。嗯,从那以后,我再也不敢小看这些基础了。

今天,我们就来把这两个空间和正逆运动学,彻底聊透。

1. 两个世界:关节空间 vs 笛卡尔空间

想象一下,你面前有一台六轴机器人。你让它去抓一个杯子。

你脑子里想的是:“手爪移动到杯子位置,然后抓取。” 这个“杯子位置”,是在一个三维空间里,用 (X, Y, Z) 坐标加上姿态 (A, B, C) 来描述的。这个空间,我们叫它笛卡尔空间,也叫操作空间或任务空间。

但机器人自己呢?它不知道什么是 X, Y, Z。它只知道:“关节1转多少度,关节2转多少度……关节6转多少度。” 它只认每个电机轴的角度或位置。这个由所有关节角度构成的空间,就是关节空间

这两个空间,就像硬币的两面。一个是我们人类直观理解的,一个是机器内部真正执行的。

核心区别一句话总结:

  • 笛卡尔空间:描述“手爪在哪儿”。直观,但控制复杂。
  • 关节空间:描述“每个关节在哪儿”。不直观,但控制直接。

我个人习惯,在做轨迹规划时,先在笛卡尔空间里把路径点算好,然后再转换到关节空间去执行。为什么?因为这样能保证末端执行器走直线或者圆弧,对工艺更友好。

2. 正运动学:从关节到笛卡尔

正运动学,说白了就是:我知道每个关节转了多少度,求手爪在空间里的位置和姿态。

这是一个“唯一解”的问题。你给定了关节角度,手爪的位置就是确定的,没有第二种可能。

怎么算?核心是坐标变换。每个关节的运动,都可以用一个4x4的齐次变换矩阵来描述。把从基座到末端的所有变换矩阵乘起来,就得到了末端在基座坐标系下的位姿。

公式长这样(别怕,理解逻辑就行):

T_06 = T_01 * T_12 * T_23 * T_34 * T_45 * T_56

其中,T_01 表示从基座到关节1的变换,T_12 是从关节1到关节2,以此类推。最终得到的 T_06,就是末端执行器相对于基座的位置和姿态。

我记得在做一个SCARA机器人的项目时,正运动学算起来特别快,因为结构简单,矩阵乘法几下就搞定了。但到了六轴机器人,计算量就上来了,不过现在CPU都很快,实时算也没问题。

一个小技巧: 调试时,你可以手动转动每个关节到一个已知角度,然后用正运动学算出手爪位置,再用尺子量一下实际位置。如果对不上,那你的DH参数或者变换矩阵肯定写错了。我每次换新机型,都会先做这个“对账”工作。

3. 逆运动学:从笛卡尔到关节

逆运动学就反过来了:我知道手爪要去哪个位置和姿态,求每个关节该转多少度。

这才是真正头疼的地方。因为逆运动学通常有多解,甚至无解。

为什么会这样?你想想看,一个六轴机器人,要到达空间中的同一个点,可能有8种不同的“姿势”。比如“肘部朝上”和“肘部朝下”,都能让手爪到同一个位置。

逆运动学的求解方法,主要有两种:

  • 解析法(封闭解):通过数学推导,直接得到公式。速度快,适合实时控制。但只适用于满足特定几何条件的机器人(比如后三个关节轴线交于一点)。
  • 数值法(迭代法):比如牛顿-拉夫森法。通用性强,任何机器人结构都能用。但计算慢,而且可能不收敛。

我个人更偏爱解析法。只要机器人结构允许,我一定优先用解析法。为什么?因为稳定、快。我曾经在一个项目中,用了数值法做逆解,结果在奇异点附近,迭代死活不收敛,导致机器人突然“抽风”。后来换成解析法,加上奇异点处理,问题就解决了。

避坑指南: 我曾经在调试一个协作机器人时,发现逆解出来的关节角度,在某个位置会突然跳变。查了半天,原来是多解选择策略没写好。记住,逆解出多个解后,一定要选一个“最接近当前关节位置”的解,否则机器人会乱跑。

4. 知识体系总览

为了让大家更直观地理解这两个空间和正逆运动学的关系,我画了一张图。

关节空间 (Joint Space) 输入:关节角度 θ₁, θ₂, θ₃, ..., θₙ 正运动学 输出:末端位姿 X, Y, Z, A, B, C 正向 笛卡尔空间 (Cartesian Space) 输入:末端位姿 X, Y, Z, A, B, C 逆运动学 输出:关节角度 θ₁, θ₂, θ₃, ..., θₙ 逆向 图:关节空间与笛卡尔空间的相互转换关系

这张图很清楚地展示了:正运动学是从关节空间到笛卡尔空间的单向映射,而逆运动学则是反过来。在实际控制中,我们通常是在这两个空间之间来回穿梭。

5. 实战中的选择

那么问题来了:什么时候用关节空间控制?什么时候用笛卡尔空间控制?

我给大家一个简单的判断标准:

控制场景 推荐空间 原因
点到点移动(PTP) 关节空间 速度快,路径不重要,只要起点终点对就行
直线/圆弧插补 笛卡尔空间 需要保证末端走特定轨迹,对工艺精度要求高
避障 笛卡尔空间 障碍物通常用笛卡尔坐标描述,方便做碰撞检测
奇异点附近 关节空间 笛卡尔空间在奇异点附近速度会突变,关节空间更安全

你看,没有哪个空间是万能的。实际项目中,往往是混合使用。比如,先规划一条笛卡尔空间的路径,然后在每个插补周期里,用逆运动学算出关节角度,再下发到伺服驱动器去执行。

我的一个习惯: 在做多轴同步控制时,我会在笛卡尔空间里做轨迹规划,保证所有轴末端运动的同步性。然后,在关节空间里做速度规划和力矩前馈,保证每个关节执行的平滑性。这样,两个空间的优势就都用上了。

好了,关于坐标系与运动学的基础,我们就聊到这里。记住,正运动学是确定的,逆运动学是复杂的。理解这两个空间,是后面所有同步控制算法的基础。下一节,我们会深入讨论如何在关节空间里做插补和速度规划。


专注资料整理