倒单摆

倒单摆是质心在其枢纽点以上的摆。倒单摆在力学上无法稳定平衡，在没有额外控制时，倒单摆会倒下。若利用控制系统控制杆的角度，在杆开始要倒下时调整质心位置，让杆子不会倒下，可以维持倒单摆的平衡。倒单摆是动力学及控制理论中的经典问题，常用来测试不同的控制策略。倒单摆常以枢纽点在台车上的方式来呈现，如图所示。这称为“台车和杆子”。大部分的应用会限制单摆只有一个自由度，固定摆的旋转轴。一般的单摆在重物在枢纽点下方时会平衡，倒单摆在其本质上就无法自行平衡，需要透过外在控制才能平衡。外在控制平衡的作法可以在枢纽点加力矩，或是让枢纽点水平移动，再透过回授系统来使倒单摆平衡，改变质量相对枢纽点转动的速度，或是让枢纽点在垂直方向晃动。像人用手设法平衡倒立的扫帚，就是人工平衡倒单摆的例子。

## 简介

单摆的重物在枢纽点下方时，即为系统的稳定平衡点。单摆不受外在力矩时可以维持不动，若让单摆重物偏离平衡位置，放开后重力会产生力矩使单摆回到平衡点。倒单摆旳重物在枢纽点上方，会用刚体的杆子支持重物，位置恰好和稳定平衡点相差180度，是不稳定平衡点：倒单摆在不受外在力矩时可以维持不动，但若只要有一点偏差，重物就会偏离平衡，而重力产生的力矩会使单摆偏离平衡点，因此最后倒单摆会倒下。

为了要使单摆在倒单摆的位置下可以维持平衡，可以使用控制系统，监控倒单摆的角度，在倒单摆开始要倒下时加以施加力或是力矩，使它往反方面移动，设法让它平衡。倒单摆是动力学及控制理论中的经典问题，常用来测试不同的控制算法（例如PID控制器、状态空间、类神经网络、模糊控制、遗传算法等）。此问题的一些变化包括有多个杆、由倒单摆改为台车及倒单摆系统（台车和杆子），在跷跷板上平衡台车及倒单摆系统。倒单摆和火箭或是导弹导引系统有关，其重心位在阻力中心的后方，因此在空气力学上会不稳定。用伺服机构平衡台车及倒单摆系统就可以对此问题有一些理解，或是徒手设法平衡倒立的扫帚也可以。利用自平衡的个人运输工具即可解决此问题，例如赛格威、自平衡滑行车及自平衡单轮车。

另外有一种可以使倒单摆稳定，而且不需回授或是控制系统的方式，是将倒单摆的枢纽快速上下震荡，这称为是卡皮察摆。若振荡的加速度及振幅够大，倒单摆会以一种反直觉的方式从扰动中恢复平衡。若枢钮是以简谐运动的方式运动，则倒单摆的运动可以用马丢函数来描述。

## 运动方程

倒单摆的运动方程和单摆运动的限制条件有关。倒单摆会依照其运动组态的不同，有不同的运动方程。

### 固定枢纽点

若倒单摆的枢纽点固定无法移动，其运动方程会类似一般的单摆，但符号会有些不同。以下的运动方程假设没有摩擦力，在运动时也没有阻力，杆为刚体，没有质量，而且运动限制在二维空间内。

$$\ddot \theta - {g \over \ell} \sin \theta = 0$$

其中$\ddot \theta$是摆的角加速度，$g$是地球表面的标准重力，$\ell$是摆的长度，而$\theta$是摆相对平衡位置的角度。

也可以计算角加速度如下：

$$\ddot \theta = {g \over \ell} \sin \theta$$

倒单摆的角加速度会使摆远离不稳定平衡的垂直位置，角加速度和长度成反比。长的倒单摆倒下的速度会比较慢。

#### 用力矩及转动惯量来推导

假设倒单摆的摆由质量为$m$的质点，接在长度为$\ell$的刚体无质量杆上，摆的另一端是固定的枢纽点。

系统的净力矩会等于转动惯量和角加速度的乘积：

$$\boldsymbol{\tau}_{\mathrm{net}}=I \ddot \theta$$

净力矩是由重力产生的力矩：

$$\boldsymbol{\tau}_{\mathrm{net}}= m g \ell \sin \theta\,\!$$

