第 1 章
开环与闭环
我们能不能直接告诉无人机用多大推力?
认识一下无人机
朱恩: 我借来了一架无人机!它的任务:运送小包裹,并精确悬停在 2 米高度,好让人来取。
米卡: 这就像淋浴,对吧?一个我们想要的数值(2 米),一个我们能改变的东西(螺旋桨推力有多大)。
事实如下。无人机重 0.5 kg,所以重力以 牛顿把它往下拉。螺旋桨用一个我们选择的推力 往上推。无人机移动时,空气会稍微往回推:大约每米每秒速度 1 牛顿。
先别管 上面的点。它们描述速度和加速度;我们会在第 3 章里把这两者都建立起来。当无人机静止时,4.9 N 与重力平衡:推力更大就让它向上运动,推力更小就让它下落。当它在运动时,空气阻力也会阻碍它的运动,所以 4.9 N 会把它减速到静止。
只要告诉它该做什么
西奥: 我们完全知道物理规律。所以我们不需要看任何东西。我们可以计算出一个计划:先用力推一会儿来爬升,然后精确地推 4.9 N 来悬停。
这种计划叫做开环:计划决定推力,没有人检查实际发生了什么。试试看。选择一个爬升推力和爬升时长,然后发射。
西奥: 我算出来了。在爬升过程中,无人机很快会稳定在一个恒定速度上,即(额外推力 ÷ 阻力)。你最终到达的高度就是(额外推力 ÷ 阻力)× 爬升时间。对于 6 N,那是 m/s,所以爬升 秒。
西奥的计算里有个微妙之处:当他切换到 4.9 N 时,无人机还在上升。阻力会逐渐让它停下来。他的最终高度公式里包含了切换之后多飞的那段距离。
按下 西奥的方案。它落在 2.00 m。漂亮。
米卡: 西奥,太厉害了!我们搞定了!这章结束!
朱恩: 我们来看看外面会发生什么……今天有点微风。
再运行一次西奥的方案,在它悬停的时候按下 阵风(向下推 1 N,持续一秒)。
西奥: 它掉下去了大概一米……而且就停在那儿了。我的数字没错啊!
朱恩: 你的数字完美无缺。只是风不在你的方案里。而且无人机根本不知道自己在错误的位置。
这就是我们的错误:我们相信了“只要数字算对了,就不需要反馈。” 无风时的成功是真的,可一旦世界做出了方案没预料到的事,这个方案就毫无用处了。阵风过后,推力又正好是 4.9 N,所以无人机就停在阵风把它吹到的地方。
包裹测试
现在来点真格的。下面,无人机正悬停在 2 m 高度,推力固定为 4.9 N,恰好平衡它的重量。这时有人给它挂上一个 0.2 kg 的包裹。
先预测一下! 包裹让无人机变重了,但推力仍然保持 4.9 N。会发生什么?
坠机。 开环方案里没有任何东西能察觉到无人机正在下坠。现在把模式切换到 反馈:观察高度,重置,再试一次包裹和阵风。
在反馈模式下,无人机使用一条简单的规则:用悬停推力往上推,每低一米就额外加 8 N 的力。
米卡: 哇。阵风把它吹低了不到 20 cm,它马上就爬回来了。包裹让它下沉了一下,但它没有坠机!
西奥: 它不需要知道发生了什么。它只是看到自己太低了,就推得更用力。这就是诀窍。
朱恩: 但你看:带着包裹时它稳定在约 1.75 m,而不是 2 m。为什么它不能完全回到原位呢?
把它画出来
工程师把这些系统画成方框和箭头,叫做框图。每个方框做一件事;每个箭头传递一个信号。我们在白板上一点一点地画出了我们的框图。
关键区别在于那根从输出绕回到起点的箭头。这就是为什么反馈控制被称为闭环:信息要绕一整圈。往上翻回包裹测试那里:无人机下方的图会亮起当前正在工作的部分。
新词
- 给定值
- 我们想要的是:2 米的高度,38 °C 的水。
- 输出
- 实际发生的是:真实的高度。
- 误差
- 我们偏离了多远。正值表示太低。
- 控制器
- 把误差变成动作的规则。目前是:“每低一米就额外加 8 N。”
- 控制量
- 控制器实际做的事:推力。
- 被控对象
- 被控制的东西:无人机本身,包括它的物理特性。(这个词有点怪,来自老式工厂里的“plant”。)
- 传感器
- 任何测量输出的东西:无人机的测高传感器,淋浴时你的皮肤。
- 扰动
- 外界发生的、我们没计划到的任何事:阵风、包裹、有人冲马桶。
- 开环 / 闭环
- 照着计划行动而不看结果 / 根据你测量到的东西行动。
同一张图,不同的机器
下面是汽车定速巡航的同一张图。给定值是速度,被控对象是汽车,扰动是坡道。当车速低于应有速度时,控制器会把油门踩得更深。
朱恩: 恒温器、定速巡航、淋浴、我们的无人机……每次都是同一个回路,只是标签不同!
目前我们知道的
我们搞清楚了什么
- 开环意味着照着计划走,不看结果。它在风平浪静时可能完美,但一旦出现意外就毫无用处。
- 闭环(反馈)意味着测量输出,把它与给定值比较(得到误差),并据此行动。
- 反馈能应对它从未听说过的扰动:阵风、包裹,任何东西。
- 框图展示了整个回路:给定值 → 误差 → 控制器 → 被控对象 → 输出 → 传感器 → 再回到起点。
- 我们简单的反馈规则阻止了坠机,但加上包裹后它稳定在低了大约 25 cm 的位置。为什么?
我们的回路里有一个神秘数字:8 牛顿每米。为什么是 8?为什么不是 2,或者 50?还有,为什么无人机会稳定在太低的位置?