第 7 章

无人机的真实个性

无人机为什么会像弹簧一样弹跳?

第 7 章:无人机的真实个性 ↗

控制器就是一个弹簧

米卡: 朱恩问,我们的无人机在地图上处于什么位置。线索:还记得第 2 章里那个弹来弹去的无人机吗?我们把 Kp\eff{K_p} 调得越大,它就弹得越厉害。它看起来完全就像挂在弹簧上的重物。

西奥: “看起来像”不算证据。我们把它们并排放好,把两个方程都写下来。

左边:一个 0.5 kg 的质量块挂在弹簧和阻尼器上(一个充满油的小活塞,用来阻碍运动)。右边:我们的无人机,同样的质量,同样的阻力,在比例控制下。

先把作用在质量块上的每一个力都写下来,一个一个来。位置 xx 从静止点开始量,向上为正。

  • 弹簧把它往静止点拉回去,拉伸得越远,拉得越用力:−k x-\eff{k}\,x。拉伸两倍远,拉力就是两倍。
  • 阻尼器对抗的是运动,而不是位置:−c x˙-c\,\dot{x}。静止不动时,它什么也不做。动得越快,它往回推得越用力。(x˙\dot{x} 就是第 3 章里的速度。)
  • 重力只是让静止点稍微往下移一点。从静止点开始量,就把它处理掉了。

力 = 质量 × 加速度,而加速度是斜率的斜率(第 3 章)。把各个力加起来,再把所有项移到一边:

m x¨=−k x−c x˙⟹m x¨+c x˙+k x=0m\,\ddot{x} = -\eff{k}\,x - c\,\dot{x} \quad\Longrightarrow\quad m\,\ddot{x} + c\,\dot{x} + \eff{k}\,x = 0

米卡: 所以阻尼器说白了就是讨厌速度的空气?

西奥: 差不多。而且对我们的无人机来说,阻尼器就是空气。

在小部件里,质量块上的橙色箭头是弹簧的拉力,灰色箭头是阻尼器的推力。注意看:每当质量块在摆动的最高点或最低点停下一瞬间,阻尼器的箭头就消失了。

第 7 章:无人机的真实个性 ↗

朱恩: 两条曲线完全重合。不是相似。是一模一样。

看看这两个方程。弹簧用 k x\eff{k}\,x 的力往回推:拉伸得越远,拉得越用力。我们的控制器用 Kp(2−h)\eff{K_p}(\sp{2} - \out{h}) 的力去推:离给定值越远,推得越用力。同样的规则。 控制器就是一根弹簧:一根看不见的弹簧,把无人机拉向 2 m。

西奥: 所以 P 控制器就是一根虚拟弹簧,空气阻力 cc 就是一个虚拟阻尼器。我们学到的关于弹簧的一切,都可以免费拿来用。

两个性格旋钮

每一个质量-弹簧-阻尼系统,也就是每一架 P 控制的无人机,都只用两个数来描述。我们一个一个地把它们找出来。

有多快:自然频率

把阻尼器拿掉,我们就回到了第 6 章:弹簧按 cos⁡(ωt)\cos(\omega t) 摆动,其中 ω=k/m\omega = \sqrt{k/m}。我们把这个快慢叫作自然频率 ωn\omega_n:没有任何东西让它慢下来时,系统想要摆动的快慢。

ωn=km每 2πωn s 完整摆动一次\omega_n = \sqrt{\frac{\eff{k}}{m}} \qquad\qquad \text{每 } \frac{2\pi}{\omega_n} \text{ s 完整摆动一次}

第 7 章:无人机的真实个性 ↗

米卡: 弹簧越硬,摆得越快。那我把 k\eff{k} 拉满,一切都更好了!

弹簧越硬,拉得越用力,所以摆得越快。质量越重,越难推动,所以摆得越慢。(弧度每秒就是第 5 章里的旋转速度:转一整圈是 2π 弧度,也就是 2π 个半径长的轮缘。)

西奥: 小心。第 2 章里把 Kp\eff{K_p} 调大,无人机变快了,也更爱弹了。先听听阻尼器怎么说。

