前言
这是前几周现代鲁棒控制课程一位同学的大作业,ppt做的很详细,但是并没有分享代码,我就根据ppt里的单摆模型以及所涉及到的鲁棒滑模控制方法和思路,自己搭了一套仿真程序,非常便捷,需要切换控制方法时只需要把目标代码取消注释,便可以跑出相应结果,便于新手对鲁棒滑膜控制进行学习。
鲁棒滑模控制
知识点部分引用截图:
定义部分
基本设计过程
仿真
基本模型
%% 单摆相关参数
theta = -1.00; % 攻角deg x1
omegaz = 2.00; % 俯仰角速度,deg/s x2
del_theta = 0.00; % 攻角微分deg
del_omegaz = 0.00; % 俯仰角速度微分,deg/s
g = 9.78; %重力加速度
J = 1.2; % 转动惯量kg/m^2
L = 1.74; % 摆长m
V_s = 0.18; % 摩擦系数m/s^2
%二阶系统非线性微分方程
del_theta = omegaz;
del_omegaz = - 0.5 *g * sin(theta) / L - V_s * omegaz / J + u / J;
f = - 0.5 *g * sin(theta) / L - V_s * omegaz / J;
滑模控制
method = '滑模控制';
s = del_theta + c * theta; % 滑模面
u = - ep * sign(s) - f - c * omegaz; %滑模控制基于趋近律
u = - f - c * omegaz; %滑模控制基于等效控制原理
终端滑模控制
method = '终端滑模控制';
s = omegaz + alpha * theta^(q/p); % 终端滑模面
u = - ep * sign(s)- f - alpha * beta * abs(theta)^(beta - 1) * omegaz; %终端滑模控制基于趋近律
u = - f - alpha * beta * abs(theta)^(beta - 1) * omegaz; %终端滑模控制基于等效控制原理
快速终端滑模控制
method = '快速终端滑模控制';
s = omegaz + k1 * theta