本篇博客简要介绍Goodwin控制方案,并进行了Matlab实现。

博主在完成自适应控制小课程设计时需要用到Goodwin MRAC控制方案,但是在国内外网站上均没有找到简单易懂的参考资料,而学校用到的教材中也只是简要介绍甚至还有错误。因此,仔细拜读了Goodwin大牛编写的教材《自适应滤波预测与控制》明白了一二,故写下本篇博客进行记录。

首先,先介绍我们需要完成的控制任务

在Goodwin教授的书上模型参考控制的结构图如下,我们这里只要求跟踪输入信号,故G=H/E为1.

系统对象参数未知,因此要用到自适应预测器估计参数值。Goodwin教授介绍了两种估计方法,直接估计和间接估计,而博主课上只提到了直接估计,因此选择直接估计法里不受限的情况。

直接算法构建自适应预测器,当预测输出是参数θ的线性函数时,对于不受限的情况,预测器的输出可描述为:

这个式子是通过离散系统推导定义出来的,具体过程参见《自适应技术的理论及应用(第二版)》3.5节离散时域模型参考自适应控制系统。

此处注意:在本书此节有一处错误和一处未点清的地方

①下图中a0的位置应该是a1

②在求gi时,如果i+d-j>n,ai+d-j认为是零

其中信号向量:

基于投影算法自适应d步超前预测器为:

对于给定的参考序列,要求

定义输出误差为:

控制规律如下,可导致输出误差为零:

完整代码如下:

(可任意更改参考模型阶数及延迟时间)

Author:GBH
Date:2022.5.8
clear;clc;
%仿真步长及仿真次数
h=0.1; L=100/h;
m=4; n=4; d=2;
%测试信号-参考输出
r=1;     %幅值为r
t=1:1000+d;
%y_ref=r*square(t/250*pi);  %周期为250 4pi/(pi/125)
y_ref=sin(t/250*pi);  %周期为250 2pi/(pi/125)
%初始化,移迟部分设置为0
for i=1:du(i)=0;y(i)=0;Ceta(:,i)=zeros(m+n+d,1);Fai_turn(i,:)=zeros(1,m+n+d);
end
%求解Fai(k)的转置
%Fai_turn(k)=[y(k),y(k-1),```,y(k-n+1),u(k),u(k-1),```,u(k-m-d+1)]
for k=d+1:L%Fain_turn(k);for i=1:nif((k-i+1<1)||(i==1))   %k-i+1<0即y(k)中k<0;i==1即y(k).两者分别为不存在或未知的因此设为零Fai_turn(k,i)=0;elseFai_turn(k,i)=y(k-i+1);endendfor i=1:m+dif((k-i+1<1)||(i==1))Fai_turn(k,n+i)=0;elseFai_turn(k,n+i)=u(k-i+1);endend%根据Fai_turn(k)、Ceta(k)、y(k)求解Ceta(k),设a(k)=1,c=1Ceta(:,k)=Ceta(:,k-1)+Fai_turn(k-d,:)'*(y_ref(k)-Fai_turn(k-d,:)*Ceta(:,k-1))/(1+Fai_turn(k-d,:)*Fai_turn(k-d,:)');%输入差值为:参考数值-预测输出,设Beta(k)=1u(k)=y_ref(k+d)-[Fai_turn(k,1:n-1),Fai_turn(k,n+1:m+n+d)]*[Ceta(1:n-1,k);Ceta(n+1:m+n+d,k)];%将缺失的beta0填上Fai_turn(k,n)=u(k);y(k+d)=Fai_turn(k,:)*Ceta(:,k);    %预测器
end
%图像显示
%合并显示
figure(1);
plot(t,y_ref,'b',t,y,'r');set(gca,'YLim',[-1.5 1.5]);
%分开显示
figure(2);
subplot(2,1,1);
plot(t,y_ref,'b');set(gca,'YLim',[-1.5 1.5]);
subplot(2,1,2);
plot(t,y,'r');set(gca,'YLim',[-1.5 1.5]);

结果(蓝色的为输入信号,红色的为跟踪信号):

