MATLAB - 卫星自旋的模型参考自适应控制(MRAC)

系列文章目录


前言

本例展示了如何使用模型参考自适应控制 (MRAC) 控制卫星自旋,使未知控制系统与理想参考模型相匹配。卫星系统在 Simulink® 中建模,MRAC 控制器使用 Simulink Control Design™ 软件提供的模型参考自适应控制模块实现。


一、卫星旋转控制系统

在本例的模型中,卫星的圆柱体以恒定的角速率 ω 绕其对称轴(z 轴)旋转 [1]。目标是利用力矩 ux 和 uy 独立控制绕 x 轴和 y 轴的角速率 ωx 和 ωy。运动方程产生了一个具有两个输入和两个输出的二阶模型。

在该系统中,控制器并不直接观察被控对象的状态。相反,它通过以下测量模型间接观察状态。

在本例中,假设实际的被控对象模型未知,MRAC 控制器使用以下名义的被控对象动态模型。

鉴于这个不确定的非线性系统,您的目标是设计一个控制器,使系统能够跟踪以下解耦参考模型。

这里

  • 是参考模型状态向量。
  • r(t) 包含角速率参考信号。

二、定义标称模型和参考模型

定义卫星系统的动态模型。对于该系统,A 代表真实状态矩阵。

Matlab 复制代码
a = 10;                % System Constant
A = [0 a;-a -a/2];     % True model parameters
B = eye(2);
C = [1 a;-a 1];
D = zeros(2,2);

指定被控对象失配矩阵。该矩阵将从真实 A 矩阵中减去,从而定义控制器使用的标称被控对象。控制器的目标就是模拟这一被控对象的不确定性。

Matlab 复制代码
deltaA = [0 0.5*a; -0.5*a 0];   % Plant mismatch

参考系统是以下稳定的二阶系统。

Matlab 复制代码
Am = [-5 0; 0 -5];    % Second-order decoupled integrator model
Bm = diag([5 5]);     % Nominal control effective matrix

确定卫星自旋速率和参考模型状态的初始条件。

Matlab 复制代码
x1_0 = 0.5;     % Initial x-axis angular rate (rad/s)
x2_0 = 0.5;     % Initial y-axis angular rate (rad/s)
xm_0 = [0;0];   % Initial conditions of the reference plant model  

三、模型参考自适应控制结构

MRAC 控制器的目标是实现跟踪误差 的渐近收敛。

MRAC 控制器的结构如下

这里

  • kx 包含反馈控制增益。
  • kr 包含前馈控制增益。
  • uad 是一个自适应控制项,用于消除模型的不确定性。

模型参考自适应控制模块调整自适应控制项,以实现所需的参考模型跟踪。您还可以选择调整反馈和前馈控制增益。

在本例中,控制器调整了反馈增益,并保持前馈增益不变。

初始反馈增益和静态前馈增益的计算满足以下模型匹配条件:

指定计算出的控制器增益和反馈增益学习率。

Matlab 复制代码
Kx = -place(A,B,eig(Am));  % State feedback gain for pole placement
gain_kx = 1;               % Feedback gain learning rate
Kr = Bm;                   % Feedforward gain for ref model matching

四、配置不确定性估计参数

MRAC 控制器在线估计模型的不确定性,并生成自适应控制动作 uad 以消除不确定性,从而恢复基线控制器的标称系统。自适应控制项使用以下模型对系统不确定性进行建模。

此处

  • w 包含由控制器调整的网络权重。
  • ϕ(x) 是不确定性模型特征向量。

使用模型参考自适应控制模块,您可以选择以下特征向量定义之一。

  • 系统状态,其中 ϕ(x)=x(t)
  • 具有高斯核的径向基函数
  • 由可选输入端口提供的自定义特征。

在本例中,控制器被配置为使用系统状态作为干扰模型特征。

定义模型估计学习率 gamma_w 和跟踪误差权重 Q。

Matlab 复制代码
gamma_w = 100;  % Learning rate
Q = 10;         % Tracking error weight

五、模拟控制器

打开卫星旋转控制系统的 Simulink 模型。

Matlab 复制代码
mdl = "satellitespin";
open_system(mdl)

仿真模型。

Matlab 复制代码
Tf = 35;        % Duration (s)  
sim(mdl);

通过比较自旋响应(上图)和自旋速率响应(下图)与各自的参考信号,查看控制器性能。

MRAC 控制器能很好地跟踪参考信号。第一步响应有一个初始瞬态,随着控制器对干扰估计的改进,瞬态的大小会减小。

查看控制器估计的不确定性,并将其与真实的不确定性进行比较。

控制器估算出准确的 y 轴不确定性模型。x 轴的不确定性模型符号正确,但幅度低于真实的不确定性。这两个不确定性模型的不确定性估计值都有明显的瞬变,尤其是在参考信号发生第一步变化时。

例如,将 Q 值降至 1 并模拟模型。

Matlab 复制代码
Q = 1;
sim(mdl);

模型估计响应的瞬态较少。代价是自旋和自旋速率响应的沉淀时间较长。

参考资料

[1] Zhou, Kemin, John Comstock Doyle, and K. Glover. Robust and Optimal Control. Englewood Cliffs, N.J: Prentice Hall, 1996.

相关推荐
程序员大志6 小时前
ROS1入门教程2:主题发布和订阅
ros
向阳逐梦7 小时前
基于STM32F4单片机实现ROS机器人主板
stm32·单片机·机器人
机器学习之心10 小时前
Bayes-GRU-Attention的数据多特征分类预测Matlab实现
matlab·分类·gru
叶庭云11 小时前
Matlab 和 R 语言的数组索引都是从 1 开始,并且是左闭右闭的
matlab·编程语言·r·数组索引·从 1 开始
朽木成才12 小时前
小程序快速实现大模型聊天机器人
小程序·机器人
聆思科技AI芯片12 小时前
实操给桌面机器人加上超拟人音色
人工智能·机器人·大模型·aigc·多模态·智能音箱·语音交互
γ..13 小时前
基于MATLAB的图像增强
开发语言·深度学习·神经网络·学习·机器学习·matlab·音视频
IT猿手16 小时前
基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
算法·elk·机器学习·matlab·无人机·聚类·强化学习
超级大咸鱼1 天前
CW信号的正交解调
matlab·verilog·fpga·数字信号·解调·正交解调·cw
新加坡内哥谈技术1 天前
开源Genesis: 开创机器人研究的全新模拟平台
机器人·开源