Underactuated Robotics - 欠驱动机器人学(二)- 简单摆杆

系列文章目录


前言


一、导言

本章的目标并不高,我们只想了解钟摆的动力学原理。

为什么是摆呢?部分原因是,我们大多数多连杆机器人操纵器的动力学都是大量耦合摆的动力学。此外,单摆的动力学原理非常丰富,足以引入我们在本文中将会用到的大部分非线性动力学概念,同时又非常易懂,我们在接下来的几页中就可以(基本)理解。

Underactuated Robotics - 欠驱动机器人学(二)- 简单摆杆_第1张图片

简摆运动方程的拉格朗日推导(如附录所述)得出

ml^2\ddot{\theta }(t)+mgl\sin \theta (t)=Q 

我们将考虑广义力 Q 模拟阻尼力矩(来自摩擦)加上控制力矩输入 u(t) 的情况:

Q=-b\dot{\theta }(t)+u(t)

二、恒定扭矩下的非线性动力学

让我们首先考虑一下摆的动力学,如果它是以一种特殊的简单方式驱动的:扭矩不随时间变化:
ml^2\ddot{\theta }+b\dot{\theta }+mgl\sin \theta =u_0

这些都是相对简单的微分方程,所以如果我给你 \theta (0)\dot{\theta }(0),那么你应该能够对它们进行积分,从而得到 \theta (t)... 对吗?尽管有可能,但即使是最简单的情况(b=u=0),积分也涉及第一类椭圆积分;在这里获得的直觉相对较少。

这与线性方程组的情况形成了鲜明对比,在线性方程组中,我们的大部分理解都来自于对方程的显式积分。例如,对于一个简单的线性系统,我们有

$\dot{q}=a q\;\;\;\;\rightarrow\;\;\;\;q(t)=q(0)e^{a t},$

我们马上就能明白,如果有 a< 0,系统的长期行为是(稳定的)指数衰减,如果有 a> 0,系统的长期行为是(不稳定的)指数增长,如果有 a=0,系统什么也不做。

一切都还没有结束。如果我们关心的是系统的长期行为,那么我们可以应用一些技术。在本章中,我们将首先研究图形求解方法。这些方法在史蒂夫-斯特罗加茨(Steve Strogatz)[1] 的书中有详细描述。

2.1 过阻尼摆

让我们先研究一种特殊情况--直观地说,当 b\dot{\theta }\gg ml^2\ddot{\theta } 时--通过维度分析(使用固有频率 \sqrt{\dfrac{g}{l}} 来匹配单位),当 b\sqrt{\dfrac{g}{l}}\gg ml^2 时会出现这种情况。在这种情况下,阻尼项主宰加速度项,我们有

$m l^{2}{\ddot{\theta}}+b{\dot{\theta}}\approx b{\dot{\theta}}=u_{0}-m g l\sin\theta.$

换句话说,在重阻尼情况下,系统看起来近似一阶。这是重阻尼系统的一般特性,例如雷诺数很低的流体。

我想暂时忽略一个细节:每隔一个 2\pi\theta 就会在自身上绕一圈:

$b{\dot{x}}=u_{0}-m g l\sin x.$

我们的目标是了解这个系统的长期行为:在给定 x(0) 的情况下找到 x(\infty )。 首先,让我们绘制 u_0=0 时的 \dot{x}x 的对比图。

Underactuated Robotics - 欠驱动机器人学(二)- 简单摆杆_第2张图片

首先要注意的是,系统有一些固定点或稳定状态,只要有 \dot{x}=0 就会出现。在这个简单的例子中,过零点就是 x^*=\left \{ \dots,-\pi ,0,\pi ,2\pi ,\dots \right \}。如果初始条件处于一个固定点,我们就知道 x(\infty ) 也会处于同一个固定点。

