现代控制理论课程实验三:一阶倒立摆的LQR控制器设计

简介: 现代控制理论课程实验三:一阶倒立摆的LQR控制器设计

4022df35d1a749c8ad2960223effadab.jpg

一、实验目的



f91f12a7c4fc4b77b05d3b885ece6f48.jpg


1、理解并掌握线性状态反馈控制的原理和方法;

2、理解并掌握LQR控制器设计方法;

3、练习控制性能比较与评估的方法。


二、实验设备与软件


实验设备


  • 倒立摆实验台

实验软件

  • MATLAB软件


三、实验原理


3.1、被控对象模型及其线性化


倒立摆系统的各量含义与关系如下表和下图。

根据牛顿定律建立系统垂直和水平方向的动力学方程,计及 u = F ,可得到

如下所示




b676854ef31246d3aa2218edd6adf7a1.jpg

027f7b797b8042df9a65eb3d40849576.jpg



c21501c054844941a7bcfd776aa11fdd.jpg



该状态方程输入是加速度,输出是小车位置和摆杆角度。而小车的位置和摆杆角度以及它们的导数均可以通过传感器测量,所以在系统可控制的情况下,可以利用状态反馈综合控制器改善性能。


3.2、时不变线性连续系统的状态反馈控制与线性二次型最优控制LQR


  • 对时不变线性连续系统



b75edfc4f9294b2a8c96f5c6855f4ba9.jpg


3.3、实验平台的基本原理与使用指南


倒立摆系统的控制结构框图如下


8552d8b19bb24e4a90d780efe72b1e98.jpg


“Pendulum”模块内部包含三种模块,每种模块的具体功能是通过S-Function实现的,这里不做介绍。其中“Set Car’s Vcc and Vel”模块的作用是设置小车运动的速度和加速度,“Get Car’s Position”模块的作用是读取小车当前的实际位置,“Get Pend’s Angle”的作用是角度编码器读取摆杆当前摆起的实际角度,该角度顺时针为“+”,逆时针为“-” (以竖直向下的状态为起始状态,见图1)。这里需要注意的是,由于编码器所读脉冲的正负号与实际需要的数符号相瓣,所以编码器输出经过一个负的比例增益后转化为输出角度


c66ff7bbec7149dd8edab81222d05c95.jpg




另外,在Simulink中搭建系统模型时,需要将Inverted_Pendulum_RealTime_lib中的GT400-SV Initialization模块放到编辑的模型中。


四、实验内容


动手实验与分析:


基于式(6)所示的倒立摆模型(控制摆角和位置),根据原系统的特点设计LQR最优控制器,并分析参数 和 阵的选取对系统的影响。实物实验前先进行理论分析计算(包括能控性分析和稳定性分析,指标转化计算,可以编制相应的程序计算,也可以手算),并在MATLAB/Simulink中进行离线数值计算分析,调整相关参数,合适后在倒立摆平台上做在线实验,比较仿真结果与实验结果。


4.1、MATLAB仿真结果


系统的MATLAB/Simulink仿真图如下



0b2e752c25744cac87d4ff44dd1a2761.png


4.2、MATLAB程序如下

clear;
A = [ 0 1 0 0; 0 0 0 0; 0 0 0 1; 0 0 29.4 0 ];
B = [ 0 1 0 3 ]';
C = [ 1 0 0 0; 0 0 1 0 ];
D = [ 0 0 ]';
Gs = ss(A, B, C, D);
Qc = ctrb(A, B);        % 可控矩阵
Qo = obsv(A, C);        % 可观测矩阵
rankQc = rank(Qc);      % 求可控矩阵的秩
rankQo = rank(Qo);      % 求可控矩阵的秩
if rankQc == 4
    disp('系统可控');
else
    disp('系统不可控');
end
if rankQo == 4
    disp('系统可观');
else
    disp('系统不可观');
end


4.2.1、判断系统的能控与能观性

判断系统的能控与能观性运行如下

>> shiYan3
系统可控
系统可观


  • 由运行结果可知,系统可控、客观。

4.2.2、求系统的极点

求系统的极点的代码如下

P = poly(A); % 特征多项式
rootP = roots(P); % 极点
disp(rootP);


求系统的极点运行结果如下

>> shiYan3
系统可控
系统可观
         0
         0
    5.4222
   -5.4222


  • 可以知道系统有一个极点在右边,系统不稳定。

4.2.3、进行极点配置

ζ=0.8、ζ=0.707、ζ=0.316


设计状态反馈阵时,要使系统的极点设计成具有两个主导极点,两个非主导极点,这样就可以用二阶系统的分析方法进行参数的确定。我们设置系统的最大超调量小于等于8%,调节时间为小于等于5 S。运用超调量的计算公式可以计算出ε= 0.63;ts=5s,可以求得Wn≥0.95。用极点公式为P1,2=-εw + iw√1-εz,得到两个配置的共轭极点为: -0.6士0.74i。选取非主导极点距虚轴的距离为主导极点距虚轴的距离的5倍以上:所以可以两个非主导极点为:-10。


进行极点配置MATLAB程序代码如下:

p = [-0.6 + 0.74j -0.6 - 0.74j -10 -10];  % 极点配置
K = acker(A, B, p);
disp(K);


进行极点配置运行如下

-3.0871   -4.6990   52.4649    8.6330

MATLAB仿真如下

71a23d05a9494755a79ef9572dc18d98.png


  • 由仿真结果可知,系统的调节时间5s左右,系统的摆杆最终稳定在0的位置。

4.3、线性二次型最优控制LQR求出配置极点