Goodwin模型参考自适应控制方案相关推荐

  1. 【控制】自适应控制,模型参考自适应控制,公式推导,有程序有结果图

    目录 自适应控制的一点笔记和看法 1 [控制]自适应控制基本概念 2 [控制]自适应控制,对参考信号跟踪,对未知参数估计的小例子,带程序有结果图 3 [控制]自适应控制,模型参考自适应控制,公式推导, ...

  2. 【控制】自适应控制,模型参考自适应控制,参考模型如何求取,有程序有图

    目录 自适应控制的一点笔记和看法 1 [控制]自适应控制基本概念 2 [控制]自适应控制,对参考信号跟踪,对未知参数估计的小例子,带程序有结果图 3 [控制]自适应控制,模型参考自适应控制,公式推导, ...

  3. 基于模型参考自适应控制(MRAC)的自动驾驶方向盘(油门)控制方法

    实习还是能学到很多学校学不到的东西,总结下实习期间学到的一个自适应控制方法.最近比较忙,先大致写下原理的笔记供自己复习,后面有空再更下仿真.如有错误请不吝赐教~ 背景 举个例子,目前公司自动驾驶车队主 ...

  4. 自适应控制---模型参考自适应控制(一)基于局部参数最优化的设计方法(MIT方案)

    模型参考自适应简介 基于局部参数最优化的设计方法(MIT方案) 举例 n<=4时的劳斯判据: n=1时,特征方程为:,各系数为正. n=2时,特征方程为,各系数为正. n=3时,特征方程为,各系 ...

  5. 机器人动力学与控制学习笔记(十)————自适应控制(模型参考自适应控制)

    一.模型参考自适应 模型参考自适应是比较流行的自适应控制方式之一.模型参考自适应控制系统的设计主要有两大类方法:一种是基于局部参数最优化的设计方法:另一种是基于稳定性理论的设计方法,包括以下两种具体的 ...

  6. Control-模型参考自适应控制(MRAC)

    自适应控制可以在系统老化或者存在建模不确定性的情况下改善控制系统性能.自适应控制是一类处理不确定性系统的非线性控制方法,这些不确定性可能来自系统的动力学自身无法预见的变化或者外部的干扰.自适应控制系统 ...

  7. 自适应控制——仿真实验二 用Narendra方案设计模型参考自适应系统

    自适应控制--仿真实验二 用Narendra方案设计模型参考自适应系统 一.问题描述 二.问题建模 三.问题求解 附录:实现MATLAB代码 参考书目 一.问题描述 设控制对象的传递函数为 W p ( ...

  8. 自适应控制——仿真实验三 用超稳定性理论设计模型参考自适应系统

    自适应控制--仿真实验三 用超稳定性理论设计模型参考自适应系统 一.问题描述 二.问题建模 三.问题求解 参考书目 一.问题描述 设控制对象的传递函数为 W p ( s ) = k 1 T 1 2 s ...

  9. 深度学习模型部署技术方案

    深度学习模型部署技术方案 训练好的深度学习模型如何进行部署的相关技术方案 1 什么是模型部署? 2 数据科学项目整个开发流程 3 使用flask 将 Keras深度学习模型部署为Web应用程序 4 T ...

最新文章

  1. python – 在循环中创建不同的变量名
  2. json数据格式 与 for in
  3. nginx服务器绑定域名和设置根目录的方法
  4. java map的理解_java中的hashmap理解
  5. 为什么AI工程师成为当前薪资最高的技术岗位
  6. python获取文件路径下的文件_python 获取文件下所有文件或目录os.walk()的实例
  7. 处理veh调试器检测_越狱检测抖音逻辑???
  8. 基础知识—循环语句-for
  9. (90)FPGA十进制计数器设计-面试必问(十四)(第18天)
  10. 转:jQuery常用插件
  11. 计算机网络中使用的双绞线通常是16芯的,自考计算机应用基础判断题试题答案...
  12. 大数据平台分析发挥哪些作用
  13. time datetime的时间--python
  14. 【ISCCC认证】WEB安全工程师认证介绍
  15. 为什么苹果的官网看上去这么美
  16. 2018版 主流SDR设备横向比较
  17. 程序员的12条经营分享
  18. 公众号怎么设置滑动文字_这种微信公众号里面滑动是怎么操作的?
  19. Shell循环语句(for、while、until)及echo、IFS
  20. 系统——windows10专业工作站版简单优化

热门文章

  1. 三月“女孩月”,玩具反斗城推出独家发售玩具
  2. AVR单片机熔丝位设置
  3. 影响电磁铁磁力大小的因素有哪些
  4. 根据条形码获取商品信息
  5. 数据库练习题(KDWY题库)
  6. 王者荣耀最新ip手游《王者荣耀世界》宣传PV曝光 开放世界MMO
  7. 儒释道兼修经典——菜根谭全文及讲解以及弟子规
  8. [转载]Flash场景之间相互跳转的方法
  9. Nervos 联合 Gitcoin 共同推出 5 万美元的开发者赏金计划
  10. C语言-三子棋游戏的实现