技术博客
推理优化其他原理

三分钟看懂机械臂正逆解:机器人是怎么知道“手”该往哪动的?

LSST2026-08-09 20:18
三分钟看懂机械臂正逆解:机器人是怎么知道“手”该往哪动的?

机械臂控制里,经常会看到两个词:

正运动学(FK)

逆运动学(IK)

名字听起来很复杂,其实核心非常简单。

一句话理解:

正解:知道每个关节转了多少,计算机械臂末端在哪里。

逆解:知道机械臂末端想去哪里,反过来计算每个关节该转多少。

这就是机械臂正逆解最核心的区别。


一、先把机械臂想象成人的手臂

人的手臂可以简单看成:

肩膀 → 上臂 → 肘关节 → 小臂 → 手

机械臂也类似。

例如一个六轴机械臂通常拥有多个旋转关节:

关节1控制底座旋转。

关节2控制机械臂前后抬起。

关节3类似人的肘关节。

后面的几个关节主要调整机械臂末端的方向。

每个关节都有自己的角度。

只要这些关节角度发生变化,机械臂末端的位置也会发生变化。

于是就产生了两个问题:

问题1:

我已经知道每个关节的角度,机械臂的手现在在哪里?

这就是:

正运动学。

问题2:

我想让机械臂的手移动到某个位置,每个关节应该转到多少度?

这就是:

逆运动学。


二、什么是机械臂正解?

机械臂正解,也叫:

Forward Kinematics,FK。

它解决的问题是:

关节角度 → 机械臂末端位置

例如现在机械臂六个关节分别转到了不同角度。

机器人知道:

关节1转了多少度。

关节2转了多少度。

关节3转了多少度。

……

那么通过机械臂的结构和连杆长度,就可以计算:

机械臂末端当前在哪里。

例如最后可能得到:

末端距离机器人前方 50 cm。

距离机器人左侧 10 cm。

距离地面 40 cm。

同时还可以知道夹爪目前朝向哪里。

所以正运动学回答的其实就是:

“根据我现在的关节状态,我的手在哪里?”


三、为什么机械臂能算出自己的末端位置?

原因是:

机械臂每根连杆的长度都是已知的。

每个关节当前的角度也是已知的。

例如一个最简单的两关节机械臂:

第一根杆转一定角度。

第二根杆又在第一根杆的基础上继续旋转。

只要知道:

第一根杆多长。

第二根杆多长。

两个关节分别转了多少度。

就可以通过几何关系算出末端的位置。

实际六轴机械臂虽然复杂很多,但原理是一样的。

只不过二维几何问题变成了:

三维空间中的连续坐标变换。


四、机械臂里的“位姿”是什么意思?

机器人领域经常会看到一个词:

Pose,位姿。

它不是只有位置。

而是:

位置 + 姿态。

位置比较好理解,比如:

机械臂末端现在位于:

前方 50 cm。

左边 20 cm。

高度 30 cm。

但机械臂抓东西时,仅仅到达某个位置还不够。

例如抓一个杯子。

夹爪可以:

从上面往下抓。

从侧面抓。

斜着抓。

虽然夹爪中心可能位于同一个位置,但方向完全不同。

所以机械臂通常需要同时确定:

末端在哪里。

以及:

末端朝向哪里。

这两个信息合起来就是:

末端位姿。


五、什么是机械臂逆解?

逆运动学叫:

Inverse Kinematics,IK。

它和正运动学正好反过来。

正运动学是:

关节角度 → 末端位姿

逆运动学是:

末端目标位姿 → 关节角度

比如摄像头发现桌子上有一个苹果。

视觉系统告诉机械臂:

苹果在机械臂前方某个位置。

这时候机器人就知道:

“我的夹爪应该移动到这里。”

但机械臂真正能控制的不是:

“夹爪直接往这里移动。”

机器人真正能控制的是:

每一个关节电机。

所以它必须继续计算:

关节1应该转多少。

关节2应该转多少。

关节3应该转多少。

……

这个过程就是:

逆运动学。


六、举一个抓杯子的例子

假设机器人要抓桌上的杯子。

第一步:

摄像头识别杯子。

视觉算法得到杯子的位置。

第二步:

机器人确定一个抓取位置。

例如:

让夹爪移动到杯子上方。

第三步:

进行逆运动学计算。

机器人根据目标位置计算:

每个关节应该运动到什么角度。

第四步:

机械臂开始运动。

第五步:

机器人再利用正运动学计算:

当前机械臂末端实际在哪里。

因此整个过程可以简单理解成:

视觉发现目标

确定机械臂末端目标位置

逆运动学计算关节角度

控制关节运动

正运动学计算当前末端位置

继续靠近目标

完成抓取

这就是正逆运动学在机械臂中的典型应用。


七、为什么逆解比正解难?

因为正解通常比较直接。

如果机械臂所有关节角度都确定了,那么机械臂末端的位置基本也就确定了。

但是逆解不一样。

同一个末端位置,有时候可以通过很多种关节姿态到达。

最简单的例子就是人的手。

你把手放在桌面上的某一个位置。

此时你的肘部可以朝左。

也可以朝右。

甚至身体姿态稍微变化,手仍然能够保持在原来的位置。

机械臂也一样。

因此一个目标位置可能对应:

一组解。

也可能对应:

多组解。

甚至可能:

根本没有解。