其中$\theta\ $是摆相对平衡位置的角度。

所得的方程式为：

$$I \ddot \theta= m g \ell \sin \theta\,\!$$

点质点的转动惯量公式为：

$$I = m R^2$$

在倒单摆的例子中，半径为摆的长度$\ell$。

将转动惯量用$I = m \ell ^2$来表示

$$m \ell ^2 \ddot \theta= m g \ell \sin \theta\,\!$$

等号两边同除$\ell^2$，可得：

$$\ddot \theta = {g \over \ell} \sin \theta$$

### 台车上的倒单摆

<image>

台车上的倒单摆包括质量为$M$的台车,上面有可以转动的杆，顶端有质量为$m$的重物，台车的运动方向受到限制，只能在一个方向进行线性运动。

#### 拉格朗日方程

可以用拉格朗日力学推导运动方程。以右侧的图为准，其中的$\theta(t)$是长度为$l$的摆相对于垂直线的角度，而作用力是重力以及x方向的外力F。定义$x(t)$是台车的位置，系统的拉格朗日量$L = T - V$为：

$$L = \frac{1}{2} M v_1^2 + \frac{1}{2} m v_2^2 - m g \ell\cos\theta$$

其中$v_1$是台车速度，$v_2$是点状质量$m$的速度。

$v_1$及$v_2$可以用x和$\theta$来表示，其作法是将速度写成位置的一阶导数：

$$v_1^2=\dot x^2$$

$$v_2^2=\left({\frac{d}{dt}}{\left(x- \ell\sin\theta\right)}\right)^2 + \left({\frac{d}{dt}}{\left( \ell\cos\theta \right)}\right)^2$$

简化$v_2$的式子可得：

$$v_2^2= \dot x^2 -2 \ell \dot x \dot \theta\cos \theta + \ell^2\dot \theta^2$$

拉格朗日量为：

$$L = \frac{1}{2} \left(M+m \right ) \dot x^2 -m \ell \dot x \dot\theta\cos\theta + \frac{1}{2} m \ell^2 \dot \theta^2-m g \ell\cos \theta$$

运动方程为：

$$\frac{\mathrm{d}}{\mathrm{d}t}{\partial{L}\over \partial{\dot x}} - {\partial{L}\over \partial x} = F$$

$$\frac{\mathrm{d}}{\mathrm{d}t}{\partial{L}\over \partial{\dot \theta}} - {\partial{L}\over \partial \theta} = 0$$

替代式子中的$L$，并且简化，可以得到倒单摆的运动方程：

$$\left ( M + m \right ) \ddot x - m \ell \ddot \theta \cos \theta + m \ell \dot \theta^2 \sin \theta = F$$

$$\ell \ddot \theta - g \sin \theta = \ddot x \cos \theta$$

上述式子是非线性的，不过因为目标是维持倒单摆直立，方程式可以在$\theta \approx 0$附近线性化。

#### 牛顿第二运动定律

若用牛顿第二运动定律求解此问题，可以得到单摆和台车各部分的作用力，每一个物体都有二个方程式，分别是x方向及y方向。台车的运动方程如下，等号左边是合力，等号右边是质量及加速度。

$$F-R_x = M \ddot x$$

$$F_N - R_y - M g = 0$$

上式中$R_x$和$R_y$是枢纽点上的作用力，$F_N$是台车受到的正向力。第二个式子只和垂直的作用力有关，因此可以用来求解正向力。第一个式子可以用求解水平的作用力。为了完成以上的方程，需要计算摆的加速度，若在惯性坐标下，点质量的位置是

$$\vec r_P = (x-\ell \sin \theta) \hat x_I + \ell \cos \theta \hat y_I$$

在惯性坐标下，对时间取二阶微分，即可得到加速度。

$$\vec a_{P/I} = (\ddot x + \ell \dot \theta^2 \sin \theta - \ell \ddot \theta \cos \theta ) \hat x_I + (-\ell \dot \theta^2 \cos \theta - \ell \ddot \theta \sin \theta) \hat y_I$$

因此，用牛顿第二运动定律求解时，可以列出x方向及y方向的式子。注意给摆的反作用力是正的，给台车的是负的。这是因为牛顿第三运动定律的结果。

