逆向运动学计算器 返回
分析工具

机器人手臂逆向运动学计算器(2/3自由度)

从目标位置(x,y)或(x,y,z)计算具有杆长L₁·L₂·L₃的机器人手臂的关节角度θ₁·θ₂·θ₃,采用解析法/迭代法。实时可视化肘部上/下解与奇异点,并确认可达性条件。

参数设置
模式
杆长
L₁ 杆长1
mm
L₂ 杆长2
mm
L₃ 杆长3
mm
目标位置
目标 X
mm
目标 Y
mm
目标 Z
mm
关节限制
θ₁: ±150°, θ₂: ±170°, θ₃: ±170°
计算结果
θ₁ [deg]
θ₂ [deg]
末端误差 [mm]
det(J)
可达性
奇异点距离
逆运动学解
拖动滑块即可切换为手动控制
理论·主要公式

从第2关节角余弦值求两解:

$$c_2 = \frac{x^2+y^2-L_1^2-L_2^2}{2L_1 L_2}, \quad s_2 = \pm\sqrt{1-c_2^2}$$ $$\theta_2 = \text{atan2}(s_2, c_2)$$ $$\theta_1 = \text{atan2}(y,x) - \text{atan2}(L_2 s_2,\ L_1+L_2 c_2)$$

可达条件:$|L_1-L_2| \le \sqrt{x^2+y^2} \le L_1+L_2$

机器人手臂逆向运动学简介

🙋
什么是逆向运动学?我听说是从「目标位置」推导「关节角度」,这与正向运动学有什么区别?
🎓
简单地说,正向运动学是「关节转动这个角度,手臂末端会移到哪里?」的计算。逆向运动学恰好相反,是「我要让末端到达这个位置,各关节应该转多少度?」的求解。例如在此模拟器中,当你改变「目标X」和「目标Y」时,手臂姿态会大幅改变,这就是通过逆向运动学计算出的各关节转角驱动的。
🙋
我注意到有时候有「肘部下」和「肘部上」两种姿态可以到达同一目标点!为什么会有两个解?
🎓
很好的观察!在2关节手臂的情况下,末端要到达同一点,肘部弯曲的方向可以有两种——肘向上或肘向下。数学上,这对应第2关节角θ₂的正弦值 $s_2 = \pm\sqrt{1-c_2^2}$ 中的±符号选择。正号是肘部下解,负号是肘部上解。在实际应用中,会根据周围机械有无碰撞、关节可动范围等条件选择合适的姿态。你可以在屏幕上切换两个解,观察它们的差异。
🙋
我看到有时会显示「接近奇异点」的警告。手臂伸得笔直时会动作变得疯狂…那是什么原因?
🎓
那就是「奇异点」,是机器人控制中最需要注意的状态之一。当手臂完全伸直或完全折叠时,手臂沿自身长轴方向的微小移动需要关节以无穷大的速度转动才能实现——这在数学上叫做雅可比矩阵行列式为零。模拟器中,试试把「杆长1」和「杆长2」设成相同值,然后把目标点X方向设到极限远处。你会看到手臂伸成一条直线并显示「接近奇异点」,这时即使目标点微微移动,关节角也会跳变。这在实机上会造成严重的冲击和危险。

常见问题

在计算第2关节角θ₂时,余弦定理给出余弦值c₂是唯一的,但正弦值s₂有±两个符号。s₂为正时肘部向上弯曲(肘部上解),s₂为负时肘部向下弯曲(肘部下解)。两种姿态都能到达同一目标位置,但关节运动模式不同。在存在障碍物或关节可动范围限制的实际应用中,需要选择可行的那个解。
奇异点是手臂伸直(θ₂=0°)或完全折叠(θ₂=180°)等特殊姿态,此时雅可比矩阵行列式为零。在这些姿态下,手臂某些方向的微小移动需要关节以无穷大速度转动,导致数值计算不稳定、控制指令异常,极易造成机械故障或安全事故。因此在路径规划中必须避开奇异点附近区域。
当目标点(x,y)超出最大伸展距离(L₁+L₂)或小于最小伸展距离(|L₁-L₂|)时,余弦定理推导的c₂会超出-1到1的范围,此时逆向运动学无解。模拟器会显示「不可达」状态,需要调整目标位置或更换手臂规格(增加杆长)才能达成目标。
3自由度(L₁, L₂, L₃)的情况中,先从目标点(x,y,z)减去第3杆的贡献得到中间位置,对该位置应用2关节逆运动学;再根据手腕姿态确定θ₃。采用迭代法(牛顿-拉夫逊法)进行数值求解,反复修正关节角度直至末端位置与目标点的误差足够小。
雅可比矩阵J是手臂末端速度与关节角速度之间的关系式(dx/dt = J·dθ/dt)。在反复迭代型逆向运动学中,通过目标位置误差Δx和雅可比矩阵的伪逆来计算关节角更新量(Δθ = J⁺·Δx),反复修正直至收敛。本工具的2R解析解法不显式使用雅可比,但显示det(J)用于奇异点检测;在自由度≥3或路径跟踪控制时,雅可比法是必不可少的。
当L₁=L₂时,可达区域的中心空心部分(最小伸展圆)最小,到达可能性最好。当L₁≫L₂(例如L₁=8倍L₂)时,手臂「远距离特化」,但接近原点的工作较为困难,需要不自然的大幅关节动作。你可以在模拟器中改变杆长比,观察工作空间圆形边界的变化。
6自由度机器人(如FANUC M-20iA)对同一末端姿态最多可有16个不同的关节组态解。补间动作中若从一个解跳到另一个解,关节会瞬间大幅转动(「解的跳跃」),容易与周边设备或操作人员相撞。因此工业机器人控制器采用「选择最接近当前姿态的解」的算法,防止不连续动作。本模拟器的2R肘部上/下切换,相当于这一原理的简化版本。
本模拟器只计算运动学(关节角度),不涉及动力学(惯性、摩擦、马达扭矩),所以理论上瞬时追踪。实机的伺服电动机有最大扭矩和加速度限制,急剧的目标变化无法立刻响应。此外,微控制器的PID控制循环周期(通常1ms)、编码器分辨率等也会引入延迟。要实现高速追踪需要模型预测控制(MPC)或前馈补偿等高级控制手段。

