基于Matlab/Simulink 和飞行模拟器进行飞行控制联合仿真

简介: 基于Matlab/Simulink 和飞行模拟器进行飞行控制联合仿真

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

在真实的三维虚拟环境中进行飞行测试越来越被认为是评估飞机模型及其控制系统的安全且经济有效的方法。本文首先回顾并比较了迄今为止已成功与 MathWorks 软件接口的最流行的基于个人计算机的飞行模拟器。这种协同仿真方法可以将 Matlab 工具箱的导航、控制和传感器建模等功能的优势与专用飞行仿真软件的高级仿真和场景渲染功能相结合。然后,该方法可用于验证飞机模型、控制算法、飞行处理特性,或根据飞行数据进行模型识别。然而,有 缺乏足够详细的分步飞行协同仿真教程,而且也很少尝试一次评估一种以上的飞行协同仿真方法。因此,我们使用 Simulink 和三种不同的飞行模拟器演示我们自己的分步联合仿真实现:Xplane、FlightGear 和 Alphalink 的虚拟飞行测试环境 (VFTE)。所有三种联合模拟均采用实时用户数据报协议 (UDP) 进行数据通信,每种方法都具有优势,具体取决于飞机类型。以 Cessna-172 通用航空飞机为例,Simulink 与 Xplane 的联合仿真展示了成功的虚拟飞行测试,能够准确地同时跟踪高度和速度参考变化,同时在任意风力条件下保持滚转稳定性,这对单螺旋桨塞斯纳提出了挑战。对于中等续航能力的 Rascal-110 无人机 (UAV),Simulink 使用 MAVlink 协议与 FlightGear 和 QGroundControl 连接,允许准确跟踪地图上的横向 UAV 路径,此设置用于评估基于Matlab的六自由度无人机模型。对于较小的 ZOHD Nano Talon 微型飞行器 (MAV),Simulink 与专为此 MAV 设计的 VFTE 接口,并与 QGroundControl 一起使用软件在环 (SIL) 模拟来测试先进的基于 H-infinity 观察器的自动驾驶仪,以在有风条件下实现稳健的低空飞行。然后最终使用控制器局域网 (CAN) 数据总线和带有模拟传感器模型的 Pixhawk-4 迷你自动驾驶仪扩展到 Nano Talon MAV 上的硬件在环 (HIL) 实施。

⛄ 部分代码

