只会“轻推”的回路
想象一台机械臂握着螺丝刀,你让它的肘关节转到 90 度。最简单的实现方式就是 反馈控制:不断测量关节当前在哪里,把它和你想要的位置(设定点)相比较,然后朝着缩小差距的方向驱动电机。这个差距本身就是误差信号,整个回路的任务就是把误差推向零。
它最常用的版本是 PID 控制。它把对误差的三种视角糅合在一起:P 项对当前误差有多大作出反应,I 项记住误差已经持续了多久,D 项盯着误差变化有多快。把这三个 比例、积分、微分项 调配起来,就得到一个简单、便宜、对单个性情温和的电机出奇有效的控制器。
有一个值得停下来体会的关键点:PID 回路对它所操纵的机器一无所知。它不知道手臂很重,不知道重力正拉扯着连杆,也不知道甩动肩关节会给肘关节带来一个侧向力。它永远只看到一个数字——误差——然后轻推。本指南大部分内容,讲的就是当这种“盲目”遇上真实、快速、沉重的运动时会发生什么。
击垮朴素回路的三件事
物理学准确地告诉我们 PID 回路面对的是什么。机器人运动方程 就像一本账:它说明要产生某个加速度,你必须施加多少 关节力矩。用文字写出来是:力矩 =(惯量乘加速度)+(与速度相关的耦合)+(重力)。这三块各自都是击败一个无视它们的控制器的方式。
tau = M(q) * q_ddot + C(q, q_dot) * q_dot + g(q) tau joint torques you command M(q) inertia matrix -> changes with the arm's pose q C(...) Coriolis/centrifugal -> couples joint to joint via speed g(q) gravity load -> pulls even when standing still
第一,重力。即使手臂完全静止,重力也会把连杆往下拉,所以关节仅仅为了保持位置就需要力矩。普通的位置回路只有在出现误差时才产生力矩,于是它必须先下垂、积累误差,然后才往回顶——手臂会下塌,始终差一点够不到目标。解决办法有个我们还会再见到的名字:重力补偿,一个前馈力矩,在误差出现之前就把重量托住。
第二,变化的惯量。同一个关节,在手臂收拢时感觉很轻,在手臂伸展时感觉很重——惯量矩阵 M(q) 会随姿态变化。一组对收拢的手臂既平稳又稳定的 PID 增益,到手臂伸展时可能变得迟钝、甚至不稳定,因为控制器实际上是在毫不知情地推动一个不同的质量。
第三,关节之间的耦合。当肩关节加速时,它会把侧向力甩到肘关节和腕关节上——这就是 科里奥利力与离心力项 C(q, q_dot)。在肘关节的 PID 回路看来,这些力就像一种神秘的扰动,恰好在机器人快速运动时出现。每个关节的控制器都在打一场它看不见的拔河,而点燃这场拔河的,是其余每个关节的运动。
核心思想:让回路用上模型
这里有一个整章都围绕着它展开的关键转折。朴素的 PID 回路纯粹是被动的——它等误差出现,然后纠正。但我们已经写出了运动方程,这意味着我们可以在机器人落后之前,大致预测出它需要多少力矩。基于模型的控制把这个预测当作“抢跑”喂进去,只把小小的残余误差留给反馈回路去清理。
具体来说,你把运动方程反过来用:给定你想要的运动,算出它所需的力矩。这个反向计算就是 逆动力学。把它的答案作为前馈项交给电机,问题中沉重、被重力牵引、相互耦合的那些部分,在变成误差之前就基本被抵消掉了。留给反馈回路的,是一个轻盈、近乎线性的系统——正是那种温和、PID 能大放异彩的情形。
这就是高级机器人控制的统一主题:模型承担可预测的负担,反馈处理意外。模型永远不会完美——质量是估出来的,摩擦杂乱无章,负载还会变化——所以反馈从不退场。但这样切分工作,就把一个不可能完成的单一回路,变成了一对易于处理的搭档:先预测,再纠正。
本章将展开的工具箱
接下来的每一个工具,都是对上面三件麻烦事(以及由它们引出的问题)的不同回答。把下面这份清单当作我们要去往何处的地图。
- 直接抵消动力学——计算力矩控制 与 反馈线性化 用逆动力学抹去重力、惯量与耦合,留下一个干净的线性回路供你调参。
- 控制机器人“摸起来”如何,而不只是它在哪里——阻抗控制、导纳控制 与 力控制 让手臂可软可硬,并在接触世界时以选定的力去推按。
- 让取舍达到最优——线性二次型调节器(LQR) 与 模型预测控制(MPC) 选择在精度与能耗之间权衡的力矩,MPC 甚至会在约束之下向前规划若干步。
- 在模型不准时也能应付——自适应控制 会针对未知负载自我调整,而 鲁棒控制 与 滑模控制 即便模型有误差也保持稳定。
- 找回你测不到的量,并协调全身——状态观测器 从带噪声的传感器信号中重建像速度这样的隐藏量,而 全身控制 在足式或人形机器人上同时兼顾多个目标。
请留意这条主线:几乎每个工具,要么用模型把事情做得更好,要么防范模型并不完美。带着这副“镜片”去看,本章余下的内容就不再像一长串缩写的游行,而更像一场围绕“你该多信任你的模型”的连贯对话。