基于matlab的全阶观测器三自由度运动系统状态反馈控制系统的仿真

目录

一、理论基础

二、核心程序

三、仿真测试结果


一、理论基础

1.1 全阶观测器理论概述

       全阶观测器与状态反馈控制是一种在现代控制理论中广泛应用的策略,用于对多自由度系统进行精确的控制。下面以三自由度运动系统为例,详细介绍其原理和数学公式。

        在控制系统设计中,全阶观测器的主要作用是估计系统的状态变量。对于三自由度运动系统,我们需要估计三个状态变量,例如位移、速度和加速度。全阶观测器通过整合系统的输入、输出以及一些辅助测量信号来计算状态变量的估计值。

假设系统的数学模型为:

X_dot = AX + BU

Y = CX + D

       其中 X 为状态变量(例如位置、速度和加速度),U 为控制输入,Y 为系统的输出(例如位置),A, B, C 和 D 是系统的参数矩阵。

全阶观测器的设计需要满足以下条件:

  1. 能够精确地估计系统的所有状态变量;
  2. 估计误差(即观测器输出与实际系统状态的差值)对系统的输入和输出信号敏感。

        全阶观测器的设计通常采用扩展卡尔曼滤波器或非线性观测器。下面是扩展卡尔曼滤波器的数学公式:

X_dot_hat = AX + BU + L(Y - CX - D)

其中 L 是扩展卡尔曼滤波器的增益矩阵,需要根据实际系统参数进行计算和调整。

        在状态反馈控制系统中,控制输入 U 是由控制器根据系统的当前状态 X 和期望输出 Y 来计算的。状态反馈控制器的设计目标是使系统的输出 Y 尽可能接近期望输出 Y_ref。状态反馈控制器通常采用 PID(比例-积分-微分)控制器或更复杂的非线性控制器。

        状态反馈控制系统的基本原理是:通过全阶观测器对系统的状态变量进行估计,将估计值反馈到控制器中,控制器根据这些状态变量的估计值计算控制输入 U,以调整系统的行为。这种闭环控制策略可以大大提高系统的性能和稳定性。

       在实际应用中,全阶观测器和状态反馈控制器通常会引入一些额外的信号(例如噪声或扰动)和建模误差。因此,需要采用一些优化和鲁棒性技术来减小这些误差的影响,例如自适应控制、滑模控制和鲁棒控制等。

      综上所述,全阶观测器与状态反馈控制系统是一种强大的工具,可以实现对多自由度系统的精确控制。在实际应用中,需要综合考虑系统的性能要求、建模误差、鲁棒性和可靠性等因素来设计合适的观测器和控制器。

1.2全阶观测器三自由度运动系统状态反馈控制系统

       运动系统中的状态反馈控制是保障系统稳定运行、提高系统运动性能的重要组成部分。基于全阶观测器能够以运动物体本身作为参考模型,模拟运动物体的实际运动情况,构建状态方程对运动系统进行全面观测。由于运动系统存在多个自由度,而且任何一个自由度均对运动系统的性能存在重要影响,因此涉及到多输入、多输出、多回路的复杂系统设计。

      三自由度运动控制系统被广泛应用于各行各业,尤其是随着电力行业和工业自动化的快速发展,其得到了快速发展。通常情况下,三自由度运动控制系统由三个运动链组成,每个运动链都有其特定输入和输出,然后同时并联到运动控制系统中。在运动过程中,控制系统给出XrYrƟ的运动位置,需要对运动物体进行坐标变化,转化为XY两个直接位置,才能实现三自由度运动的控制。运动位置坐标转化公式如下:

 

 根据公式

多输入多输出系统的状态反馈结构 

       对多数实际被控系统,由于输入和输出之间总存在惯性,所以传递矩阵D=0。对应的状态空间表达式为 :

       在图1中构成闭环系统以改善原被控系统的性能,其反馈控制律由状态变量乘以相应的反馈增益值,与参考输入v组成。从图2-1可以看出,反馈控制律为状态变量的线性函数,即   

        输出反馈是用被控系统输出向量的线性反馈构成闭环系统。图2-2是多输入多输出系统输出反馈的基本结构。 

二、核心程序

clc;
clear;
close all;
warning off;
addpath 'func0\'


%%
%STEP1:车辆的数学建模
Car_3DOF      = func_car_3DOF_model();
%%
%STEP2:转换为空间状态方程
[A0,B0,C0,D0] = func_ABCD_State(Car_3DOF);
%%
%STEP2:根据参数将数据进行例化
[A,B,C,D]     = func_ABCD_State_example(A0,B0,C0,D0);

%%
[num,den]     = ss2tf(A,B,C,D,1);

figure;
bode(num,den,'k-*');
grid on;		 
figure;
rlocus(num,den);
grid on;					
[Z,P,K]=tf2zp(num,den);	
fprintf('零极点:\n\n');
Z
P
K

[Y,T,X] = step(num,den,30);		
figure;
%闭环阶跃响应
plot(X,Y,'linewidth',2);
title('阶跃响应');
grid on;
function Car_3DOF = func_car_3DOF_model();
%定义参量
syms_parameter;
%侧偏角
%前轮
Fx1           = Jd_a1 + Jd_de - Jd_bi - Coffa*Wr/Uer ;
%后轮
Fx2           = Jd_a2 + Coffb*Wr/Uer - Jd_bi;
%加速度
Fa1           = Ay - Uer*side_addspeed - Uer*Wr;
%地面对前后轮作用力
Ff1           = Fy1 - Coff1*Jd_a1;
Ff2           = Fy2 - Coff2*Jd_a2;
%力矩平衡
Fm            = Jd_kd*Jd_dN - Jd_kd*Jd_de - Fy1*Xin;
%力平衡
Fl            = mass*Ay - Fy1 - Fy2;
%力矩平衡
Flj           = I*Driver_w -  Coffa*Fy1 + Coffb*Fy2;
%汽车数学模型
Car_3DOF      = solve(Fx1,Fx2,Fa1,Ff1,Ff2,Fm,Fl,Flj,Driver_w,side_addspeed,Jd_de,Ay,Jd_a1,Jd_a2,Fy1,Fy2);

三、仿真测试结果

       波特图是线性非时变系统的传递函数对频率的半对数坐标图,其横轴频率以对数尺度(log scale)表示,利用波特图可以看出系统的频率响应,又称幅频响应和相频响应曲线图。波特图一般是由二张图组合而成,一张幅频图表示频率响应增益的分贝值对频率的变化,另一张相频图则是频率响应的相位对频率的变化。利用波特图可以看出在不同频率下,系统增益的大小及相位,也可以看出大小及相位随频率变化的趋势。波特图的图形和系统的增益,极点、零点的个数及位置有关。

 

 

A08-58

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fpga和matlab

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

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

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

打赏作者

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

抵扣说明:

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

余额充值