【倒立摆】基于PID实现双回路倒立摆控制附Matlab代码

简介: 【倒立摆】基于PID实现双回路倒立摆控制附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

如果只引用一路PID对角度进行控制的时候,我们会发现,参数调节,角度是可以控制好的,但是位置项却控制不好的。这是为什么呢,因为输出里之和角度有关,没有位置的信息。就好像一个演员,在顶杆的时候,如果只盯着杆看,不注意脚下,是很容易走出舞台的,那时就没工资了。这里角度信息不包含位置信息的意思,假设解读为θ,角速度为Ω,此时坐标可以为任何值,而不是一个确定的值。这个角度来说倒立摆是欠驱动系统。

后来查文献,就看到双路PD控制了。对于这个为什么可以,在实验后再看看原因。

当使用PID控制的时候,我们需要建立一个测量系统。这也是为什么强调上面的正方向是模型本身的。于是,假设力向右为正的话:假设角度为5°的话,此时,从物理角度来说,我们需要施加一个向右的力,才能使倒立摆的角度变成参考值0°,而根据负反馈来看,误差=参考值-观测值。那么这个观测值就需要是负值,才能使得误差为正值,乘以相应的系数得到的力才能为正。因此,对于测量角度的正方向为逆时针。同理,可以得到对位置想的观测正方向为向右为正。但是,经过试验发现,对于位置的观测得向左为正。

对于双路PD控制控制周期为0.025s结构为

对于参数的选择,自己设置不好,于是采用遗传算法的方式进行参数优化。适应度函数使用的是ISTE准则,也就是误差的绝对值和时间的乘积之和。如果这个值越小,说明该去曲线和目标值越近,说明控制曲线越好。对于一组参数的好坏,首先使用该参数进行一次控制模拟,控制周期为0.01s,控制时长20s,控制初始位置1m处和倒立摆角度为30度开始。

优化结果最开始优化时使用的控制的初始位置为1m,倒立摆角度30度。初始种群为46个,迭代参数设置下限为0,上限位250,迭代365次,最后得到最优的适应度函数值为3890.12,最后得到的最优个体参数为,角度通道参数Kp=45.12Kd=215.2,位置通道参数:Kp=1.134,Kd=58.45

⛄ 部分代码

%% 双回路PID控制倒立摆%   %   最大外力10N%   模型里角度顺时针为正,但是控制里,需要逆时针为正,故需要取反。clc;clear;close all%% PID控制,双回路,位置角度PD求和tStep = 0.025;                                          %采样时间0.025stFinal = 30;                                            %控制时长Kpa = 45;Kda = 0.2;Kpx = 1.8;Kdx = 1.2;temp=[0,0,15*pi/180,0,0];Ea=temp(3);Ea1=0;Ex=temp(1);Ex1=0;tt = (0:tStep:tFinal);wx = (0:tStep:tFinal);wc = (0:tStep:tFinal);out= (0:tStep:tFinal);wc(1)=temp(3)*180/pi;wx(1)=temp(1);am = 0;an = 0;xm = 0;x  = 0;fitness = 0;for tp = tStep:tStep:tFinal    [t,y]=ode45(@DaoliBai,[tp-tStep,tp],temp);       xm = y(end,1);    if(y(end,3)>pi)                                     %角度转化到[-pi,pi],wm为模型角度        am = y(end,3) - 2*pi;    elseif(y(end,3) < -pi)        am = y(end,3) + 2*pi;    else        am = y(end,3);    end           an = -am;                                            %控制的角度    x  = -xm;       Ea = 0 - an;                                         %计算当前误差    Ex = 0 - x;        outw = Kpa*(Ea+Kda*(Ea-Ea1)/tStep) ;    outx = Kpx*(Ex+Kdx*(Ex-Ex1)/tStep) ;        temp(5)=outw + outx;                                %PID计算输出         if(temp(5)>20)                                      %最大外力10N        temp(5) = 20;    elseif(temp(5)<-20)        temp(5) = -20;    end        temp(1) = y(end,1);    temp(2) = y(end,2);    temp(3) = am;    temp(4) = y(end,4);        Ea1=Ea;                                             %更新误差    Ex1=Ex;      wc(int32(tp/tStep)+1)  = am*180/pi;              %画图数据    wx(int32(tp/tStep)+1)  = xm;    out(int32(tp/tStep)+1) = temp(5);        fitness = fitness + 0.5*abs(Ea) + 0.5*abs(Ex);endfitnessfigure(1)plot(tt,wc,'r-');title('角度');figure(2)plot(tt,wx,'b-');title('位置');figure(3)plot(tt,out,'r');title('输出')

