一级倒立摆平衡控制系统MATLAB仿真:五种控制算法对比分析
创作时间:
作者:
@小白创作中心
一级倒立摆平衡控制系统MATLAB仿真:五种控制算法对比分析
引用
1
来源
1.
https://developer.aliyun.com/article/1652331
倒立摆控制系统是控制理论中的经典问题,广泛应用于机器人、航天器等领域的姿态控制。本文通过MATLAB仿真,对比了极点配置、线性二次型、PID、PI和PD五种控制算法在一级倒立摆系统中的性能。通过详细的理论分析和仿真结果,为读者提供了深入理解倒立摆控制系统的途径。
算法仿真效果
本课题是对博主原来写的文章《基于MATLAB的一级倒立摆控制仿真,带GUI界面操作显示倒立摆动画,控制器控制输出》的升级。升级内容包括如下几个方面:增加了PI控制器,PD控制器,同时对极点配置,线性二次型,PID,PI及PD五种算法的控制输出曲线进行对比。
MATLAB 2022a仿真结果如下(完整代码运行后无水印):
仿真操作步骤可参考程序配套的操作视频。
算法涉及理论知识概要
一个可以活动的小车上立着一根不稳定随时会倒下的杆。小车的轮子由电机控制,可以控制小车电机的转动力矩M。同时,也可以获取小车轮子转动的圈数N(可以精确到小数)和杆相对于垂直位置的倾角α。
不考虑车轮打滑, 小车所受力大小等于电机力矩乘车轮半径, 小车位置可以从转动圈数计算出, 小车可简化为最经典的一阶倒立摆:
对小车水平方向:
$$
Mx¨+bx˙+N=F
$$
对摆水平方向:
$$
N=md2dt(x+lsinθ)
$$
即:
$$
N=mx¨+mlθ¨cosθ¨−mlθ˙2sinθ
$$
对摆垂直方向:
$$
P=mg+md2dt(lcosθ)
$$
即:
$$
P=mg−mlθ¨sinθ¨−mlθ˙2cosθ
$$
关节力矩:
$$
−Plsinθ−Nlcosθ=Iθ¨
$$
令 $ϕ=π+θ$
在工作点 $θ≈0$ 进行线性化: $sinθ=0,cosθ=1,θ˙2=0$
经过一顿操作化简之后能得到:
$$
(I+ml2)ϕ¨−mglϕ=mlx¨
$$
$$(M+m)x¨+bx˙−mlϕ¨=F=u
$$
MATLAB核心程序
%%%%%%%%%%%%%%%%%%%%%%选择倒立摆的控制方式%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
pause;
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close(gcbf);
clc,clear,close all
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
load mat\R1.mat
y1=y;
t1=t;
load mat\R2.mat
y2=y;
t2=t;
load mat\R3.mat
y3=y;
t3=t;
load mat\R4.mat
y4=y;
t4=t;
load mat\R5.mat
y5=y;
t5=t;
figure;
subplot(211);
plot(t1,y1(:,1),'r','linewidth',2);
hold on
plot(t2,y2(:,1),'b','linewidth',2);
hold on
plot(t3,y3(:,1),'m','linewidth',2);
hold on
plot(t4,y4(:,1),'k','linewidth',2);
hold on
plot(t5,y5(:,1),'g','linewidth',2);
hold on
legend('极点配置法','线性二次型','PID','PI','PD');
title('偏转角变化对比');
xlim([0,10]);
subplot(212);
plot(t1,y1(:,3),'r','linewidth',2);
hold on
plot(t2,y2(:,3),'b','linewidth',2);
hold on
plot(t3,y3(:,3),'m','linewidth',2);
hold on
plot(t4,y4(:,3),'k','linewidth',2);
hold on
plot(t5,y5(:,3),'g','linewidth',2);
hold on
legend('极点配置法','线性二次型','PID','PI','PD');
title('小车位移变化对比');
xlim([0,10]);
热门推荐
Win11关闭虚拟内存有什么后果?如何避免潜在风险?
轮胎磨损到什么程度需要更换?花纹深度是关键!一文读懂!
因欠费断电后如何恢复通电
中美汇率的影响因素——剖析国际汇率波动背后的复杂博弈
脚气的消毒与预防:彻底告别真菌感染
如何顺利办理失业证?办理失业证需要注意哪些问题?
一路旅行一路“抢”,门票预约咋这么难
1岁内宝宝体检全攻略
苏州园林“理水”的艺术美
驱动程序是什么? 应用程序,操作系统,驱动程序的关系详解
急救科普|如何正确止血?
开曼群岛:加勒比海上的金融与旅游胜地
体重超过150斤,该怎么减肥?几个方法帮你科学减重!
现代作战加速向无人化转变
郑州自由行攻略:历史与美食交融的中原之旅
郑州最值得打卡的旅游胜地,你去过几个?
掌握网页设计核心要素提升用户体验与视觉吸引力的全面指南
JSON格式说明:概念、语法与多语言支持
转股价如何进行合理确定与分析?这种确定和分析的影响因素有哪些?
年末华尔街大幅下调美股盈利预期,释放什么信号
装修隔音全攻略:打造宁静家居环境
段元诚的甘草研究:传统中草药的现代应用与新发现
Win11电源键息屏设置方法是什么?如何实现自动息屏?
打造专业PPT:如何确保每一页风格都一致
“师傅”和“师父”有什么区别?别再傻傻混淆了
电源设计 - 方案确定
半夏泻心汤:调和脾胃、消除中焦痞塞的中医方剂
布匿战争:罗马与迦太基的兵力对决
胸肋骨疼是什么病的征兆
马刺对快船预测:快船主场优势明显,马刺多名主力缺阵