function XDOT = UAV_model(X, U)%UAV_MODEL Full 9 DOF model for the UAV based on the RCAM Aircraft%(Christopher Lum, Garteur)%   [XDOT] = UAV_MODEL(X,U) returns the longitudinal state%   derivatives, XDOT, given the current state and inputs, X and U.  The%   constants are the nominal values defining the aircraft specifications.%============UAV State========%x1 = X(1);  %ux2 = X(2);  %vx3 = X(3);  %wx4 = X(4);  %px5 = X(5);  %qx6 = X(6);  %rx7 = X(7);  %phix8 = X(8);  %thetax9 = X(9);  %psiu1 = U(1);  %d_A aileronu2 = U(2);  %d_T elevatoru3 = U(3);  %d_R rudderu4 = U(4);  %d_th1 throttle 1u5 = U(5);  %d_th2 throttle 2%============Constants=========%%nominal UAV constantsm = 120000; %aircraft mass (kg)%Aerocbar = 6.6; %Mean aerodynamic chord (m)lt = 24.8;  %distance by AC of tail and fuselage (m)S = 260;    %Wing planform area (m^2)St = 64;    %Tail planform area (m^2)Xcg = 0.23*cbar;                %x position of CoG in Fm (m)Ycg = 0;                        %y position of CoG in Fm (m)Zcg = 0.10*cbar;                %z position of CoG in Fm (m)Xac = 0.12*cbar;                %x position of aerodynamic center in Fm (m)Yac = 0;                        %y position of aerodynamic center in Fm (m)Zac = 0;                        %z position of aerodynamic center in Fm (m)%Propulsion constantsUmax  = 120000*9.81; %  max thrust in newtonsXapt1 = 0;           %x position of engine 1 forceYapt1 = -7.94;       %y position of engine 1 forceZapt1 = -1.9;        %z position of engine 1 forceXapt2 = 0;           %x position of engine 2 forceYapt2 = 7.94;        %y position of engine 2 forceZapt2 = -1.9;        %z position of engine 2 force%Miscellaneous constantsrho = 1.225;        %air density (kg/m^3)g = 9.81;           %gravitational acceleration (m/s^2)depsda = 0.25;      %change in downwash (rad/rad)alpha_L0 = -11.5*(pi/180);    %zero lift AoA (rad)n = 5.5;            %slope of linear region of lift slopea3 = -768.5;        %coef of alpha^3a2 = 609.2;         %coef of alpha^2a1 = -155.2;        %coef of alpha^1a0 = 15.2;        %coef of alpha^0alpha_switch = 14.5*(pi/180); %=======Control limits and Saturation=======%%can be changed in simulink%{u1min = -25*pi/180; %Ailerons limitsu1max = 25*pi/180;u2min = -25*pi/180; %Elevator limitsu2max = 10*pi/180;u3min = -30*pi/180; % Rudder limitsu3max = 30*pi/180;u4min = 0.5*pi/180; % Throttle 1 limitsu4max = 10*pi/180;u5min = 0.5*pi/180; % Throttle 2 limitsu5max = 10*pi/180;%}%Saturation %{if(u1>u1max)    u1 = u1max;elseif(u1<u1min)    u1 = u1min;endif(u2>u2max)    u2 = u2max;elseif(u2<u2min)    u2 = u2min;endif(u3>u3max)    u3 = u3max;elseif(u3<u3min)    u3 = u3min;endif(u4>u4max)    u4 = u4max;elseif(u4<u4min)    u4 = u4min;endif(u5>u5max)    u5 = u5max;elseif(u5<u5min)    u5= u5min;end%}%===========Intermediate Variables==========%%airspeedVa = sqrt(x1^2 + x2^2 + x3^2);%alpha and betaalpha = atan2(x3,x1);%Angle of attackbeta = asin(x2/Va);%Side slip%dynamic pressureQ = 0.5*rho*Va^2;%define the vectors wbe_b and V_b wbe_b = [x4;x5;x6];V_b = [x1;x2;x3];%============Aerodynamics==================%%Calculate the CL_wbif alpha<=alpha_switch    CL_wb = n*(alpha - alpha_L0);else    CL_wb = a3*alpha^3 + a2*alpha^2 + a1*alpha + a0;end%Calculate CL_tepsilon = depsda*(alpha - alpha_L0);alpha_t = alpha - epsilon + u2 + 1.3*x5*lt/Va;CL_t = 3.1*(St/S)*alpha_t;%Total liftCL = CL_wb + CL_t;%Total drag  (no tail)CD =  0.13 + 0.07*(5.5*alpha + 0.654)^2;%SideforceCY = -1.6*beta + 0.24*u3;%==========Dimensional Aerodynamic Forces======%%calculate dimensional forces in F_s stability axisFA_s = [-CD*Q*S;         CY*Q*S;        -CL*Q*S];    %Rotate the forces to F_b body axisC_bs = [cos(alpha) 0 -sin(alpha);        0 1 0;        sin(alpha) 0 cos(alpha)];    FA_b = C_bs*FA_s;%========Aerodynamic Moment coefficient about AC ========%Calculate moments in Fbeta11 = -1.4*beta;eta21 = -0.59 - (3.1*(St*lt)/(S*cbar))*(alpha - epsilon);eta31 = (1 - alpha*(180/(15*pi)))*beta;eta = [eta11;       eta21;       eta31];dCMdx = (cbar/Va)*[-11 0 5;                    0 (-4.03*(St*lt^2)/(S*cbar^2)) 0;                    1.7 0 -11.5];              dCMdu = [-0.6 0 0.22;          0 (-3.1*(St*lt)/(S*cbar)) 0;          0 0 -0.63];%Calculate CM about AC in Fb axisCMac_b = eta + dCMdx*wbe_b + dCMdu*[u1;u2;u3];%========Aero Moment About AC==========%normalize to an aerodynamic momentMAac_b = CMac_b*Q*S*cbar;%conversion to stability axisC_sb = C_bs';Mac_b = CMac_b*Q*S*cbar;Mac_s = C_sb*Mac_b;CMac_s = Mac_s./(Q*S*cbar);CMac_s = C_sb*CMac_b;%========Aero Moment About CG==========%%transfer moment to CGrcg_b = [Xcg;Ycg;Zcg];rac_b = [Xac;Yac;Zac];MAcg_b = C_bs*Mac_s + cross(FA_b,rcg_b - rac_b);%=========Engine Force and moment======%%ThrustF1 = u4*Umax;F2 = u5*Umax;%Assume thrust aligned with FbFE1_b = [F1;0;0];FE2_b = [F2;0;0];FE_b = FE1_b + FE2_b;  %Engine thrust offset from CoG.mew1 = [Xcg - Xapt1;        Yapt1 - Ycg;        Zcg - Zapt1];        mew2 = [Xcg - Xapt2;        Yapt2 - Ycg;        Zcg - Zapt2];        MEcg1_b = cross(mew1,FE1_b);MEcg2_b = cross(mew2,FE2_b);MEcg_b = MEcg1_b + MEcg2_b;%=============Gravity Effects=========%%Calculating grabitational forces in the body frame. No moment about CoGg_b = [-g*sin(x8);        g*cos(x8)*sin(x7);        g*cos(x8)*cos(x7)];  Fg_b = m*g_b;%============State Derivatives==========%%Matrix of InertiaIb = m*[40.07 0 -2.0923;        0 64 0;        -2.0923 0 99.92];    %Inverse of inertia matrix invIb = (1/m)*[0.0249836 0 0.000523151;               0 0.015625 0;               0.000523151 0 0.010019];%Form F_b (all the forces in Fb) and calculate udot, vdot, wdotF_b = Fg_b + FE_b + FA_b;x1to3dot = (1/m)*F_b - cross(wbe_b,V_b);%Form Mcg_b (all moments about CoG in Fb) and calculate pdot, qdot, rdot.Mcg_b = MAcg_b + MEcg_b;x4to6dot = invIb*(Mcg_b - cross(wbe_b,Ib*wbe_b));%Calculate phidot,thetadot, and psidot    H_phi = [1 sin(x7)*tan(x8) cos(x7)*tan(x8);         0 cos(x7) -sin(x7);         0 sin(x7)/cos(x8) cos(x7)/cos(x8)];    x7to9dot = H_phi*wbe_b;%Place in first order form%Navigation EquationsC1v = [cos(x9) sin(x9) 0;    -sin(x9) cos(x9) 0;    0 0 1];C21 = [cos(x8) 0 -sin(x8);     0 1 0;    sin(x8) 0 cos(x8)];Cb2 = [1 0 0;    0 cos(x7) sin(x7)    0 -sin(x7) cos(x7)];Cbv =Cb2*C21*C1v;Cvb = Cbv';x10to12dot = Cvb*V_b;XDOT = [x1to3dot;        x4to6dot;        x7to9dot;       x10to12dot];

