STM32
登录
直播中
蔡鼎瑾
9年用户
1115经验值
私信
关注
[问答]
如何利用simulink对LQR控制器进行仿真呢
开启该帖子的消息推送
控制器
Simulink
什么样的反馈增益k才是最好的呢?
如何利用simulink对LQR控制器进行
仿真
呢?
回帖
(1)
杨芳
2021-11-22 15:12:10
对于可镇定的线性系统:
写成闭环形式,也就是
我们的做法是通过选择反馈增益k来改变闭环矩阵 A c l 的特征值,从而控制系统的表现。
那么
什么样的反馈增益k才是最好的呢?
在优化理论中,引入cost function的概念,来帮助选择反馈增益k。
找到一个k,使得在满足镇定系统的同时,最小化cost function。
这里,矩阵Q和R都是对角正定矩阵,他们的每一个对角元素的值都代表着对每一个对应的状态
的惩罚。
矩阵对角元素的值越大,表示对该状态或输入的惩罚越厉害。那么体现在最终系统的表现上就是,该状态或输入的值越小。
视频中,老师对倒立摆进行建模,得到其状态空间方程下的系统矩阵:A,B
然后利用simulink对其进行仿真:(这里目的主要是学习一下simulink仿真时,如何从0进行建模与simulink仿真)
第一次选择Q=[100 0; 0 1]; R=.01,在MATLAB中用
k=lqr(A,B,Q,R)
命令得到该cost function下的最有反馈增益k。其内部主要是通过求解Riccati方程得到k。
得到如下仿真曲线
可以看到状态最终能够被镇定到0,但是控制输入u太大。
那么接下来,可以尝试将和u相关的矩阵R的值给大一点。对u的值惩罚大,从而得到的仿真结果中,u的计算结果就相对要小一点。同时将Q矩阵中的元素值给小一点,表示不是很关心状态的收敛速度。
第二次选择Q=[1 0; 0 1]; R=100,在MATLAB中用
k=lqr(A,B,Q,R)
得到新的k,仿真得到如下对照曲线。(为了便于观察,复制了一份刚刚的系统,作为对照)
可以看到,蓝色的线条是第二组的仿真结果。收敛速度变慢了,但是控制输入u的值相对的变小了。这样更加符合实际情况,因为有时会考虑到执行器饱和的问题。
总结
这里主要是复习一下LQR的相关知识,并且系统的学习一下,对一个实际的问题进行建模、simulink仿真的过程。
simulink搭建一个模型的时候,主要考虑以下步骤:
将状态空间方程分别写成单个状态的表达式
用n个积分器由 x ˙ 得到 x ,从而得到各个状态,注意积分器要置初值,默认0
搭建控制输入u,构成闭环系统
必要时,对模块化的子系统创建subsystem,便于观察。
对于可镇定的线性系统:
写成闭环形式,也就是
我们的做法是通过选择反馈增益k来改变闭环矩阵 A c l 的特征值,从而控制系统的表现。
那么
什么样的反馈增益k才是最好的呢?
在优化理论中,引入cost function的概念,来帮助选择反馈增益k。
找到一个k,使得在满足镇定系统的同时,最小化cost function。
这里,矩阵Q和R都是对角正定矩阵,他们的每一个对角元素的值都代表着对每一个对应的状态
的惩罚。
矩阵对角元素的值越大,表示对该状态或输入的惩罚越厉害。那么体现在最终系统的表现上就是,该状态或输入的值越小。
视频中,老师对倒立摆进行建模,得到其状态空间方程下的系统矩阵:A,B
然后利用simulink对其进行仿真:(这里目的主要是学习一下simulink仿真时,如何从0进行建模与simulink仿真)
第一次选择Q=[100 0; 0 1]; R=.01,在MATLAB中用
k=lqr(A,B,Q,R)
命令得到该cost function下的最有反馈增益k。其内部主要是通过求解Riccati方程得到k。
得到如下仿真曲线
可以看到状态最终能够被镇定到0,但是控制输入u太大。
那么接下来,可以尝试将和u相关的矩阵R的值给大一点。对u的值惩罚大,从而得到的仿真结果中,u的计算结果就相对要小一点。同时将Q矩阵中的元素值给小一点,表示不是很关心状态的收敛速度。
第二次选择Q=[1 0; 0 1]; R=100,在MATLAB中用
k=lqr(A,B,Q,R)
得到新的k,仿真得到如下对照曲线。(为了便于观察,复制了一份刚刚的系统,作为对照)
可以看到,蓝色的线条是第二组的仿真结果。收敛速度变慢了,但是控制输入u的值相对的变小了。这样更加符合实际情况,因为有时会考虑到执行器饱和的问题。
总结
这里主要是复习一下LQR的相关知识,并且系统的学习一下,对一个实际的问题进行建模、simulink仿真的过程。
simulink搭建一个模型的时候,主要考虑以下步骤:
将状态空间方程分别写成单个状态的表达式
用n个积分器由 x ˙ 得到 x ,从而得到各个状态,注意积分器要置初值,默认0
搭建控制输入u,构成闭环系统
必要时,对模块化的子系统创建subsystem,便于观察。
举报
更多回帖
rotate(-90deg);
回复
相关问答
控制器
Simulink
怎么实现燃料电池汽车整车
控制器
仿真
测试平台?
2021-05-14
1431
如何
利用
MATLAB的
simulink
建立
仿真
模型
呢
2021-11-18
1621
如何对基于STM32的LED
进行
SIMULINK
仿真
呢
2021-11-18
1247
如何对FOC算法
进行
simulink
仿真
呢
2021-11-19
2119
matlab
simulink
问题求助
2023-04-16
24304
怎样去编写PID
控制器
和模糊
控制器
代码
呢
2021-11-19
3056
请教关于
利用
simulink
进行
脉冲反射法
仿真
研究的问题
2014-07-27
5454
Simulink
是什么?
Simulink
的工作流程是怎样
进行
的?
2021-07-09
2019
如何对定时
器
进行
启停
控制
呢
2021-11-19
1819
嵌入式倒立摆摆杆偏角
控制器
怎么在线
仿真
?
2020-04-01
1688
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分