模式选择
连杆参数
正运动学 (FK):
$x = L_1\cos\theta_1 + L_2\cos(\theta_1+\theta_2)$
$y = L_1\sin\theta_1 + L_2\sin(\theta_1+\theta_2)$
逆运动学 (IK):
$\cos\theta_2 = \dfrac{x^2+y^2-L_1^2-L_2^2}{2L_1L_2}$
$\theta_1 = \mathrm{atan2}(y,x) - \mathrm{atan2}(L_2\sin\theta_2,\,L_1+L_2\cos\theta_2)$
什么是二连杆机械臂运动学
🧑🎓
“正运动学”和“逆运动学”是什么?听起来好复杂。
🎓
简单来说,正运动学就是“已知胳膊肘和手腕怎么弯,算出手指尖在哪儿”。逆运动学反过来,是“想让指尖碰到那个杯子,胳膊肘和手腕该怎么弯”。你试着拖动模拟器里$\theta_1$和$\theta_2$的滑块,看看末端那个红点是怎么跟着动的,这就是正运动学。
🧑🎓
诶,真的吗?那我直接在画布上点一个目标位置,它就能自己算出角度?
🎓
没错!这就是逆运动学的魔力。你点一下画布上的任意位置,模拟器会瞬间计算出关节角度。更酷的是,对于同一个点,机械臂通常有两种“姿势”可以到达,就像你伸手拿桌上的水杯,可以选择“肘部向上”或“肘部向下”。在模拟器里切换“肘上”和“肘下”模式,就能看到这两种不同的解。
🧑🎓
那如果我把目标点拖到很远的地方,为什么机械臂就够不着了?
🎓
问得好!这就像你的手臂长度是有限的。二连杆机械臂能到达的区域是一个“甜甜圈”形状的环形区域。最远距离是两个杆长度相加(完全伸直),最近距离是两个杆长度相减(完全折叠)。在模拟器里,你可以试着把$L_1$或$L_2$的滑块调小,会发现那个可到达的环形区域(灰色区域)会立刻缩小,目标点一旦跑到区域外,逆运动学就无解了。
物理模型与关键公式
正运动学方程:已知两个关节的角度,唯一确定末端位置。
$$
\begin{aligned}x &= L_1 \cos\theta_1 + L_2 \cos(\theta_1 + \theta_2) \\
y &= L_1 \sin\theta_1 + L_2 \sin(\theta_1 + \theta_2)
\end{aligned}$$
$L_1, L_2$:第一、二连杆的长度。
$\theta_1, \theta_2$:关节1(基座)和关节2的相对转角。
$(x, y)$:末端执行器在平面内的坐标。
逆运动学方程:已知末端目标位置,反求关节角度(通常有多解)。
$$
\begin{aligned}&c_2 = \frac{x^2 + y^2 - L_1^2 - L_2^2}{2 L_1 L_2}\\
&s_2 = \pm \sqrt{1 - c_2^2}\quad \text{(“肘上”取+,“肘下”取-)}\\
&\theta_2 = \operatorname{atan2}(s_2, c_2) \\
&\theta_1 = \operatorname{atan2}(y, x) - \operatorname{atan2}(L_2 s_2, L_1 + L_2 c_2)
\end{aligned}$$
其中$c_2 = \cos\theta_2, s_2 = \sin\theta_2$。$\operatorname{atan2}(y, x)$是四象限反正切函数,能给出正确的角度象限。公式中$s_2$的正负号直接对应了两种不同的手臂构型。
现实世界中的应用
工业机器人:比如汽车工厂里的焊接机器人,它的“手腕”和“肘部”运动就是基于逆运动学计算。工程师给定焊点的位置,控制器需要实时解算出各个关节马达应该转动的角度,才能让焊枪精准到位。
图形动画与游戏:在制作3D动画或游戏时,为了让角色的手能自然地抓住武器或扶住墙壁,动画师会使用逆运动学工具。他们只需设定手的目标位置,系统就会自动计算出胳膊的弯曲姿态,大大提升了制作效率。
康复与外骨骼机器人:辅助患者进行肢体训练的康复机器人,需要根据预设的运动轨迹(如画一个圆)来驱动患者的关节。这本质上就是一个连续的逆运动学求解过程,确保运动平滑且符合人体工学。
无人机机械臂:一些用于抓取或检测的无人机下方挂载有轻型机械臂。当无人机悬停时,需要通过逆运动学快速规划机械臂的运动,以补偿无人机本身的微小晃动,准确完成抓取任务。
常见误解与注意事项
首先,“正向运动学(FK)简单,逆向运动学(IK)困难”这种简单的二分法是危险的。虽然2连杆的FK确实是简单的三角函数求和,但随着连杆数量增加,根据关节配置(旋转/平移)和坐标系选取方式的不同,FK公式本身会变得复杂。另一方面,像本工具所处理的平面2连杆IK是存在几何“求解公式”的特殊情况。对于许多实用的6轴机械臂等,往往不存在此类封闭解,需要通过数值计算(迭代法)求解,因此FK与IK的难度性质有时会发生逆转。
其次,人们容易认为“只要解出来就万事大吉”,但评估解的“质量”的视角至关重要。例如,对于同一目标点存在“肘部向上”和“肘部向下”两种解时,选择哪种取决于具体应用场景。若工作空间存在障碍物,则应选择可避开障碍的姿态;若考虑能量效率,则应选择接近关节运动范围中心的姿态。此外,接近奇异姿态(例如机械臂完全伸直的姿态)的解,会因目标位置的微小变化导致关节角度急剧变动,从而使控制变得不稳定。在本工具中将L1和L2设为相同长度,并将目标点置于X轴附近(y≈0)的远处,即可亲身体验这种感觉。
最后,请时刻注意参数的单位与基准方向。本工具中角度以度为单位显示,但内部计算及多数程序库使用弧度制。此外,θ1的基准轴(通常为X轴)和正旋转方向(通常为逆时针)的定义会因坐标系及右手系/左手系的不同而变化,在与其他系统联动时,这是需要首先确认的最重要事项。例如,若CAD数据与机器人模拟器的坐标系定义不同,可能导致完全出乎意料的运动。
相关的工程领域
通过本工具学习的原理可直接应用于机器人学之外的各种“多体系统运动描述”领域。例如,在汽车悬架机构或工程机械液压臂的动作分析中,正是通过正向运动学的思路来计算由多个连杆与关节构成的系统姿态。在游戏开发和CG动画领域,角色的骨骼模型正是“关节与连杆”的集合体,为确定肢体末端(执行器)位置,IK被广泛使用。将动作捕捉数据适配到不同体型的角色时,IK技术也是核心。
更进一步,这与设计工程中的“机构学”和“稳健设计”也密切相关。您是否在本工具中观察过改变连杆长度L1、L2时可达工作空间的变化?这正是产品布局设计中判断“该机器人能否完成此范围作业”的基础。此外,当考虑制造误差或磨损时,为寻找即使关节角度存在一定误差也能使末端位置误差最小化的连杆长度比例(即所谓“误差灵敏度”低的设计),此处所涉及的运动学公式将成为灵敏度分析的起点。
另一个重要领域是控制工程。通过IK求得的仅是“为到达目标位置所需的关节角度”这种“位置指令值”。要实际驱动机器人,需要“伺服控制”来确保各关节电机能够快速、准确、无振动地跟踪该指令值。此外,当机械臂执行抓取物体等受外力作用的任务时,话题将延伸至计算维持姿态所需扭矩的“动力学”。运动学正是承担着作为所有这些基础“几何学”部分的作用。
进阶学习建议
首先的下一步是“向三维空间扩展”与“数值解法实践”。平面2连杆虽可通过几何方法求解,但三维6轴机械臂则不然。建议学习三维坐标变换的基础——“齐次变换矩阵”。这是用4x4矩阵表示关节旋转/平移,并通过矩阵连乘表达正向运动学的强大工具。对于逆向运动学,可学习以“雅可比矩阵”为代表的数值迭代法(例如牛顿-拉夫森法)。雅可比矩阵是描述关节速度与末端速度关系的矩阵,通过其逆运算逐步更新关节角度,构成了IK算法的基础。
若想深化数学背景,线性代数(向量、矩阵、特征值)与多元微积分的复习必不可少。前述齐次变换矩阵和雅可比矩阵的运算均以线性代数的语言描述。此外,为处理选择最优姿态的“优化问题”及进入动力学后的“拉格朗日方程”,需要微分知识的支撑。正如本工具中存在的“肘上/肘下”选择,IK通常存在多解。从这些解中选择能量最小或关节负载均衡的解,正是带约束的优化问题。
具体推荐的后续主题是“机械臂轨迹规划”。这是思考如何将末端从点A移动到点B时,对中间姿态进行平滑插值(例如使用三次函数变化各关节角度等)的领域。通过本工具亲身体验FK与IK后,请不要止步于“求解完成”,而应迈向“如何运动”这一实用阶段的第一步。尝试使用仿真工具或编程语言(如Python的Robotics Toolbox等)编写生成简单轨迹的脚本,将极大深化理解。