机器人怎么算出关节该转多少?逆运动学入门
机器人怎么算出关节该转多少?逆运动学入门
你让机械臂"把手伸到桌上那个杯子",它怎么知道肩、肘、腕三个关节各该转多少度?这个问题叫逆运动学(IK),是机器人学最核心也最难的课题之一。今天用最直观的方式讲透它。
一、先分清:正运动学 vs 逆运动学
- 正运动学(FK):已知关节角 → 求末端位置。很简单:按几何关系一步步算,唯一答案
- 逆运动学(IK):已知末端位置 → 求关节角。很难:可能无解、可能多解、还可能有无穷多解
日常直觉:FK 像"我知道怎么动,你告诉我手在哪";IK 像"我要手到那,你告诉我怎么动"——后者才是控制机械臂真正需要的。
二、IK 的三个难点
- 可能无解:目标超出了手臂长度,怎么转都够不到
- 可能多解:同一个位置,手肘可以朝上也可以朝下(“肘部构型”),还能有更多解
- 可能无穷多解:7 自由度冗余机械臂,多出的自由度可以"自运动"——同一个手位姿对应无穷多组关节角
所以 IK 不是"求一个答案",而是"在一堆约束下选一个最优解"(避开奇异位形、关节限位、避障)。
三、两条技术路线
解析法(Analytical):利用几何关系直接推出闭式解——快且精确,但只适用于特定构型(如 6 自由度且满足 Pieper 条件)。
数值法(Numerical):迭代逼近。
- Jacobian 转置法:沿误差下降方向小步走(
Δθ = α·Jᵀ·error),简单 - Jacobian 伪逆法:
Δθ = J⁺·error,收敛更快 - 工业级方案多是数值迭代 + 冗余自由度优化
四、代码演示:两连杆机械臂的 IK
import numpy as np
L1, L2 = 1.0, 1.0
def fk(t1, t2): # 正运动学:关节角 -> 末端位置
x = L1*np.cos(t1) + L2*np.cos(t1+t2)
y = L1*np.sin(t1) + L2*np.sin(t1+t2)
return x, y
def ik(x, y): # 逆运动学:解析解
c2 = (x**2 + y**2 - L1**2 - L2**2) / (2*L1*L2)
if abs(c2) > 1: return None # 够不到
t2 = np.arccos(c2) # 余弦定理求肘角
t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1+L2*np.cos(t2))
return t1, t2
target = (1.2, 0.8)
t1, t2 = ik(*target)
print(f"目标位置: {target}")
print(f"逆解关节角: θ1={np.degrees(t1):.1f}°, θ2={np.degrees(t2):.1f}°")
x, y = fk(t1, t2)
print(f"正运动学验证: ({x:.3f}, {y:.3f}) {'✓ 吻合' if abs(x-target[0])<1e-9 else '✗'}")
print(f"超出臂展的目标 (3,0): {ik(3,0)} -> 无解(够不到)")
运行输出:
目标位置: (1.2, 0.8)
逆解关节角: θ1=-10.2°, θ2=87.7°
正运动学验证: (1.200, 0.800) ✓ 吻合
超出臂展的目标 (3,0): None -> 无解(够不到)
给定目标位置,IK 用余弦定理直接算出肩肘两个关节角,再用正运动学验证——分毫不差。目标(3,0)超出臂展(2.0),返回无解——这就是上面说的"可能无解"。
五、避坑清单
- IK 要先做可达性检查:目标超出工作空间直接返回失败,别让迭代器空转
- 奇异位形要规避:手臂完全伸直时 Jacobian 降秩,关节速度会爆——软件限速
- 多解要选优:通常选"离当前位姿最近"的解,避免机械臂大幅摆动
- 冗余自由度是资源:7 轴机械臂多余的自由度可用来避障/优化姿态,但也有无穷解要约束
- 数值解要注意初值:迭代法收敛性依赖初值,初值太差可能不收敛或跳到错误解分支
六、想系统学机器人学?
本文精选自 ima 知识号【Kruptos】《机器人运动学与控制》订阅库(第 021 期逆运动学问题与 Jacobian 转置、第 022 期 Jacobian 伪逆、第 030 期冗余机械臂逆运动学等 100 期系统教程,从位姿描述、DH 参数、逆运动学、动力学到轨迹规划与控制架构,每期配可运行 Python 代码)。
📚 完整系列 100 期 + 配套代码,已在 ima 知识号发布
本文只是系列的一个切片。完整系列(100 期系统教程 + 每期可运行代码)在 ima 知识号【Kruptos】持续更新中:
- 🗂 68+ 技术知识库:信号与系统、SDR 软件无线电、数字信号处理、操作系统、AI Agent、大模型微调……几乎覆盖全部软硬件技术栈
- 🧠 8 款 AI 技能:系列生产、知识库管理、CMMI 受管开发、自进化 Agent 等,已在 ima 技能广场上架,即装即用
- ✅ 全部免费订阅,后续更新自动推送
🔍 订阅方式:打开 ima(腾讯智能工作台)→ 搜索「Kruptos」→ 一键订阅。或在 ima 内直接搜索《机器人运动学与控制》等知识库名称。
💬 你做过机械臂/机器人项目吗?IK 踩过哪些坑?评论区聊聊——想看 Jacobian 伪逆还是轨迹规划,点赞高的安排。
作者:Kruptos(西电毕业,13 年无线通信/DSP/嵌入式科研)|原创内容,转载注明出处
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐




所有评论(0)