八、什么时候逆解会无解?

例如一个机械臂最大只能伸出去 80 cm。

但你让它抓一个距离 2 米远的物体。

这显然做不到。

无论关节怎么转,机械臂都够不到。

这种情况就叫:

目标超出了机械臂的工作空间。

因此机械臂在进行逆运动学之前,经常还要考虑:

这个位置能不能到达?

关节会不会超过限位?

机械臂会不会碰到自己?

机械臂会不会撞到环境中的物体?


九、逆运动学一般怎么求?

逆运动学主要有两类方法。

第一类:解析法

解析法就是:

通过机械臂的几何结构直接推公式。

优点是:

计算非常快。

适合实时控制。

但缺点也很明显:

机械臂结构越复杂,公式越复杂。

有些机械臂甚至很难得到完整的解析解。


第二类:数值法

数值法的思路更简单。

假设机械臂现在距离目标还有一段距离。

算法先让关节稍微转一点。

然后计算:

机械臂末端是不是更接近目标了?

如果更近,就继续调整。

如果方向不对,就重新修改。

于是不断重复:

调整关节

计算末端位置

计算与目标的误差

继续调整关节

直到机械臂末端足够接近目标位置。

所以数值逆运动学可以简单理解为:

不断调整关节,让机械臂的手一点一点靠近目标。


十、什么是雅可比矩阵?

学习机械臂逆运动学时,经常会看到一个词:

Jacobian,雅可比矩阵。

它看起来很复杂。

其实它干的事情非常简单:

描述某个关节动一点,会让机械臂末端往哪里移动多少。

例如:

关节1转一点。

机械臂末端可能向左移动。

关节2转一点。

末端可能向上移动。

关节3转一点。

末端可能向前移动。

雅可比矩阵就是把这些关系整理到一起。

于是机器人就可以反过来计算:

如果我希望机械臂末端向右移动一点,

那几个关节应该分别转多少?

因此雅可比矩阵是很多机械臂数值逆解算法的重要基础。


十一、什么是机械臂奇异点?

机械臂还有一个经常被提到的问题:

奇异点。

例如把手臂完全伸直。

此时你的手虽然还能移动,但某些方向上的运动会变得非常别扭。

机械臂也是一样。

当几个关节刚好处于某些特殊姿态时,机械臂会失去某个方向上的运动能力。

这时候逆运动学计算可能出现:

关节速度突然变大。

机械臂抖动。

轨迹不稳定。

逆解失败。

这种特殊姿态就称为:

奇异位形。

因此实际机械臂控制时,一般都会尽量避免机械臂长期运行在奇异点附近。


十二、正逆解和运动规划是一回事吗?

不是。

这是机械臂入门特别容易混淆的地方。

逆运动学解决的是:

“目标位置对应什么关节角?”

而运动规划解决的是:

“机械臂应该怎么从当前位置运动过去?”

比如:

机械臂现在在桌子左侧。

目标在桌子右侧。

逆运动学可能告诉机器人:

最终关节应该转到某个角度。

但是如果机械臂直接从当前位置转过去,

中间可能撞到桌子。

所以还需要运动规划算法寻找一条:

不会碰撞的路径。

完整流程一般是:

目标位置

逆运动学

得到目标关节姿态

运动规划

生成安全轨迹

机械臂执行

因此:

IK 决定终点。

运动规划决定怎么去终点。


十三、ROS 和 MoveIt 是怎么做的?

做 ROS 机械臂开发时,经常会使用:

MoveIt。

MoveIt 已经集成了很多机械臂相关功能,例如:

正运动学。

逆运动学。

碰撞检测。

轨迹规划。

机械臂运动控制。

所以实际开发时,我们通常不需要每次都手动推导完整公式。

例如只需要告诉 MoveIt:

“我希望机械臂末端移动到这里。”

MoveIt 就可以利用逆运动学求出合适的关节状态。

然后通过运动规划寻找一条安全路径。

最后发送给机械臂执行。

这也是现在很多 ROS 机械臂项目最常见的工作流程。


十四、正解和逆解到底有什么区别?

最后可以用最简单的方式记住。

正运动学 FK

已知:

关节角度

计算:

机械臂末端在哪里。

可以理解成:

“我现在这样弯手臂,我的手在哪里?”


逆运动学 IK

已知:

机械臂末端想去哪里

计算:

每个关节应该怎么转。

可以理解成:

“我要把手伸到那里,我的肩膀、肘和手腕应该怎么转?”


十五、总结

机械臂正逆运动学其实没有名字听起来那么复杂。

正解解决的是:

关节 → 末端

逆解解决的是:

末端 → 关节

机械臂真正工作时,两者通常会同时使用。

例如抓取一个杯子:

摄像头找到杯子。

确定目标抓取位置。

逆运动学计算关节角。

运动规划生成轨迹。

机械臂执行运动。

正运动学不断计算当前机械臂末端位置。

最终完成抓取。

所以只需要记住两句话:

正解:知道胳膊怎么弯,算出手在哪里。

逆解:知道手要去哪里,算出胳膊怎么弯。

理解了这两句话,机械臂正逆运动学的核心思想基本就理解了。

点赞收藏
// 评论1
0 / 500
NOTA62026-08-12 09:36

精辟: 正解:知道胳膊怎么弯,算出手在哪里。 逆解:知道手要去哪里,算出胳膊怎么弯。