$$R_x = m(\ddot x + \ell \dot \theta^2 \sin \theta - \ell \ddot \theta \cos \theta )$$

$$R_y - m g = m (-\ell \dot \theta^2 \cos \theta - \ell \ddot \theta \sin \theta)$$

第一个方程式提供了一个在未知外力$F$时，可以计算水平反作用力的方式。可以用第二式求解垂直作用力，再将第一式的$R_x = m(\ddot x + \ell \dot \theta^2 \sin \theta - \ell \ddot \theta \cos \theta )$用$F-R_x = M \ddot x$取代，可得

$$\left (M+m \right) \ddot x - m \ell \ddot \theta \cos \theta + m \ell \dot \theta^2 \sin \theta = F$$

可以观察到这个式子和拉格朗日方程的结果完全一样。为了得到第二式，需要将摆的运动方程和始终和摆垂直的单位向量进行点积，结果会列为物体座标（B）下的X轴。在惯性座标（I）下，向量可以用以下简单的二维坐标转换来表示

$$\hat x_B = \cos \theta \hat x_I + \sin \theta \hat y_I$$

摆的运动方程可以写作向量的形式，为$\sum \vec F = m \vec a_{P/I}$。在两侧和$\hat x_B$作点积，可得以下等式的左边（注意转置后点积的结果相同）

$$(\hat x_B)^T\sum \vec F = (\hat x_B)^T (R_x \hat x_I + R_y \hat y_I - m g \hat y_I) = (\hat x_B)^T(R_p \hat y_B - m g \hat y_I) = -m g \sin \theta$$

上式中用到了在物体移动方向为准的反作用力分量，以及惯性座标下反作用力分量之间的关系。假设中有假设杆无质量，因此杆无法给予垂直杆子的力。惯性座标下的反作用力可以写成$R_p \hat y_B$，强调杆只能提供和杆平行的力。因此会产生另外一个方程，可以求解杆上的张力

$$R_p = \sqrt{ R_x^2 + R_y^2}$$

等式的右边也可以用将摆的力加速度和$\hat x_B$点积的方式计算，结果（经过一些简化）如下

$$m(\hat x_B)^T(\vec a_{P/I}) = m(\ddot x \cos \theta - \ell \ddot \theta)$$

合并左式及右式，并且除以m可得

$$\ell \ddot \theta - g \sin \theta = \ddot x \cos \theta$$

此结果也和拉格朗日方程的结果相同，使用牛顿运动定律的好处是知道所有的反作用力，可以确定摆和台车不会因为受力过大而损毁。

#### 稳定台车倒单摆的方式

稳定台车倒单摆的方式，可以简述为下三点。

<image>

- 若直杆往右倾斜，台车需要往右加速，反之亦然。
- 台车相对轨道中心的位置$x$稳定的方式是是将null angle由台车的位置来进行调整，也就是null angle $= \theta + k x$，其中$k$是小的数值。因此杆会轻微的向轨道中心倾斜，若其角度恰好垂直的话，就会稳定在轨道中心。倾斜感测器或是轨道斜率的误差（本来会造成不稳定的效应）都会变成稳定的位置偏移量，另外增加的偏移量则是为了位置控制。
- 正常的摆单摆在角频率为$\omega_p = \sqrt {g/\ell}$时会共振。为了避免不受控的晃动，枢纽点需要抑制在共振频率$\omega_p$附近的频率响应。倒单摆也需要类似的带拒滤波器才能达到稳定。

由于null angle调整策略的结果，正回授的结果为正，若摆突然往右移动，会让平台的初始速度往左，但之后会往右，以让倒单摆重新平衡。摆的不稳定性以及正位置回授的不稳定性交互作用，以产生一个稳定的系统，这是倒单摆稳定问题的特征，也是在数学分析上有趣而有挑战性的地方。

<image>

## 卡皮察摆

倒单摆若在上下振动的平台上，有可能可以在不受控的情形下稳定，最早研究这种倒单摆的是俄国科学家彼得·列昂尼多维奇·卡皮察，因此这种摆也称为卡皮察摆。在无质量垂直振荡平台上的摆，其运动方程推导方式类似台车上的单摆，点质点的位置为：

$$\left( -\ell \sin \theta , y + \ell \cos \theta \right)$$

一次微分后可以得到速度：