现实应用

工业机器人(焊接·搬运):汽车工厂的焊接机器人需要精准地将焊枪送到车身指定位置。逆向运动学快速计算出各关节目标角度,并规划光滑的运动轨迹。奇异点回避是安全稳定作业的必要条件。

外科手术支援机器人:微创腹腔镜手术中,医生操控手柄,机器人须精确地将夹持器或刀具送到患部。由于手术空间狭窄(存在障碍物),逆向运动学须从多个可能解中选择安全的姿态。

动画·CG制作:角色的手脚位置经常需要固定(例如脚踩地面、手握物体),动画师可利用逆向运动学自动计算出符合这些约束的关节角度,大幅加快制作流程。关节活动范围的设定确保动作符合人体解剖学。

多关节结构的CAE解析:在进行FEM有限元分析时,多自由度机械臂或工程机械在不同负载工况下的结构应力分布评估,首先需要用逆向运动学计算出承受该负载时的实际姿态,以此作为解析模型的初始状态。

常见误解与注意事项

首先是「杆长越长越好」的误解。虽然长杆确实扩大了可达范围,但也容易陷入奇异点,制御变得不稳定。例如L₁=5、L₂=5的手臂瞄准(9.9, 0)时,虽然刚好能到达,但极接近奇异点,关节对小幅位置指令的响应会剧烈波动。实际设计时应根据作业工件尺寸,选择刚好足够的杆长,保留可动范围的余量。

其次是「计算出角度就行」的想法。即使数式上求得关节角度,它也可能超出机械的实际可转角范围(如θ₂限制在-120°~120°,但计算值是150°)。此时应判定为「实质上不可达」。本工具即使切换解,若两个姿态都触发关节限制,也意味着该位置真正不可达。

最后是「3自由度就能自由到达平面任意位置」的过度期待。增加第3关节后,末端姿态方向虽然可控,但关节可动范围有限制(特别是第2、3关节),反而会引入新的不可达区域。而且3自由度的逆向运动学解变成无穷多个(冗余度),数值计算时需要额外策略(如选最小动作量解)才能得到稳定可靠的结果。

使用指南

  1. 输入杆长L₁、L₂、L₃,单位毫米(例:L₁=150mm、L₂=120mm、L₃=80mm)
  2. 指定目标位置(x,y)或(x,y,z),单位毫米(从坐标系原点算起)
  3. 选择计算方式:2自由度为解析解θ₁·θ₂,3自由度使用牛顿-拉夫逊迭代计算
  4. 存在多个解时同时显示肘部上/下两个姿态,用雅可比行列式det(J)判断奇异点
  5. 确认末端误差[mm]和操纵度指数,验证可达性后再进行实装

具体计算示例

PLC机器人(SCARA型相当)配置L₁=200mm、L₂=180mm、L₃=60mm,指定目标位置(x,y,z)=(280mm, 150mm, -50mm)时,解析解得θ₁=23.4°、θ₂=-67.2°、θ₃=112.5°,末端误差0.8mm以下,det(J)=5420,距奇异点足够安全。若目标位置(450mm, 0mm)超过最大伸展距离L₁+L₂=380mm,则判定为「不可达」。

现场实施注意事项

  1. 铝合金部件(E=70GPa)的自重挠度与链条驱动的间隙需要考虑,实装时对计算值加上±2°的安全余量
  2. 目标位置接近L₁+L₂±L₃的圆周边界时,det(J)降至100以下,响应性下降,轨迹规划时应在绕路点处修正
  3. 3自由度逆向运动学在收敛不安定区域(如θ₂超过±160°)时,需将初值设为-90°,最大迭代50次后终止