反步法¶
反步法(backstepping)是一种分层控制器设计方法,能保证控制器的稳定性。
实例¶
实例 1¶
考虑系统
我们先不考虑和输入相关的标量状态,先考虑 \(\dot{x}_1 = x_2\) 这一层,将 \(x_2\) 视为这一层的控制输入,设计 \(x_2 = f(x_1),\ f(0) = 0\) 镇定 \(x_1\) 在原点。
选取 Lyapunov 函数 \(V_1(x_1) = \frac{1}{2}x_1^2\) ,则有 \(\dot{V}_1(x_1) = x_1\dot{x}_1 = x_1x_2\) 。
要镇定 \(x_1\) ,必须保证 \(\dot{V}_1(x_1)\) 负定。我们不妨选择 \(x_2 = -k_1x_1\) ,其中 \(k_1 > 0\) 是增益系数,此时 \(\dot{V}_1(x_1) = -k_1x_1^2\) 负定。
接下来设计整体的控制输入 \(u = g(x_1,x_2)\) ,目的是为了让 \(x_2 = -k_1x_1\) 。为了便于讨论,定义误差 \(z_2 = x_2 - (-k_1x_1) = x_2 + k_1x_1\) ,控制输入的目的就是让 \(z_2\) 收敛至 0 。
用 \(z_2\) 表示 \(x_2\) ,我们可以得到
注意到 \(x_1\) 镇定在 \(x_1 = 0\) 平衡点,为了将 \(z_2\) 镇定在 \(z_2 = 0\) 平衡点,我们需要恰当地选取 \(u = g(x_1,z_2)\) ,同时保证 \(g(0) = 0\) 。
选取 Lyapunov 函数 \(V_2(x_1,z_2) = \frac{1}{2}x_1^2 + \frac{1}{2}z_2^2\) ,则有
为了使 \(\dot{V}_2\) 负定,我们选择 \(u = (1-k_1)z_2+k_1(k_1-1)x_1-x_1^3-k_2z_2\) ,此时 \(\dot{V}_2 = -k_1x_1^2-k_2z_2^2\) 负定。
实例2¶
考虑系统
同样地,先考虑设计 \(x_2 = f(x_1), \ f(0) = 0\) 镇定 \(x_1\) 在原点。选取 Lyapunov 函数为 \(V_1(x_1) = \frac{1}{2}x_1^2\) ,则 \(\dot{V}_1(x_1) = x_1\dot{x}_1 = x_1^3-x_1^4+x_1x_2 = x_1(x_1^2-x_1^3+x_2)\) 。
我们期望 \(x_2 = -x_1^2-x_1\) ,此时 \(\dot{V}_1(x_1) = -x_1^2-x_1^4\) 负定。
接下来,定义误差变量 \(z_2 = x_2 - (-x_1^2-x_1) = x_2+x_1^2+x_1\) ,我们设计 \(x_3 = g(x_1,z_2),\ g(0) = 0\) 镇定 \(z_2\) 在原点。用 \(z_2\) 表示 \(x_2\) 得到:
选取 Lyapunov 函数 \(V_2(x_1,z_2) = \frac{1}{2}x_1^2 + \frac{1}{2}z_2^2\) ,则
为了使 \(\dot{V}_2\) 负定,我们期望
此时 \(\dot{V}_2 = -x_1^2-x_1^4-z_2^2\) 【注:这里需要包含 \(z_2\) ?】。
最后,定义误差变量
我们设计控制输入 \(u = h(x_1, x_2,z_3), h(0) = 0\) 镇定 \(z_3\) 在原点。
【我发现详细写下去的话,式子太复杂了,我没有耐心了。】