有多弹:阻尼比

现在把阻尼器放回去。多少阻尼才算“很多”?这取决于弹簧:能驯服软弹簧的阻尼器,几乎拖不慢硬弹簧。所以我们拿一个特殊的量来比较,那就是临界阻尼 ccritc_{\text{crit}}:刚好完全消除超调的最小阻尼。

ccrit=2m kζ=cccrit=c2m kc_{\text{crit}} = 2\sqrt{m\,\eff{k}} \qquad\qquad \zeta = \frac{c}{c_{\text{crit}}} = \frac{c}{2\sqrt{m\,\eff{k}}}

阻尼比 ζ(希腊字母 zeta)就是我们的阻尼占这个量的比例。它是一个纯数,没有单位。ζ = 0 会永远摆下去,ζ = 1 正好是临界,ζ = 0.5 的阻尼只有消除超调所需的一半。

第 7 章:无人机的真实个性 ↗

朱恩: 等等,0.16?这正好是第一个小部件里无人机的 ζ!

西奥: 质量一样、阻力一样、刚度一样,ζ 当然也一样。弹簧和无人机真是双胞胎。

地图上的两个点

现在回到 ss 的地图。像第 4 章和第 6 章那样猜 x=estx = e^{st},方程就变成 ms2+cs+k=0m s^2 + c s + k = 0。两边除以 mm,再用我们的两个旋钮写出这两个系数:

s2+cm⏟2ζωn s+km⏟ωn2=0s^2 + \underbrace{\frac{c}{m}}_{2\zeta\omega_n}\, s + \underbrace{\frac{\eff{k}}{m}}_{\omega_n^2} = 0

西奥: 等一下。那个 2ζωn2\zeta\omega_n 是从哪儿来的?看起来像是凭空编出来的。

朱恩: 乘出来看看:2ζωn=2⋅c2mk⋅km=cm2\zeta\omega_n = 2 \cdot \frac{c}{2\sqrt{mk}} \cdot \sqrt{\frac{k}{m}} = \frac{c}{m}。还是同一个数,只是换了个名字,这样我们的两个旋钮就出现在方程里了。

用求根公式解它,就得到两个 ss 值:

s2+2ζωn s+ωn2=0⟹s=−ζωn±ωnζ2−1\begin{aligned} & s^2 + 2\zeta\omega_n\, s + \omega_n^2 = 0 \\ \Longrightarrow\quad & s = -\zeta\omega_n \pm \omega_n\sqrt{\zeta^2 - 1} \end{aligned}

± 号给出两个答案,对应两个点。点的左右位置是 σ(sigma):这部分运动收缩得有多快。它的高度是 ω:它旋转得有多快。当阻尼小于 1 时,两个点左右位置相同,但高度相反。等于 1 时它们重合;大于 1 时两个点都落在水平轴上。

新词

阶跃响应
系统对目标突然跳变(这里是从 0 跳到 1 m)的反应。这是展示系统性格的标准方式。
调节时间(2%)
响应从此一直保持在目标的 2% 以内,需要多长时间。

拨动这两个旋钮试试。观察图上的蓝点:它们就是 ss 的两个取值,在最终稳定下来的高度之上,运动是 es1te^{s_1 t} 和 es2te^{s_2 t} 的混合。(恰好在 ζ = 1 时,两个点合成一个,第二种成分变成 t es1tt\,e^{s_1 t}。)

第 7 章:无人机的真实个性 ↗

新词

欠阻尼(ζ<1\zeta < 1)
这两个 ss 值是一对关于实轴对称的镜像点,位于半径为 ωn\omega_n 的圆上。响应会超调并来回振荡,然后才稳定下来。
临界阻尼(ζ=1\zeta = 1)
这一对在实轴上相遇,合成一个重根点,所以运动是 (A+B t) e−ωnt(A + B\,t)\,e^{-\omega_n t}。这是不会超调的最快响应。
过阻尼(ζ>1\zeta > 1)
这一对沿实轴分开:一个向左移动,一个慢慢爬向零点。不会超调,但很迟钝。