$$v^2=\dot y^2-2 \ell \dot y \dot \theta \sin \theta + \ell^2\dot \theta ^2.$$

<image>

系统的拉格朗日量如下：

$$<pre> L = \frac{1 }{2} m \left ( \dot y^2-2 \ell \dot y \dot \theta \sin \theta + \ell^2\dot \theta ^2 \right) - m g \left( y + \ell \cos \theta \right ) </pre>$$

运动方程为：

$${\mathrm{d} \over \mathrm{d}t}{\partial{L}\over \partial{\dot \theta}} - {\partial{L}\over \partial \theta} = 0$$

结果是：

$$\ell \ddot \theta - \ddot y \sin \theta = g \sin \theta.$$

若y的运动是简谐运动$y = A \sin \omega t$，则其微分方程为：

$$\ddot \theta - {g \over \ell} \sin \theta = -{A \over \ell} \omega^2 \sin \omega t \sin \theta.$$

此一方程没有解析解，不过可以用不同方式来求解。若振幅很小时，可以用马丢函数来近似。分析结果是卡皮察摆在快速振荡时可以稳定。左图是慢速振荡的图，在慢速振荡下，单摆很快就倒下，其角度$\theta$很快就超过90°，表示单摆已倒下。右图是快速振荡的图，若$y$是快速振荡，摆可以稳定在直立状态下。启始时倒单摆是在直立状态（$\theta = 0$），但摆的角度始终不大，而且摆有倒下。

## 倒单摆的种类

平衡倒单摆是研究者常见的工程挑战，有许多不同的变形，从台车上的倒单摆到台车上的多段倒摆（倒复摆）。另外一种变体是将倒单摆或是倒复摆放在旋转元件的末端。若没有外力平衡，这些倒摆都会倒下。计划中的倒单摆可能是在找到平衡位置后要可以维持平衡，或是要可以自行达到平衡状态。另外一个平台是两轮平衡的倒单摆。两轮的倒单摆可以旋转，可以提供相当的操控性。另外一个变体是在单点上的平衡。陀螺、单轮脚踏车或是球上的倒单摆都是单点上平衡的例子。如上所述，若在垂直振荡的平面上，倒单摆也可以维持平衡。

## 倒单摆的例子

人就是平衡倒单摆的例子之一。站着的人就是倒单摆，其脚即为枢纽，若站着的人没有肌肉持续的微幅施力调整，最后会跌倒。人的神经系统中有无意识的反馈控制系统、平衡感或正位反射，用眼睛、肌肉及关节的本体感觉，以及由内耳中三个半规管组成前庭系统所得的方向输入、或是利用耳石的输入，持续的对骨骼肌小幅调整施力，以维持直立。走路、跑步或是单脚站立都需要此系统的调节。有些疾病、酒精或是药物中毒会影响此一反射，造成头晕或无法自行站立平衡。警察在测试驾驶者是否有受到酒精或是药物影响的现场清醒测试就是确认此反射是否有问题。

像用手平衡直立在手上的扫把或是直尺，也是倒单摆的例子。

有许多的设备中有用到倒单摆，倒单摆的平衡也是研究者探讨的工程问题之一。倒单摆本身不稳定的特性，略有一些扰动，就会有明显的响应，因此也是早期地震仪中的关键元件之一。

很多现代的个人运输工具中也有用到倒单摆的概念，例如二轮的自平衡滑行车以及单轮的电子单轮车。这些设备有动力学不稳定的特性，需要透过电子回授配合伺服机构使其直立。

让台车上的单摆由单摆往下的稳定状态，摆动到倒单摆的状态，是最佳控制的典型玩具问题之一

<image>

## 延伸阅读

- Franklin; et al. (2005). Feedback control of dynamic systems, 5, Prentice Hall.

## 外部链接

- YouTube - Inverted Pendulum - Demo #3
- YouTube - inverted pendulum
- YouTube - Double Pendulum on a Cart
- YouTube - Triple Pendulum on a Cart
- A dynamical simulation of an inverse pendulum on an oscillatory base
- Inverted Pendulum: Analysis, Design, and Implementation
- Non-Linear Swing-Up and Stabilizing Control of an Inverted Pendulum System
- Stabilization fuzzy control of inverted pendulum systems
- Blog post on inverted pendulum, with Python code
- Equations of Motion for the Cart and Pole Control Task