⛄ 运行结果

⛄ 参考文献

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料

🍅 仿真咨询

1.卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3.旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划
4.无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
5.传感器部署优化、通信协议优化、路由优化、目标定位
6.信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号
7.生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化
8.微电网优化、无功优化、配电网重构、储能配置
9.元胞自动机交通流 人群疏散 病毒扩散 晶体生长


相关文章
|
1天前
|
监控 算法 数据安全/隐私保护
基于扩频解扩+turbo译码的QPSK图传通信系统matlab误码率仿真,扩频参数可设置
本项目基于MATLAB 2022a实现图像传输通信系统的仿真,涵盖QPSK调制解调、扩频技术和Turbo译码。系统适用于无人机图像传输等高要求场景,确保图像质量和传输稳定性。通过仿真,验证了系统在不同信噪比下的性能,展示了图像的接收与恢复效果。核心代码实现了二进制数据到RGB图像的转换与显示,并保存不同条件下的结果。
16 6
|
1天前
|
传感器 算法
基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真
本项目基于遗传算法(GA)优化多机无源定位系统的GDOP,使用MATLAB2022A进行仿真。通过遗传算法的选择、交叉和变异操作,迭代优化传感器配置,最小化GDOP值,提高定位精度。仿真输出包括GDOP优化结果、遗传算法收敛曲线及三维空间坐标点分布图。核心程序实现了染色体编码、适应度评估、遗传操作等关键步骤,最终展示优化后的传感器布局及其性能。
|
2天前
|
算法
基于小波变换和峰值搜索的光谱检测matlab仿真,带GUI界面
本程序基于小波变换和峰值搜索技术,实现光谱检测的MATLAB仿真,带有GUI界面。它能够对CO2、SO2、CO和CH4四种成分的比例进行分析和提取。程序在MATLAB 2022A版本下运行,通过小波分解、特征提取和峰值检测等步骤,有效识别光谱中的关键特征点。核心代码展示了光谱数据的处理流程,包括绘制原始光谱、导数光谱及标注峰值位置,并保存结果。该方法结合了小波变换的时频分析能力和峰值检测的敏锐性,适用于复杂信号的非平稳特性分析。
|
2天前
|
机器学习/深度学习 算法 安全
基于深度学习的路面裂缝检测算法matlab仿真
本项目基于YOLOv2算法实现高效的路面裂缝检测,使用Matlab 2022a开发。完整程序运行效果无水印,核心代码配有详细中文注释及操作视频。通过深度学习技术,将目标检测转化为回归问题,直接预测裂缝位置和类别,大幅提升检测效率与准确性。适用于实时检测任务,确保道路安全维护。 简介涵盖了算法理论、数据集准备、网络训练及检测过程,采用Darknet-19卷积神经网络结构,结合随机梯度下降算法进行训练。
|
3天前
|
算法 数据可视化 数据安全/隐私保护
一级倒立摆平衡控制系统MATLAB仿真,可显示倒立摆平衡动画,对比极点配置,线性二次型,PID,PI及PD五种算法
本课题基于MATLAB对一级倒立摆控制系统进行升级仿真,增加了PI、PD控制器,并对比了极点配置、线性二次型、PID、PI及PD五种算法的控制效果。通过GUI界面显示倒立摆动画和控制输出曲线,展示了不同控制器在偏转角和小车位移变化上的性能差异。理论部分介绍了倒立摆系统的力学模型,包括小车和杆的动力学方程。核心程序实现了不同控制算法的选择与仿真结果的可视化。
31 15
|
3天前
|
算法
基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真
本程序基于海鸥优化算法(SOA)进行三维曲面最高点搜索的MATLAB仿真,输出收敛曲线和搜索结果。使用MATLAB2022A版本运行,核心代码实现种群初始化、适应度计算、交叉变异等操作。SOA模拟海鸥觅食行为,通过搜索飞行、跟随飞行和掠食飞行三种策略高效探索解空间,找到全局最优解。
|
4天前
|
算法
基于排队理论的客户结账等待时间MATLAB模拟仿真
本程序基于排队理论,使用MATLAB2022A模拟客户结账等待时间,分析平均队长、等待时长、不能结账概率、损失顾客数等关键指标。核心算法采用泊松分布和指数分布模型,研究顾客到达和服务过程对系统性能的影响,适用于银行、超市等多个领域。通过仿真,优化服务效率,减少顾客等待时间。
|
5天前
|
机器学习/深度学习 数据采集 算法
基于GWO灰狼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a,展示了时间序列预测算法的运行效果(无水印)。核心程序包含详细中文注释和操作视频。算法采用CNN-GRU-SAM网络,结合灰狼优化(GWO),通过卷积层提取局部特征、GRU处理长期依赖、自注意力机制捕捉全局特征,最终实现复杂非线性时间序列的高效预测。
|
5天前
|
算法 数据安全/隐私保护
基于AutoEncode自编码器的端到端无线通信系统matlab误码率仿真
本项目基于MATLAB 2022a实现自编码器在无线通信系统中的应用,仿真结果无水印。自编码器由编码器和解码器组成,通过最小化重构误差(如MSE)进行训练,采用Adam等优化算法。核心程序包括训练、编码、解码及误码率计算,并通过端到端训练提升系统性能,适应复杂无线环境。
102 65
|
5天前
|
传感器 算法 物联网
基于粒子群算法的网络最优节点部署优化matlab仿真
本项目基于粒子群优化(PSO)算法,实现WSN网络节点的最优部署,以最大化节点覆盖范围。使用MATLAB2022A进行开发与测试,展示了优化后的节点分布及其覆盖范围。核心代码通过定义目标函数和约束条件,利用PSO算法迭代搜索最佳节点位置,并绘制优化结果图。PSO算法灵感源于鸟群觅食行为,适用于连续和离散空间的优化问题,在通信网络、物联网等领域有广泛应用。该算法通过模拟粒子群体智慧,高效逼近最优解,提升网络性能。

热门文章

最新文章