欠阻尼的点里还藏着一个细节:它们的高度是 ωn1−ζ2\omega_n\sqrt{1-\zeta^2},比 ωn\omega_n 小一点。阻尼不只是让晃动变小,还会让它稍微变慢。这就是阻尼振荡频率 ωd\omega_d,小部件里会显示它。

ωd=ωn1−ζ2\omega_d = \omega_n\sqrt{1 - \zeta^2}

米卡: 所以第 6 章里的螺旋线一直就是无人机的性格。旋转 = 振荡,收缩 = 稳定!

阻尼越大总是越好吗?

朱恩: 简单。振荡不好,阻尼能消灭振荡。所以为了保险,我设 ζ=5\zeta = 5。史上最安全的无人机。

先预测一下! 同样的弹簧,同样的 ωn\omega_n。我们把阻尼从 ζ=1\zeta = 1 提高到 ζ=3\zeta = 3。它到达目标会更快还是更慢?

第 7 章:无人机的真实个性 ↗

朱恩: 我那台“安全”的无人机慢得要命。就像在蜂蜜里移动一样。

米卡: 看这张图!有一个点飞快地跑到左边去了。但另一个点却停在非常靠近零的位置。

西奥: 而 este^{st} 在 ss 接近零时会非常缓慢地衰减。快的那个一眨眼就没了。慢的那个才是主导。

运动中每一个 este^{st} 成分都叫作一个模态。运动是几个模态的混合,快的那些消失之后,就只剩下最慢的那个。所以对于这个阶跃响应,实际出现的最慢模态决定了漫长的等待时间。

阻尼太小会振荡;阻尼太大则会缓慢爬行。两者之间有一个最佳点。在竞赛里选 ζ = 0.7:它的超调不到 5%,但进入目标的 5% 以内比 ζ = 1 早得多。许多设计把 ζ 定在大约 0.7 到 1 之间,用一点点超调换取速度。其他任务可能偏好不同的平衡。

回到无人机

现在第 2 章终于讲得通了。对于我们的无人机,弹簧常数就是增益:

ωn=Kpm,ζ=c2m Kp\omega_n = \sqrt{\frac{\eff{K_p}}{m}}, \qquad \zeta = \frac{c}{2\sqrt{m\,\eff{K_p}}}

Kp\eff{K_p} 位于阻尼公式的分母。调大增益会让无人机更快(ωn\omega_n 更大),但阻尼更小。当 Kp=20\eff{K_p} = 20 N/m 时:ζ=1/(20.5×20)≈0.16\zeta = 1/(2\sqrt{0.5 \times 20}) \approx 0.16。非常弹跳,正如我们所见。在图上,它的两个 ss 值位于很靠上的位置,只比竖直轴稍微偏左一点。这就是我们无人机所处的位置。

西奥: 而且我们无法在不把 Kp\eff{K_p} 调得很低的情况下获得更多阻尼,而这又会带回静差。我们需要一种刻意增加阻尼的方法。

拖动增益,在一句话里看清这个权衡:

第 7 章:无人机的真实个性 ↗

箭头有长度,也有角度

米卡: 等等。这些点都在半径为 ωn\omega_n 的圆上,ζ 只是让它们绕着圆滑动。所以一个点其实是两样东西:离 0 有多远,以及朝哪个方向。

每支箭头 z=a+b iz = a + b\,i 都可以换一种说法:用它的长度 ∣z∣|z|(课本上叫模)和它的角度(课本上叫辐角)。长度由勾股定理给出。对于指向右边的箭头(a>0a > 0),角度就是“升高 ÷ 前进”(也就是斜率)等于 b/ab/a 的那个角。它的名字叫反正切,写作 arctan⁡\arctan:正切的撤销键。

∣z∣=a2+b2,∠z=arctan⁡ba(a>0)|z| = \sqrt{a^2 + b^2}, \qquad \angle z = \arctan\frac{b}{a} \quad (a > 0)

第 7 章:无人机的真实个性 ↗

第 5 章发现,箭头相乘就是长度相乘、角度相加。除法要把这一步撤销,所以是长度相除、角度相减。