接下来,让我们研究一下系统在定点附近的行为。考察 x^*=\pi 处的定点,如果系统恰好从定点右侧开始,则 \dot{x} 为正,因此系统将远离定点。如果从左侧开始,则 \dot{x} 为负值,系统将向相反的方向移动。我们把具有这种特性的定点称为不稳定定点。如果我们看 x^*=0 处的定点,情况就不同了:向右或向左开始的轨迹都会向定点移动。我们称这个定点为局部稳定定点。更具体地说,我们将区分多种类型的稳定性(这里用 \epsilon 表示一个任意的小标量):

  1. Lyapunov (i.s.L.) 意义上的局部稳定。如果对于每一个(小)\epsilon > 0\exists \delta > 0,如果 \left \| x(0)-x^* \right \|<\delta\forall t \left \| x(t)-x^* \right \|<\epsilon 。 x^*都是局部稳定的(i.s.L.),那么换句话说,这意味着对于定点周围任何大小为 \epsilon 的球,我都可以创建一个大小为 \delta 的球,那么它将一直在 \epsilon 球内。
  2. 局部吸引力。如果对于每一个(小)\epsilon,我们都有 x(0)=x^*+\epsilon 意味着 \lim_{t\rightarrow \infty }x(t)=x^*,那么定点就是局部有吸引力的。
  3. 局部渐近稳定。如果一个定点是局部稳定的 i.s.L.且具有局部吸引力,那么它就是局部渐近稳定的。
  4. 局部指数稳定。如果对于每一个(小)\epsilon,对于某些正常数 C\alpha,我们都有 x(0)=x^*+\epsilon 意味着 \left \| x(t)-x^* \right \|<Ce^{-\alpha t},那么该定点就是局部指数稳定的。
  5. 不稳定 如果一个定点不是局部稳定的 i.s.L.,那么它就是不稳定的。

一个在李亚普诺夫意义上稳定的定点附近的初始条件可能永远不会到达定点(但不会发散),一个渐近稳定的定点附近的初始条件当 t\rightarrow \infty 到达定点,而一个指数稳定的定点附近的初始条件将以一定的速度到达定点。指数稳定定点也是渐近稳定定点,但反之则不然。吸引力实际上并不意味着 Lyapunov 稳定性,我们无法在一维中看到这一点,因此必须暂时保留这个例子,这就是为什么我们在定义渐近稳定性时特别要求 i.s.L.。很容易构造出 i.s.L. 稳定但非渐近稳定的系统(如 \dot{x}=0)。有趣的是,非线性系统也有可能在有限时间内收敛(或发散);这就是所谓的有限时间稳定性;我们将在本书后半部分看到这方面的例子,但这是一个难以用图形分析法深入探讨的课题。严谨的非线性系统分析充满了微妙和惊喜。此外,这些差异实际上也很重要--我们为稳定系统而编写的代码将因所需稳定类型的不同而有细微差别,这可能决定我们的方法成功与否。

通过目测固定点附近的 \dot{x},我们可以利用 \dot{x}x 的关系图让自己相信 i.s.L.和渐近稳定性。如果我们能找到一条通过平衡点的负斜线,将 f(x) 的图形与横轴分开,甚至可以推断出指数稳定性。这条分隔线的存在意味着非线性系统的收敛速度至少与直线所代表的线性系统一样快。我将用开圆和填充圆分别表示不稳定的固定点和稳定的固定点(i.s.L.)。

接下来,我们需要考虑在离定点较远的初始条件下会发生什么。如果我们把系统的动力学看作是在 x -轴上的流动,那么我们就知道,无论何时 \dot{x}>0,流动都在向右移动;无论何时 \dot{x}<0,流动都在向左移动。如果我们进一步在图上标注表示流动方向的箭头,那么整个(长期)系统行为就会变得清晰明了:

例如,我们可以看到,任何初始条件 x(0)\in (-\pi ,\pi ) 都会导致 \lim_{t\rightarrow \infty }x(t)=0。这个区域称为 x^*=0 处定点的吸引区域(或吸引盆地)。两个定点的吸引盆地不能重叠,分隔两个吸引盆地的流形称为分离矩阵。在这里,x^*=\left \{ \dots,-\pi ,\pi ,3\pi ,\dots \right \} 处的不稳定定点构成了稳定定点吸引力盆地之间的分离矩阵。一般来说,吸引区域总是开放、相连、不变的集合,其边界由轨迹形成。

正如这些图所示,一阶一维系统在直线上的行为相对受限。系统要么单调地接近一个定点,要么单调地向 \pm \infty 方向移动。例如,不可能出现振荡。对于许多一阶非线性系统(不仅仅是垂线)来说,图形分析是一种非常好的分析工具;下面的例子就说明了这一点:

