【固定翼飞机】基于最优控制的固定翼飞机着陆控制器设计研究(Matlab代码实现)

2024-01-21

???????????????? 欢迎来到本博客 ❤️❤️????????

????博主优势: ???????????? 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️ 座右铭: 行百里者,半于九十。

???????????? 本文目录如下: ????????????

目录

????1 概述

????2 运行结果

????3 参考文献

????4 Matlab代码及文章


????1 概述

文献来源:

摘要
飞机控制中最困难的任务之一是实现安全舒适的着陆。事故统计数据表明,超过45%的通用航空事故发生在飞行的进场和着陆阶段。进一步分析显示,超过90%的事故是由飞行员引起的。失控也是其中33%事故的主要因素。在许多情况下,事故发生是因为未能在目标着陆时间内着陆。在假设飞机的横向和纵向动力学是解耦的,并且横向控制器负责处理飞机偏离跑道中心线的情况下,在本项目中,我们设计了一个固定翼飞机的纵向控制器,以跟踪期望的着陆轨迹。

介绍
飞机着陆过程由五个不同的阶段组成:基本腿、滑行坡度、抬头、着陆和着陆后滚动。在这五个阶段中,滑行坡度阶段和抬头阶段是最重要的[1]。在本项目中,我们设计了一个跟踪控制器,指导飞机实现平稳舒适的着陆。本项目考虑了着陆的抬头阶段。我们在本项目中使用的系统模型取自[1]。在该论文中,考虑了飞机的运动模型。为了得出系统模型,我们做出了以下假设:风扰动被假定为零,偏离平衡飞行状态为零,滑行路径角被假定为小,因此可以进行小角度近似,飞机速度恒定,纵向运动由副翼偏转控制,横向运动被忽略。详细文章见第4部分。

???? 2 运行结果

主函数代码:

Parameters % Load the given parameters
%sinit  = zeros(10,1); % S(tf) = C'PC, where C is eye(4). And P=[0.9 0 0 0;0 0.01 0 0;0 0 1 0;0 0 0 1]
s0 = [0.9 0 0 0 0.042 0 0 1 0 1];
v0 = [0,0.000142,0,0]';

%First solve for S using the DRE
[t1,s] = ode45(@DRE_S,[-Tf:0.01: 0],s0);
sf = flipud(s);

%calculate K using K = inv(R)*B'*S(t)
for i =1:length(s)
Kf(i,:)= (1/r)*B'*[sf(i,1) sf(i,2) sf(i,3) sf(i,4);
sf(i,2) sf(i,5) sf(i,6) sf(i,7);
sf(i,3) sf(i,6) sf(i,8) sf(i,9);
sf(i,4) sf(i,7) sf(i,9) sf(i,10)];
end

%solve for V using the DRE
[t2,v] = ode45(@(t,v) DRE_V(t,v,Kf,t1),[-Tf:0.01: 0],v0);


%closed loop simulation
tt = -flipud(t2);
vf = flipud(v);
%calucalte xdot
[tx, x] = ode45(@(t,x) Xstates(t,x,tt,vf,tt,Kf),[0:0.01:Tf],x0);

%calculate control input
for i=1:length(x)
u(i) = -Kf(i,:)*x(i,:)' + (1/r)*B'*vf(i,:)';
end

plot(tx,u,'LineWidth',1.2 )
grid on
title('elevator defelection angle')

reference = desired_trajectory(Tf);

subplot(2,2,1)
plot(tx,x(:,1),'LineWidth',1.2 )
hold on
plot(tx,reference(1,:),'LineWidth',1.2 )
grid on
legend('simulated','reference')
title('altitude')

subplot(2,2,2)
plot(tx,x(:,2),'LineWidth',1.2 )
hold on
plot(tx,reference(2,:),'LineWidth',1.2 )
grid on
legend('simulated','reference')
title('rate of descent')

subplot(2,2,3)
plot(tx,x(:,3),'LineWidth',1.2 )
hold on
plot(tx,reference(3,:),'LineWidth',1.2 )
grid on
legend('simulated','reference')
title('pitch angle')

subplot(2,2,4)
plot(tx,x(:,4),'LineWidth',1.2 )
hold on
plot(tx,reference(4,:),'LineWidth',1.2 )
grid on
legend('simulated','reference')
title('pitch rate')