西奥: 那么 1/(1+i)1/(1+i):长度是 1/21/\sqrt 2,角度是 45° 加 45°,也就是 90°?嗯。再把它乘回 1+i1+i,它指向 135°,离 1 差得远呢。

朱恩: 那就是减。长 1/21/\sqrt 2,角度 −45°。乘以长 2\sqrt 2、角度 +45° 的箭头,得到长度 1、角度 0°:正好是 1。验算通过。

第 7 章:无人机的真实个性 ↗

那支淡淡的虚线箭头,就是第 6 章里的镜像孪生 zˉ=a−b i\bar z = a - b\,i(数学家管它叫共轭复数):长度相同,角度相反。把一支箭头乘以它的孪生,角度就抵消了,只剩下一个普通的正数:长度的平方。第 9 章的表正好需要这个:

z zˉ=∣z∣2=a2+b2,(s−iω)(s+iω)=s2+ω2z\,\bar z = |z|^2 = a^2 + b^2, \qquad (s - i\omega)(s + i\omega) = s^2 + \omega^2

那个圆又是怎么回事?位于 −ζωn+i ωn1−ζ2-\zeta\omega_n + i\,\omega_n\sqrt{1-\zeta^2} 的极点,长度是 ωn\omega_n。从负实轴开始量它的角度 θ,向左的部分就是 ωncos⁡θ\omega_n\cos\theta。所以 ζ=cos⁡θ\zeta = \cos\theta:阻尼就是角度。

朱恩: 试试小部件里的第二种设置:1 + iωτ。这就是第 3 章的咖啡规则遇上了摆动。除以它会让箭头缩短并往回转,摆动越快,缩得越多、转得越多,但永远不会超过四分之一圈。我敢打赌,淋浴一定很在乎这个。

新词

长度 ∣z∣|z|
箭头有多长:a2+b2\sqrt{a^2+b^2},其中 z=a+b iz = a + b\,i。箭头相乘,长度也相乘。
角度 ∠z\angle z
箭头指向哪个方向,从正实轴算起。对于指向右边的箭头,就是 arctan⁡(b/a)\arctan(b/a)。相乘时角度相加,相除时角度相减。
镜像孪生 zˉ\bar z
把箭头沿实轴翻过来得到的 a−b ia - b\,i(共轭复数)。z zˉ=∣z∣2z\,\bar z = |z|^2。

我们现在知道什么

我们搞清楚了什么

  • 一个 P 控制的无人机完全遵循与弹簧上的质量相同的方程:控制器就是一个虚拟弹簧。
  • 两个数字概括了它的特性:ωn\omega_n(多快)和 ζ\zeta(多弹跳)。
  • ωn=k/m\omega_n = \sqrt{k/m} 是没有阻尼器时的摆动快慢。ζ=c/ccrit\zeta = c/c_{\text{crit}} 把阻尼与临界阻尼 2mk2\sqrt{mk}(刚好消除超调的阻尼)相比较。
  • 运动是两个 este^{st} 项的混合。在欠阻尼时,两个 ss 值位于半径为 ωn\omega_n 的圆上;在过阻尼时,它们沿实轴分开。
  • 箭头有长度和角度(arctan⁡\arctan)。相乘就是长度相乘、角度相加;相除就是长度相除、角度相减。ζ=cos⁡θ\zeta = \cos\theta。
  • 阻尼还会让晃动稍微变慢:ωd=ωn1−ζ2\omega_d = \omega_n\sqrt{1-\zeta^2}。
  • 阻尼并不是越大越好:一旦超过 ζ=1\zeta = 1,那个较慢的 ss 值就会慢慢趋近于零,整个系统也就跟着变慢了。
  • 对无人机来说,KpK_p 越大,阻尼就越小。这就是它变得更晃的原因。

西奥:“我们靠猜得出了这些 ss 值。再加上重力、风、包裹和更聪明的控制器,猜就变得很难看了。有没有一种机器能把这套微积分变成普通代数?”

第 7 章:无人机的真实个性 ↗