线性二次型最优控制LQR求出配置极点代码如下所示


% 线性二次型最优控制LQR求出配置极点
Q = [1000 0 0 0; 0 0 0 0; 0 0 1000 0; 0 0 0 0];
R = 1;
LQR_K = lqr(A, B, Q, R);
disp(LQR_K);

线性二次型最优控制LQR求出配置极点运行如下


-31.6228  -21.7963   83.4140   14.2355

线性二次型最优控制LQR求出配置极点MATLAB仿真如下


bbb46246e1524ce082bd403515248ee8.png


  • 由仿真结果可知,线性二次型最优控制LQR求出配置极点,使系统的调节时间降低到了2s,摆杆的摆动幅度更小。


五、实验室运行结果


在实验室进行实物倒立摆的控制,设计的控制模型与系统的运行结果如下

控制系统模型



93316ae104504ba0a0ce5fdba2518b03.png


系统正常运行的效果图

82cf0e78a161457189e65829f79af356.png


六、实验总结


0067624930e345b6a2c244db24529017.jpg


一阶倒立摆的LQR控制器设计的实验总结如下几点所示


1、通过实验,理解并掌握了线性状态反馈控制的原理和方法。运用状态反馈可以配置系统的极点到任意的位置。

2、理解并掌握LQR控制器设计方法。

3、通过实验掌握了利用状态反馈配置极点的前提:对系统进行能控与能观性的判断。

4、通过实验,加强了动手实践与理论相结合的能力。


ee691b3b2318446589255013953baccd.jpg


相关文章
|
6月前
|
机器学习/深度学习 开发框架 算法
【深度强化学习】蒙特卡洛策略梯度法求解倒立摆问题实战(附源码)
【深度强化学习】蒙特卡洛策略梯度法求解倒立摆问题实战(附源码)
164 0
|
1月前
|
算法
基于模糊控制算法的倒立摆控制系统simulink建模与仿真
本课题针对倒立摆模型,使用MATLAB2022a进行模糊控制器Simulink建模,通过调整小车推力控制摆角,实现系统的稳定。倒立摆作为非线性控制的经典案例,利用模糊控制策略提高了系统的鲁棒性和自适应性,确保了小车在特定位置的稳定停留。
|
3月前
|
算法
基于模糊控制算法的倒立摆控制系统matlab仿真
本项目构建了一个基于模糊控制算法的倒立摆控制系统,利用MATLAB 2022a实现了从不稳定到稳定状态的转变,并输出了相应的动画和收敛过程。模糊控制器通过对小车位置与摆的角度误差及其变化量进行模糊化处理,依据预设的模糊规则库进行模糊推理并最终去模糊化为精确的控制量,成功地使倒立摆维持在直立位置。该方法无需精确数学模型,适用于处理系统的非线性和不确定性。
基于模糊控制算法的倒立摆控制系统matlab仿真
|
2月前
|
资源调度 算法
基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真
本课题研究基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF、迭代UKF和迭代EKF的控制效果。倒立摆作为典型的非线性系统,适用于评估不同滤波方法的性能。UKF采用无迹变换逼近非线性函数,避免了EKF中的截断误差;EKF则通过泰勒级数展开近似非线性函数;迭代EKF和迭代UKF通过多次迭代提高状态估计精度。系统使用MATLAB 2022a进行仿真和分析,结果显示UKF和迭代UKF在非线性强的系统中表现更佳,但计算复杂度较高;EKF和迭代EKF则更适合维数较高或计算受限的场景。
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于强化学习的倒立摆平衡车控制系统simulink建模与仿真
基于强化学习的倒立摆平衡控制系统利用MATLAB 2022a实现无水印仿真。此系统通过学习策略使摆维持垂直平衡。强化学习涉及状态(如角度和速度)、动作(施力)、奖励(反馈)及策略(选择动作)。采用Q-Learning算法更新动作价值函数Q(s,a),并通过DQN处理高维状态空间,利用经验回放和固定Q-targets提高学习效率和稳定性。
87 9
|
5月前
|
机器学习/深度学习 算法 索引
m基于Qlearning强化学习的小车倒立摆控制系统matlab仿真
在MATLAB 2022a中模拟的Q-learning倒立摆控制显示出稳定平衡效果。Q-learning算法通过智能体与环境交互学习最佳控制策略,以维持摆杆直立。算法基于状态s和动作a更新Q值表,目标是最大化未来奖励。系统状态包括小车位置、速度、杆角度及角速度。动作是小车加速度。当状态或动作空间大时,用神经网络近似Q函数,DQN通过经验回放和目标网络稳定学习。核心代码涉及状态更新、贪婪策略选择动作及环境反馈,实时更新摆杆和小车位置。
80 6
|
6月前
|
机器学习/深度学习 算法
【深度强化学习】DQN与倒立摆控制问题实战(图文解释 附源码)
【深度强化学习】DQN与倒立摆控制问题实战(图文解释 附源码)
496 1
|
6月前
|
机器学习/深度学习 算法
【深度强化学习】神经网络、爬山法优化控制倒立摆问题实战(附源码)
【深度强化学习】神经网络、爬山法优化控制倒立摆问题实战(附源码)
109 0
|
机器学习/深度学习 传感器 安全
【倒立摆】基于PID实现双回路倒立摆控制附Matlab代码
【倒立摆】基于PID实现双回路倒立摆控制附Matlab代码
|
机器学习/深度学习 算法 决策智能
基于强化学习的倒立摆控制策略Matlab实现(附代码)
基于强化学习的倒立摆控制策略Matlab实现(附代码)
236 0