%
plot(tx,u,'LineWidth',1.2 )
grid on
title('elevator defelection angle')


%%
subplot(2,2,1)
plot(tx,Kf(:,1),'LineWidth',1.2 )
grid on
title('altitude gain')

subplot(2,2,2)
plot(tx,Kf(:,2),'LineWidth',1.2 )
grid on
title('rate of descent gain')

subplot(2,2,3)
plot(tx,Kf(:,3),'LineWidth',1.2 )
grid on
title('pitch angle gain')

subplot(2,2,4)
plot(tx,Kf(:,4),'LineWidth',1.2 )
grid on
title('pitch rate gain')

%%
subplot(2,2,1)
e1 = x(:,1)-reference(1,:)';
plot(tx,e1,'LineWidth',1.2 )
grid on
title('error on altitude')


subplot(2,2,2)
e2 = x(:,2)-reference(2,:)';
plot(tx,e2,'LineWidth',1.2 )
grid on
title('error on rate of descent')


subplot(2,2,3)
e3 = x(:,3)-reference(3,:)';
plot(tx,e3,'LineWidth',1.2 )
grid on
title('error on pitch angle')

subplot(2,2,4)
e4 = x(:,4)-reference(4,:)';
plot(tx,e4,'LineWidth',1.2 )
grid on
title('error on pitch rate')

????3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

???? 4 Matlab代码及文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【固定翼飞机】基于最优控制的固定翼飞机着陆控制器设计研究(Matlab代码实现) 的相关文章

  • 如何在Matlab中自定义轮廓线?

    我正在准备一个等高线图 我应该在其中突出显示特定级别的等高线 例如 我的轮廓线值位于 1 和 1 之间 我想突出显示与值 0 相对应的线 我尝试使用以下过程来执行此操作 M c contourf longitude latitude del
  • 计算数组中接下来的 n 个元素的乘积

    我想计算下一个的乘积n矩阵的相邻元素 号码n要相乘的元素数应在函数的输入中给出 例如 对于此输入 我应该从第一个开始计算每 3 个连续元素的乘积 p ind max product 1 2 2 1 3 1 3 这给出了 1 2 2 2 2
  • 扩展 MATLAB 函数名称的最大长度

    我编写了一个 MATLAB 程序 可以动态创建自定义 MATLAB 函数 并使用以下命令在其他 MATLAB 实例中启动它们unix命令 我使用这个程序来自动化 fMRI 神经影像分析 使用 SPM8 for MATLAB 一切正常 但是
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • 使用mat2cell将MxN的矩阵划分为1xN大小的M矩阵

    我有一个大小为 MxN 的矩阵 比方说 1867x3 1867 行和 3 列 我想将其分成 1867 个大小为 1x3 的单元格 我使用了mat2cell X 1 1866 这里X是矩阵 1867x3 结果给出了两个单元格 一个单元格的大小
  • 如何找到在matlab中重复的矩阵的每一行的索引?

    我想找到矩阵中所有有重复项的行的索引 例如 A 1 2 3 4 1 2 3 4 2 3 4 5 1 2 3 4 6 5 4 3 要返回的向量将是 1 2 4 很多类似的问题建议使用unique函数 我已经尝试过 但我能得到的最接近我想要的功
  • 什么是 ANN 中的纪元以及它如何转换为 MATLAB 中的代码?

    我试图理解 并可视化 训练人工神经网络的时代到底是什么 我们有一个包含约 7000 个产品的训练集 其中有 10 个特征 输入 这些产品必须根据这 10 个输入分为 7 个类别 我们的 ANN 有 10 个输入 这些输入进入由 10 个神经
  • MATLAB 特征函数

    我很好奇哪里可以找到完整的描述FEATURE功能 它接受哪些论点 没有找到文档 我只听说过memstats and getpid 还要别的吗 gt gt which feature built in undocumented 注意 更完整的
  • 两个向量之间的欧氏距离(单行矩阵)

    我有两个向量 单行矩阵 假设我们已经知道长度len A x1 x2 x3 x4 x5 B y1 y2 y3 y4 y5 计算它们之间的欧几里德距离最快的方法是什么 我的第一次尝试是 diff A B sum 0 for column 1 l
  • 如何在 Matlab 中将数组打印到 .txt 文件?

    我才刚刚开始学习Matlab 所以这个问题可能非常基本 我有一个变量 a 2 3 3 422 6 121 9 4 55 我希望将值输出到 txt 文件 如下所示 2 3 3 422 6 121 9 4 55 我怎样才能做到这一点 fid f
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • 理解高斯混合模型的概念

    我试图通过阅读在线资源来理解 GMM 我已经使用 K 均值实现了聚类 并且正在了解 GMM 与 K 均值的比较 以下是我的理解 如有错误请指出 GMM 类似于 KNN 在这两种情况下都实现了聚类 但在 GMM 中 每个簇都有自己独立的均值和
  • 如何更改Plotyy第二轴的颜色和字体大小?

    我使用 MATLAB 的plotyy 函数绘制了两条曲线 AX H1 H2 plotyy voltage span amplitude voltage span Ca SR The problem is that I cannot chan
  • MATLAB - 冲浪图数据结构

    我用两种不同的方法进行了计算 对于这些计算 我改变了 2 个参数 x 和 y 最后 我计算了每种变体的两种方法之间的 误差 现在我想根据结果创建 3D 曲面图 x gt on x axis y gt on y axis Error gt o
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 如何在文本集中创建所有字符组合?

    例如 我有这样的文本集 第 1 栏 a b 第 2 栏 l m n 第 3 栏 v w x y 我想将它们组合起来以获得如下输出 alv alw alx aly amv amw amx amy 这将输出 24 种文本组合 如果我只使用前两列
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得
  • 对数据进行分布拟合 - MATLAB

    我正在尝试对从显微镜图像中收集的一些数据进行分布 我们知道 152 左右的峰值是由于泊松过程造成的 我想将分布拟合到图像中心的大密度 同时忽略高强度数据 我知道如何将正态分布拟合到数据 红色曲线 但它不能很好地捕获右侧的重尾 尽管泊松分布应
  • Matlab Builder JA - 将 Matlab 编译成 Java jar - 免费版本?

    请记住 我对 Matlab 一无所知 Matlab Builder JA 允许开发人员构建 Matlab 应用程序并将其导出到 Java jar 中 太棒了 我只需要生成一个 jar 然后就可以从其他 java 代码中使用它 有谁知道单罐包
  • 如何在 MATLAB 中绘制纹理映射三角形?

    我有一个三角形 u v 图像中的坐标 我想在 3D 坐标处绘制这个三角形 X Y Z 与图像中的三角形进行纹理映射 Here u v X Y Z都是具有三个元素的向量 代表三角形的三个角 我有一个非常丑陋 缓慢且令人不满意的解决方案 其中我

