反步法设计步骤及仿真验证(非线性系统)

考虑以下单输入,单输出非线性系统:

\begin{cases} \dot{x}_{1}=x_{2}+\sin{x_{1}}\\ \dot{x}_{2}=u+x^{2}_{1}+x_{2}\\ \end{cases}

反步法的设计思想是每一个子系统  \dot{x}_{1}=x_{2}+\sin{x_{1}} 中 x_{2} 为虚拟控制,通过适当的虚拟反馈x_{2} = \alpha_{1},使得系统的前面状态达到渐进稳定。但是系统的解一般不满足x_{2} = \alpha_{1},因此我们引入误差变量,期望通过控制作用,使得 x_{2} 与虚拟反馈 \alpha_{1} 间具有某种渐进特性,从而实现整个系统的渐进稳定。

定义以下误差坐标变换(反步法的坐标变换)

\begin{cases} e_{1}=x_{1}\\ e_{2}=x_{2}-\alpha_{1} \end{cases}

\alpha_{1} 代表虚拟控制器

反步法设计步骤如下(不断构造李雅普诺夫函数使系统稳定):

Step1:

定义李雅普诺夫函数为:

V_{1} = \frac{1}{2}e^{2}_{1}

显而易见   V_{1} >0,  对 V_{1} 求导得:

\dot{V}_{1}=x_{1}\dot{x}_{1}

将  \dot{x}_{1} = x_{2} + \sin{x}_{1}  带入 \dot{V}_{1}得:

\dot{V}_{1} = e_{1}(- e_{1}+x_{1}+x_{2} + \sin{x}_{1} )

根据  坐标变换  e_{2}=x_{2}-\alpha_{1}  可知,x_{2}=e_{2}+\alpha_{1}

\dot{V}_{1} = e_{1}( -e_{1}+x_{1}+e_{2}+\alpha_{1} + \sin{x}_{1} )

为了使系统稳定,让  \alpha_{1} = -\sin{x}_{1}

即:\dot{V}_{1} = -e^{2}_{1} + e_{1}e_{2}

显然,如果 z_{2} = 0,(即:\alpha_{1} = -\sin{x}_{1}),由\dot{V}_{1} = -e^{2}_{1} + e_{1}e_{2}可知,e_{1}渐进稳定。但是一般情况e_{2}\neq 0,此时我们再引入虚拟控制 \alpha_{2} 使得误差 e_{2}=x_{2}-\alpha_{1}具有期望的渐进性态。为此,我们进行下一步设计

Step2:

定义李雅普诺夫函数为:

V_{2} = \frac{1}{2}e^{2}_{2}+V_{1}

显而易见   V_{2} >0,  对 V_{2}求导得:

\dot{V}_{2} = \dot{e}_{2}e_{2}-e^{2}_{1} + e_{1}e_{2}

将 \dot{e}_{2}=\dot{x}_{2}-\dot{\alpha}_{1}  带入上式可得:

\dot{V}_{2} =e_{2}(\dot{x}_{2}-\dot{\alpha}_{1})-e^{2}_{1} + e_{1}e_{2}

\dot{x}_{2}=u+x^{2}_{1}+x_{2}带入上式可得:

\dot{V}_{2} =e_{2}(u+x^{2}_{1}+x_{2}-\dot{\alpha}_{1})-e^{2}_{1} + e_{1}e_{2}

为了使得\dot{V}_{2}<0,设计控制器如下:

u=-e_{1} -m*e_{2}-x^{2}_{1}-x_{2}+\dot{\alpha}_{1}

其中m为正参数 将 u 带入 \dot{V}_{2}得:

\dot{V}_{2}=-m*e^{2}_{2}\leqslant 0

仿真验证:

设置初始值为:x_{1} = 0.1; x_{2} = 0.1;参数设置为:m = 25;

x_{1} 和 x_{2}趋于稳定如图所示:

控制器如图所示:

  • 22
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
反步法是一种非线性控制方法,可以用于设计双足机器人的控制器。下面是一个基于MATLAB反步法控制器设计示例: 首先,定义系统动态方程和状态变量,假设我们的双足机器人有4个自由度(两个腿,每个腿有两个关节),则可以定义如下的状态变量: ``` x1 = 腿1第一关节角度 x2 = 腿1第二关节角度 x3 = 腿2第一关节角度 x4 = 腿2第二关节角度 ``` 然后,可以根据双足机器人的运动学和动力学模型,得到系统动态方程。这里假设系统满足以下非线性动态方程: ``` M(q) * q'' + C(q, q') + G(q) = B(u) ``` 其中,`q` 是系统状态向量,包含上述的四个状态变量,`u` 是系统控制输入向量,`M` 是惯性矩阵,`C` 是科里奥利和离心力矩矩阵,`G` 是重力矩矩阵,`B` 是控制输入矩阵。 接下来,可以定义反步法控制器的设计过程。首先,需要选择一个适当的反步法函数 `V(x)`,该函数应满足以下条件: 1. 对于所有 `x`,有 `V(x) >= 0`; 2. 当且仅当 `x = 0` 时,有 `V(x) = 0`; 3. 对于所有 `x`,有 `dV(x)/dt <= -alpha*V(x) + beta*u^T*r`,其中 `alpha` 和 `beta` 是正常数,`r` 是一个可调参数,`u` 是控制输入向量。 一种常见的反步法函数是二次型函数: ``` V(x) = x'Px ``` 其中,`P` 是一个正定矩阵。 接下来,根据反步法设计原理,可以得到控制输入的设计公式: ``` u = B^T * (M(q) * r'' + (alpha + beta) * r' - Kp * e - Kd * e') ``` 其中,`e = q' - r'` 是系统状态误差向量,`Kp` 和 `Kd` 分别是位置和速度误差的增益矩阵。 最后,可以通过MATLAB编程实现反步法控制器的设计仿真。具体步骤如下: 1. 定义系统动态方程和状态变量; 2. 选择适当的反步法函数,并计算其一阶和二阶偏导数; 3. 根据反步法设计原理,计算控制输入; 4. 编写控制器仿真程序,包括系统动态方程求解和控制输入计算; 5. 运行仿真程序,观察双足机器人的运动和控制效果。 需要注意的是,反步法控制器的设计涉及到多个参数和矩阵的选择和调节,需要根据具体应用场景进行优化和调试。此外,反步法控制器也适用于其他类型的非线性系统控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无限嚣张(菜菜)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值