2.2 非线性自塌
考虑以下系统 

$\dot{x}+x=\operatorname{tanh}(w x),$

下面是两个 w 值的曲线图。我们可以很方便地注意到,对于较小的 z,\tanh z\approx z. 时,w\leq 1系统只有一个固定点。对于 w> 1,系统有三个固定点:两个稳定,一个不稳定。

Underactuated Robotics - 欠驱动机器人学(二)- 简单摆杆_第3张图片

这些等式并非任意而为--它们实际上是最简单的神经网络模型之一,也是最简单的持久记忆模型之一[2]。x 是神经元的激活(正弦)函数,x 是突触反馈的权重。

像 Transformer 这样用于序列建模的架构也可以从动态系统理论的角度来理解(作为自回归模型),但我们将把这一讨论推迟到注释的后面部分。

 最后一个术语。在神经元的例子中,以及在许多动力学系统中,动力学都被参数化了;在本例中,动力学被一个参数 w 参数化了。事实上,如果我们将 w 增加到 w=1,戏剧性的事情就会发生--系统会从一个固定点变成三个固定点。这就是所谓的分叉。这种特殊的分叉称为叉形分叉。我们通常绘制分岔图,将系统的固定点绘制成参数的函数,如图所示,实线表示稳定的固定点,虚线表示不稳定的固定点:

Underactuated Robotics - 欠驱动机器人学(二)- 简单摆杆_第4张图片

 当我们改变恒定扭矩输入 u_0 时,摆式方程也会出现(鞍型节点)分岔。最后,让我们回到以 \theta 为单位的原始方程,而不是以 x 为单位。只需说明一点:由于环绕,这个系统看起来会有振荡。事实上,图形分析表明,只要有 \left | u_0 \right |>mgl,钟摆就会永远转动,但现在你明白了,这不是振荡,而是随 \theta \rightarrow \pm \infty 变化的不稳定性。

在下面关于 Hopfield 网络的练习中,你可以从递归神经网络中找到这些概念(定点、吸引盆地、分岔)的另一个漂亮例子。

2.2 零扭矩无阻尼摆

再次考虑系统

$m l^{2}{\ddot{\theta}}=u_{0}-m g l\sin\theta-b{\dot{\theta}},$

 这次是 b=0。这一次的系统动态是真正的二阶系统。我们总是可以把任何二阶系统看成是具有两倍变量的(耦合)一阶系 统。考虑一个一般的、自主的(不依赖于时间)二阶系统、

 $\ddot{q}=f(q,\dot{q},u).$

这个系统等同于二维一阶系统
$\begin{array}{l}{​{\dot{x}_{1}=x_{2}}}\\ {​{\dot{x}_{2}=f(x_{1},x_{2},u),}}\end{array}$

其中 x_1=qx_2=\dot{q}. 因此,该系统的图形描述不是一条直线,而是一个矢量场,在该矢量场中,矢量 [\dot{x_1},\dot{x_2}]^T 被绘制在 (x_1,x_2) 域上。

在本节中,我们只讨论 u_0=0 时的最简单情况。首先沿 \theta 轴绘制草图。这里矢量场的 x 分量为零,y 分量为 -\dfrac{g}{l}\sin \theta
 不出所料,我们在 \pm \pi ,\dots 处有固定点。你能告诉我哪些定点是稳定的吗?其中一些是稳定的 i.s.L.,没有一个是渐近稳定的。

Underactuated Robotics - 欠驱动机器人学(二)- 简单摆杆_第5张图片

轨道计算
你可能会问,上图中的黑色等高线是怎么画出来的?我们本可以通过对系统进行数值模拟来获得这些等高线,但这些等高线很容易以闭合形式获得。直接积分运动方程是很困难的,但至少在 u_0=0 的情况下,我们可以利用一些额外的物理知识来解决这个问题。摆的动能 T 和势能 U 由

 $T=\frac{1}{2}I{\dot{\theta}}^{2},\quad U=-m g l\cos(\theta),$

其中 I=ml^2 和总能量为 $E(\theta,\dot{\theta})=\,T(\dot{\theta})+U(\theta)$。无阻尼摆是一个保守系统:在系统轨迹上,总能量是一个常数。利用能量守恒,我们可以得出