⛄ 运行结果

⛄ 参考文献

[1] 李明,郭焕银.基于MATLAB的倒立摆系统PID控制[J].宿州学院学报, 2010, 25(2):3.DOI:10.3969/j.issn.1673-2006.2010.02.019.

[2] 刘珺蕙,张杰.基于Matlab的倒立摆PID控制系统的设计[J].西安交通工程学院学术研究, 2021, 6(1):4.

[3] 王美刚白建云.基于遗传算法优化的双回路模糊控制倒立摆系统[J].科学技术与工程, 2018, 018(013):92-97.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料

🍅 仿真咨询

1.卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3.旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划
4.无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
5.传感器部署优化、通信协议优化、路由优化、目标定位
6.信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号
7.生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化
8.微电网优化、无功优化、配电网重构、储能配置
9.元胞自动机交通流 人群疏散 病毒扩散 晶体生长



相关文章
|
1月前
|
算法
基于模糊控制算法的倒立摆控制系统matlab仿真
本项目构建了一个基于模糊控制算法的倒立摆控制系统,利用MATLAB 2022a实现了从不稳定到稳定状态的转变,并输出了相应的动画和收敛过程。模糊控制器通过对小车位置与摆的角度误差及其变化量进行模糊化处理,依据预设的模糊规则库进行模糊推理并最终去模糊化为精确的控制量,成功地使倒立摆维持在直立位置。该方法无需精确数学模型,适用于处理系统的非线性和不确定性。
基于模糊控制算法的倒立摆控制系统matlab仿真
|
24天前
|
资源调度 算法
基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真
本课题研究基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF、迭代UKF和迭代EKF的控制效果。倒立摆作为典型的非线性系统,适用于评估不同滤波方法的性能。UKF采用无迹变换逼近非线性函数,避免了EKF中的截断误差;EKF则通过泰勒级数展开近似非线性函数;迭代EKF和迭代UKF通过多次迭代提高状态估计精度。系统使用MATLAB 2022a进行仿真和分析,结果显示UKF和迭代UKF在非线性强的系统中表现更佳,但计算复杂度较高;EKF和迭代EKF则更适合维数较高或计算受限的场景。
|
1月前
一级倒立摆控制 —— PID 控制器设计及 MATLAB 实现
一级倒立摆控制 —— PID 控制器设计及 MATLAB 实现
64 1
一级倒立摆控制 —— PID 控制器设计及 MATLAB 实现
|
1月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
116 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
1月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
91 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
1月前
|
传感器
一级倒立摆控制 —— LQR 控制器设计及 MATLAB 实现
一级倒立摆控制 —— LQR 控制器设计及 MATLAB 实现
42 1
|
1月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
66 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
1月前
|
算法
基于GA遗传优化的PID控制器最优控制参数整定matlab仿真
通过遗传算法优化PID控制器的Kp、Ki、Kd参数,以输出误差为目标值,迭代求得最优参数。采用MATLAB 2022a验证,利用遗传算法全局寻优特性,自动完成参数整定,适合复杂及非线性系统,有效提升控制性能。
|
1月前
MATLAB - 控制小车上的倒立摆
MATLAB - 控制小车上的倒立摆
30 0
|
1月前
|
自然语言处理
一级倒立摆控制 - 非线性 MPC 控制及 MATLAB 实现
一级倒立摆控制 - 非线性 MPC 控制及 MATLAB 实现
38 0

热门文章

最新文章