【一级倒立摆】基于simulink的一级倒立摆控制器系统仿真

1.软件版本

MATLAB2021a

2.本算法理论知识

%基于极点配置系统的降维观测器设计
% 极点配置法稳定系统
Qc=ctrb(A,B);
EA=[-10   0        0        0;...
     0  -10        0        0;...
     0    0  -2-2*sqrt(3)*i 0;...
     0    0        0        -2+2*sqrt(3)*i];
PP=polyvalm(poly(EA),A);
Ks=[0 0 0 1]*inv(Qc)*PP;%状态反馈矩阵
%降维观测器设计
q=rank(C);
P=[C;0 1 0 0;0 0 0 1];
Q=inv(P);
Q1=Q(:,1:q);
Q2=Q(:,q+1:rank(Q));

A1=P*A*inv(P);
B1=P*B;
%A1矩阵分块
A11=A1(1:q,1:q);
A12=A1(1:q,q+1:4);
A21=A1(q+1:4,1:q);
A22=A1(q+1:4,q+1:4);
%B1矩阵分块
B11=B1(1:q,:);
B12=B1(q+1:4,:);
Pole=[-1 -2];%期望极点
K=place(A22',A12',Pole);%极点配置
L=K';%状态观测器增益矩阵

3.仿真分析

 

 

D237

### 实现倒立摆系统仿真 #### 创建Simulink模型 为了在MATLAB Simulink中实现倒立摆系统仿真,需先启动MATLAB并创建一个新的Simulink模型文件。通过`File>New>Simulink Model`命令可以新建一个空白的Simulink编辑窗口[^1]。 #### 构建倒立摆数学模型 根据物理原理建立倒立摆的动力学方程,并将其转化为适合于Simulink环境下的模块形式。这通常涉及到质量、长度、重力加速度等参数设置以及微分方程描述运动规律的部分。对于简单的一阶倒立摆而言,主要考虑的是角度θ的变化率与其受到的作用力之间的关系[^2]。 ```matlab % 定义常量 m = 0.5; % 小车的质量 (kg) M = 1.0; % 杆子的质量 (kg) l = 0.5; % 杆子的长度 (m) g = 9.81;% 重力加速度 (m/s²) % 计算惯性矩 I 和总质量 M_total I = m*l^2/3; M_total = M+m; % 动力学方程系数矩阵 A, B A=[0 1; g/l -(m*l)/(I+M_total*l^2)]; B=[0;(1/(I+M_total*l^2))]; ``` #### 设计LQR控制器 线性二次型调节器(LQR)是一种常用的最优控制策略,在这里被用来作为倒立摆控制系统的核心组件之一。需要定义状态反馈增益K来最小化给定的成本函数J,从而达到稳定系统的目的。具体来说就是求解黎卡提方程获得最佳的状态权重Q和输入权重R组合。 ```matlab % 设置 Q 和 R 的初始值 Q = diag([1, 1]); R = 1; % 使用 lqr 函数计算 K [K,~,~]=lqr(A,B,Q,R); ``` #### 添加必要的模块到Simulink画布上 从库浏览器中拖拽相应的功能块至绘图区,比如积分器(Integrator),乘法器(Product),减法器(Add/Subtract),Sine Wave信号源等等。按照之前构建好的理论框架连接各个节点形成完整的回路结构。特别注意要加入Scope观察波形变化情况以便后续调试优化[^3]。 #### 参数调整与测试运行 完成上述步骤之后就可以尝试着去改变一些关键性的数值看看会对最终效果造成怎样的影响。例如修改杆长l或者增加风阻因素都会使整个过程变得更加复杂有趣。同时也可以利用内置工具箱里的PID Tuner来进行更精细地调校直至满意为止。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fpga和matlab

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

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

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

打赏作者

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

抵扣说明:

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

余额充值