$\begin{array}{l}{​{​{ E}(\theta(t),\dot{\theta}(t))={ E}(\theta(0),\dot{\theta}(0))={ E}_{0}}}\\ {​{\dfrac{1}{2}{ I}\dot{\theta}^{2}(t)-m g l\cos(\theta(t))={ E}_{0}}}\\ {​{\dot{\theta}(t)=\pm\sqrt{\dfrac{2}{ I}\left[{ E}_{0}+m g l\cos\left(\theta(t)\right)\right]}}}\end{array}$

利用这一点,如果你告诉我 \theta,我就能从 \dot{\theta } 的两个可能值中确定一个,而解法就像图中的黑色等高线一样丰富。当 $\cos(\theta)> \cos(\theta_{m a x})$,其中

$\theta_{m a x}=\left\{\begin{array}{l l}{​{\mathrm{cos}^{-1}\left(-\dfrac{E_{0}}{m g l}\right),}}&{​{E_{0}<m g l}}\\ {​{\pi,}}&{​{\mathrm{otherwise.}}}\end{array}\right.$

当然,这只是一个直观的概念,即摆不会摆动到总能量等于势能的高度以上。作为练习,你可以验证一下,将这个方程与时间微分,确实可以得到运动方程。

E=mgl 定义的特定轨道是特殊的--它是访问直立处(不稳定)平衡的轨道。它被称为同旋回轨道。

2.3 带有恒定扭矩的无阻尼摆

现在,如果我们增加一个恒定扭矩,会发生什么情况呢?如果将分岔图形象化,就会看到定点向 q=\dfrac{\pi}{2},\dfrac{5\pi}{2},\dots 靠拢,直至消失。一个定点不稳定,一个定点稳定。

在我们继续之前,现在让我给大家举一个已经承诺过的例子:一个系统在 i.s.L. 时并不稳定,但随着时间的推移会吸引所有的轨迹。我们可以通过一个非常类似钟摆的例子(这里用极坐标表示)来实现这一目的:

例 2.3 吸引所有轨迹的不稳定平衡点

考虑系统

$\begin{array}{l}{​{\dot{r}=r(1-r),}}\\ {​{\dot{\theta}=\sin^{2}\left({\dfrac{\theta}{2}}\right).}}\end{array}$

这个系统有两个平衡点,一个在 $r^{*}=0,\theta^{*}=0$ 处,另一个在 $r^{*}=1,\theta^{*}=0$ 处。r^{*}=1 处的定点会吸引所有其他轨迹,但根据我们的定义,它并不稳定。

虽然极坐标方程比较简单,但在直角坐标下绘制矢量场还是很有用的:

Underactuated Robotics - 欠驱动机器人学(二)- 简单摆杆_第6张图片

 请花一分钟检查一下其中的矢量场,以确保您能理解。这个例子可能看起来有些牵强,但当我们在下一章介绍摆的能量整形摆动控制器时,很快就会看到同样的现象在实践中发生。

2.4 阻尼摆

现在让我们重新添加阻尼。你仍然可以增加力矩来移动固定点(方法相同)。

Underactuated Robotics - 欠驱动机器人学(二)- 简单摆杆_第7张图片

有了阻尼后,摆的直接固定点现在变得渐近稳定(除了稳定的 i.s.L.)。它也是指数稳定的吗?如何判断?一种方法是在定点处对系统进行线性化。一个平稳、时变、非线性、局部指数稳定的系统一定有一个稳定的线性化;我们将在下一章详细讨论线性化。

下面是一个思考练习。如果 u 不再是常数,而是函数 \pi (\theta ,\dot{\theta }),那么如何选择 \pi 来稳定垂直位置。例如,取消反馈就是一个微不足道的解决方案:

$u=\pi(\theta,{\dot{\theta}})=2m g l\sin\theta.$

但是,我们所绘制的这些图却讲述了一个不同的故事。你将如何塑造自然动态--在每个点上从相位图中选取一个 u--以最小的扭力稳定垂直定点?这正是我希望你们思考控制系统设计的方式。在下一堂课中,我们将使用动态编程技术为您提供第一个解决方案。

三、扭矩受限的单摆

单摆是完全驱动的。如果给定足够的力矩,我们可以产生任意数量的控制方案来稳定顶部原本不稳定的固定点(例如设计一个反馈控制器来有效反转重力)。

如果我们施加一个扭矩限制约束 \left | u \right |\leq u_{max},问题就开始变得有趣起来(也就是变得控制不足)。通过反馈,你可以改变每个点的矢量场方向,但只能改变一个固定的量。很明显,如果最大扭矩很小(小于 mgl),那么有些状态就无法直接驱动矢量场到达目标,而必须增加能量才能达到目标。此外,如果扭矩限制过于严格,而系统又有阻尼,那么就可能无法摆动到顶端。解的存在与否,以及到达顶端所需的泵的数量,是初始条件和扭矩限制的一个非平凡函数。

虽然这个系统非常简单,但要通过通用算法获得解决方案,需要进行与控制更复杂的欠驱动系统相同的推理;在本书介绍新算法时,这个问题将成为我们的工作重点。

3.1 能量整形控制

在摆的特定情况下,我们可以根据向系统泵入能量的直觉,给出一个令人满意的手工设计的非线性控制器。我们已经观察到,摆的总能量为

$E={\frac{1}{2}}m l^{2}{\dot{\theta}}^{2}-m g l\cos{\theta}.$

为了了解如何控制能量,让我们来看看能量是如何随时间变化的:

$\begin{array}{l}{​{​{\dot{E}}=m l^{2}{\dot{\theta}}{\ddot{\theta}}+{\dot{\theta}}m g l\sin\theta}}\\ {​{={\dot{\theta}}\left[u-m g l\sin\theta\right]+{\dot{\theta}}m g l\sin\theta}}\\ {​{=u{\dot{\theta}}.}}\end{array}$

换句话说,给系统增加能量很简单--在与 \dot{\theta } 相同的方向上施加力矩;要消除能量,则在相反的方向上施加力矩(例如阻尼)。

要使摆向上摆动,即使有扭矩限制,我们也要利用这一观察结果,将系统推向其同轴轨道,然后让摆的动力将我们带到直立平衡点。回想一下,同轴轨道具有能量 mgl -- 我们称之为期望能量:
$E^{d}=m g l.$

此外,让我们将当前能量与期望能量之间的差值定义为 $\tilde{E}=E-E^{d}$,并注意到我们仍然有

\dot{\tilde{E}}=\dot{E}=u\dot{\theta }

现在考虑形式为

$u=-k\dot{\theta}\tilde{E},\quad k>0.$

想一想这个系统的图形分析,如果你画出任何固定 \dot{\theta }\dot{\tilde{E}}{\tilde{E}} 的关系--它是一条与横轴分离的直线,这意味着指数收敛:{\tilde{E}}\rightarrow 0 这对任何 \dot{\theta } 都是正确的,但 \dot{\theta }=0 除外(因此它实际上不会从完全固定的点向上摆动......但如果你稍微推动一下系统,它就会开始泵送能量并一路向上摆动)。其基本特性是,当 E>E_d 时,我们应从系统中移除能量(阻尼),当 E<E_d 时,我们应增加能量(负阻尼)。即使控制动作是有边界的,收敛性也很容易保持。

这是一个非线性控制器,会将所有系统轨迹推向不稳定平衡。但它能使不稳定平衡局部稳定吗?仅靠这种控制器,定点是有吸引力的,但并不稳定--就像我们上面的例子一样。微小的扰动可能会导致系统绕着圆周运行一圈,从而再次回到不稳定平衡状态。因此,为了使系统达到真正的平衡,我们必须在接近固定点时切换到不同的控制器(我们将在下一章详细讨论这一观点)。

例 2.4 摆锤的能量塑造
用一分钟时间玩一玩用于摆动摆锤的能量整形控制器

请务必花一分钟时间查看这些示例中运行的代码。注意切换到平衡控制器的阈值有些武断。我们将在有关李亚普诺夫方法的章节中给出更令人满意的答案。

这个控制器有几大优点。它不仅简单,而且对我们在估计模型参数 m、l 和 g 时可能出现的误差具有惊人的鲁棒性。事实上,模型进入我们控制方程的唯一地方就是 $\tilde{E}={\textstyle{\dfrac{1}{2}}}m l^{2}\dot{\theta}^{2}-m g l(1+\cos\theta)$ 的计算,而这一估计值影响稳定性的唯一属性就是 ${\tilde{E}}=0$ 时轨道的位置,即 $\textstyle{\dfrac{1}{2}}l{\dot{\theta}}^{2}=g(\cos\theta+1)$。因此,我们可以在控制器中使用 ${\frac{E-E_{d}}{m}}\,=\,{\textstyle{\dfrac{1}{2}}}\,l^{2}{\dot{\theta}}^{2}-g l(1+{\stackrel{}{\mathrm{cos}}}\,\theta)$,并得到相同的结果。这完全不取决于我们对质量的估计,而只与我们对长度和重力的估计成线性关系(如果无法精确测量摆的长度,那么一个合适的测量设备将是一项极好的投资)。这有点令人惊讶;我们将开发出许多基于优化的算法,能够使摆向上摆动,但要找到一种对模型参数同样不敏感的算法,还需要大量的工作。

如果原始系统中存在阻尼,我们当然也可以利用 $u=-k{\dot{\theta}}{\tilde{E}}+b{\dot{\theta}}.$ 将其抵消。同样,如果我们在估计阻尼比时出现误差,控制器也是相当稳健的。

四、练习

4.1 (图表分析)

具有多重平衡的一阶系统。

考虑一阶系统 

$\dot{x}=\left\{​{\begin{matrix}{}{​{-x^{5}+2x^{3}-x}}&{​{\mathrm{if}}}&{​{x\leq1,}}\\ {​{0}}&{​{\mathrm{if}}}&{​{1< x\leq x\leq 2,}}\\ {​{-x+2}}&{​{\mathrm{if}}}&{​{x> 2,}}\end{matrix}}\right.$

其动态如上图所示。请注意,连同 x^*=-1x^*=0,封闭区间 [1,2] 中的所有点都是该系统的平衡点。对于每个平衡点,请判断它是不稳定的、稳定的 i.s.L.、渐近稳定的还是指数稳定的。 

4.2 (吸引盆地和分岔图)
考虑具有多项式动力学的一阶系统
 $\dot{x}=f(x)=-x^{3}+4x^{2}+11x-30.$

 绘制函数 f(x) 的曲线图,并确定所有平衡点。(请随意使用自己选择的工具绘制该图,以检查您的作业)。
对于每个平衡点,确定它是稳定的(i.s.L. )还是不稳定的。对于每个稳定的平衡点,请确定吸引盆地。
w 在 0 到 \infty 之间时,请确定系统有多少个稳定和不稳定平衡点。请绘制 \infty 为非负值时的分岔图,以支持您的答案。

(带振动底座的摆)
考虑一个驱动摆,其底座(杆的枢轴)被迫根据谐波规律 h\sin (wt) 水平摆动,其中 h 表示振幅,w 表示频率。该系统的运动方程为

$m l^{2}{\ddot{\theta}}+m g l\sin\theta=m l\omega^{2}h\sin(\omega t)\cos\theta+u$
 (如果你觉得这个方程晦涩难懂,可以尝试用拉格朗日方法来推导;但要注意,这个系统的动能 T(\theta ,\dot{\theta },t) 是明确取决于时间的)。我们的目标是设计一个随时间变化的控制法则 u=\pi (\theta ,\dot{\theta },t),使摆以恒定的速度 \dot{\theta }=1 旋转。
确定所需的闭环动力学 \ddot{\theta }=f(\dot{\theta }),其唯一的平衡点是稳定的,且位于 \dot{\theta }=1 内。
利用反馈抵消设计一个控制法则 u=\pi (\theta ,\dot{\theta },t),使闭环动力学与上一点所选的动力学相吻合。
在本 python 笔记本中,我们建立了一个模拟环境来测试你的控制法则。请试着理解代码的结构:这个工作流程非常通用,可以作为您未来 Drake 项目的良好起点。在专用单元格中执行您的控制法则,并使用本笔记本末尾的动画和图表检查您的工作。

你可能感兴趣的:(机器人,机器人控制,欠驱动机器人,最优控制,自动驾驶,机器人动力学,人工智能)