随机推荐

  • 2024史上最全Java面试八股文(带全部答案)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 面试官:分库分表后如何生成全局ID?

    分库分表后就不能使用自增 ID 来作为表的主键了 因为数据库自增 ID 只适用于单机环境 但如果是分布式环境 是将数据库进行分库 分表或数据库分片等操作时 那么数据库自增 ID 就会生成重复 ID 从而导致业务查询上的问题 所以此时 可以使
  • 详解Java信号量-Semaphore

    第1章 引言 大家好 我是小黑 今天 咱们一起来深入探讨一下Semaphore 在Java中 正确地管理并发是一件既挑战又有趣的事情 当谈到并发控制 大家可能首先想到的是synchronized关键字或者是ReentrantLock 但其实
  • JCMsuite应用:光学环形谐振腔模拟

    本案程演示了环形谐振腔的模拟 这种类型的集成光子器件 例如用作升 降滤波器或在传感应用中 当物质或粒子附着在环上时 通过测量其共振频率的位移来检测 对于集成光子电路中的无源光器件 s矩阵通常是研究的热点 它描述了通过端口 波导进入设备的电磁
  • 【卡尔曼滤波】具有梯度流的一类系统的扩散映射卡尔曼滤波器研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章
  • 第三届能源动力与控制工程国际学术会议(EPECE 2024)

    鹅厂第五周实习周记 中注协公布 全各省会计师事务所TOP5 华子三方 秋招投递华子你需要知道的十件事 兄弟们实习过年什么时候回家呢 评论区的朋友们有找实习的吗 我们的第2个实习生干了4个多月被老师叫回学校了 来过的都说好 C C 软开岗位
  • Eclipse、IntelliJ IDEA、PyCharm

    Eclipse IntelliJ IDEA PyCharm Eclipse IntelliJ IDEA和PyCharm是三种流行的集成开发环境 IDE 每个都有其特性和优点 1 Eclipse Eclipse是一款开源 春招求职 来多益网络
  • 搞懂 三次握手四次挥手

    计算机网络体系结构 在学习TCP 三次握手四次挥手之前 让我们先来看下计算机网络分层 主要分为OSI模型和TCP IP模型 OSI模型比较复杂且学术化 所以我们实际使用的TCP IP模型 以连接Mysql服务器为例理解这五层 应用层 应用层
  • 「优选算法刷题」:移动零

    嗨 这个假期罗根开始接触了算法 在为今年的蓝桥杯做准备 所以 开个新专栏 记录记录自己做算法题时的心得 一 题目 给定一个数组 nums 编写一个函数将所有 0 移动到数组的末尾 同时保持非零元素的相对顺序 请注意 必须在不复制数组的情况下
  • 「优选算法刷题」:快乐数

    一 题目 编写一个算法来判断一个数 n 是不是快乐数 快乐数 定义为 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 然后重复这个过程直到这个数变为 1 也可能是 无限循环 但始终变不到 1 如果这个过程 结果为 1 那么这个
  • 【固定翼飞行器】用于计算固定翼飞机空气动力学的紧凑涡旋格方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 题解 | #获取员工其当前的薪水比其manager#

    我为什么拒了华为 offer 国家智能设计与数控技术创新中心 英语好技术烂的top2工科硕就业迷茫 坐等消息 华为ICT无线网络产品线面经 已完结 华为面经 ICT计算产品线 华为计算产品线实习面试 通软 凉凉 软开还是run开 国企银行的
  • 【自适应滤波】一种接近最佳的自适应滤波器,用于突发系统变化研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • 从决策流到数据洞察:JVS规则引擎与智能BI的1.16更新详

    美团到店前端日常实习面经 4 信息安全学习 渗透测试知识点 汽车领域中软件技术方向就业分析 1 整车厂 华为海思光芯片2021校招笔经面经 许愿一个offer 6 中信银行总行大数据中心背调bg统计 春招背水一战 一定要尽快行动起来 华为开
  • 详解toLowerCase(判断字符串相等)

    一 toLowerCase 函数简介 toLowerCase 是一个在多个编程语言中都存在的字符串方法 它的作用是将字符串中的所有大写字母转换为对应的小写字母 常用于文本处理 搜索和比较等情况 以确保字符串的一致性和非大小写敏感的操作 二
  • 题解 | #网易云音乐推荐(网易校招笔试真题)#

    题解 人民币转换 import syss input split mp 1 壹 2 贰 3 叁 4 肆 5 伍 6 陆 蔚来 AI数据库开发实习一面1 11 1 自我介绍2 科大讯飞比赛做了什么 是用到了讯飞平台的某些功能吗3 API开放平
  • 微信公众号AI爆文项目入门

    今日 尝试了进行AI爆文的项目 其核心逻辑是不依赖于传统的打造个人IP 而是使用ChatGPT 文心一言等大语言模型进行创作 并发表到微信公众号平台 实现低粉爆文的效果 通过系统流量池的推荐来实现收益 一篇10W 的文章的收益在800到几千
  • DockerCompose - 微服务项目部署全过程(最佳实践)

    目录 一 微服务项目部署 1 1 项目介绍 1 2 准备 MySQL 初始化文件 1 3 pom xml 插件 1 4 测试工作 1 5 编写 Dockerflie 文件 1 6 编写 DockerCompose yml 文件 1 7 修改
  • 网上订货管理系统功能列表|企业手机订单管理软件

    网上 订货 管理 系统功能列表 企业手机订单管理软件 后台功能列表 后台支持手机版本 订货APP 管理订单的APP 后台登陆 输入账号密码登录企业订货管理软件系统 后台首页 显示近日 月 年订单统计 和收款欠款等统计 订单模块 新建订单 通
  • 【固定翼飞机】基于最优控制的固定翼飞机着陆控制器设计研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章