🙋
机器人手臂的「正运动学」和「逆运动学」是什么意思?名字相似,但他们完全不同吗?
🎓
简单说,计算的方向完全相反。正运动学(FK)是「如果关节这样弯曲,手臂末端会在哪里?」的计算。逆运动学(IK)则相反,「如果我想把末端放在这里,关节要怎样弯曲?」来逆推。在这个模拟器中,试着在上面的「θ1」「θ2」滑块上移动。你会看到手臂的形状改变,对吧?这就是FK。相反地,点击画布指定目标点(橙色圆点),手臂会自动改变形状指向那里,这就是IK的动作。
🙋
原来如此!点击后自动计算角度呢。但是有时同一个目标点,手臂可以有两种不同的姿态。那是什么?
🎓
你观察得很敏锐。这就是「肘上(Elbow Up)」和「肘下(Elbow Down)」两个解。就像人的手臂一样,要到达同一个位置,可以把肘向上弯或向下弯。从数学角度,当我们求$\cos\theta_2$时,可以取正号或负号,所以会产生两种关节角度的组合。试试在模拟器中用「解的选择」切换「肘上」和「肘下」,看看姿态如何改变。
🙋
明白了!但是,点击画布边边时,手臂有时无法到达,计算不出解。为什么?
🎓
那是因为你指定的点超出了手臂的「可达范围」外。2连杆手臂能放置末端的范围是一个甜甜圈形的区域,外径是最大臂长$L_1+L_2$,内径是最小值$|L_1 - L_2|$。在这个区域之外就无法到达。比如,用滑块把手臂长度设得很短或很长,观察这个甜甜圈区域怎样变化。在工程设计中,这个区域叫做「工作空间」,是决定机器人能做什么工作的重要指标。
在FK模式中,用滑块指定关节角度θ1、θ2,末端执行器的位置会自动计算出来。在IK模式中,点击画布上的目标位置,所需的关节角度会被逆推计算出来。根据用途选择相应模式即可。
距离大于两个连杆长度之和(L1+L2)的位置,或距离小于两个连杆长度之差(|L1-L2|)的位置都无法到达。此外,如果关节角度有运动范围限制,某些位置可能也无解。请在画布上显示的可达范围内点击。
本工具使用度(°)作为单位。滑块范围是0°~360°。内部计算时会转换为弧度,但所有显示和输入都是以度为单位。
可以。计算出的坐标和角度以数值形式显示,可以记下来用于机器人控制设计或教学资料。但请注意,本工具是简易模拟器,实际控制时需要考虑物理参数和误差补偿。
工业机器人轨迹规划:焊接、喷涂、组装等作业中,工具(末端执行器)需要通过一系列特定的点(轨迹)。对每个点计算逆运动学,得到对应的关节角度序列,从而实现平滑的运动。
游戏和动画角色控制:在游戏中,让角色的手臂或腿部自然地到达特定位置(比如拿起门把手或拿武器)时,频繁使用逆运动学。相比手动设置关节,用IK能更高效地创建自然的动作。
机器人手术(手术辅助机器人):医生操作主控制器的位置通过正运动学确定患者体内手术器械的末端位置,反之,当需要器械到达目标位置时用逆运动学计算各关节的驱动量。
康复和动力助力服装:穿着者的关节角度传感器数据通过正运动学推估手足末端位置。设计支持动作时,用逆运动学的概念来计算电机应施加的关节扭矩。
首先,「正运动学(FK)很简单,逆运动学(IK)很难」这种二分法是危险的。诚然,2连杆的FK只是简单的三角函数之和,但连杆数增加后,关节配置(旋转/直动)和坐标系选择会让FK本身变得很复杂。而这个工具中的平面2连杆IK是特殊情况,有解析公式。但在实用的6轴手臂等系统中,通常没有这样的闭式解,需要用数值迭代方法求解,FK和IK的难度地位就反过来了。
其次,「求出解就完成了」这个想法是错的,「解的质量」评估很重要。对同一目标点,「肘上」和「肘下」都是有效解,选哪个取决于应用场景。有障碍物时选能避开的姿态,考虑能耗时选在关节运动范围中心的姿态。另外,接近特异姿态(比如手臂完全伸直)的解,目标位置的微小变化会引发关节角度的剧烈波动,控制不稳定。试着在这个工具中把L1和L2设成相同,把目标点放在很远的X轴附近,你就能体验到这种不稳定感。
最后,要始终注意参数的单位和基准方向。本工具用度表示角度,但许多库和标准用弧度。还有,θ1的基准轴(通常是X轴)和正旋转方向(一般是逆时针)的定义因坐标系和右手系/左手系而异,与其他系统联动时必须事先确认。比如CAD数据和机器人模拟器的坐标系定义不一致,会导致完全意料不到的动作。这是最重要的检查事项。