【固定翼飞机】基于最优控制的固定翼飞机着陆控制器设计研究(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 中生成加权随机布尔矩阵

    我想生成一个5x5MatLab 中的矩阵仅由 1 和 0 组成 但是我希望能够设置任何值为 1 的可能性 我希望任何元素有 90 的机会为 1 而不是 0 然而我不希望总是有 90 的 1 和 10 的 0 我只是希望这种情况更有可能发生
  • MATLAB 写入多页 tiff 指数慢

    我正在尝试编写一个多页 tiff 文件 该文件是 128 像素 x 128 像素 x 122000 帧的 16 位无符号整数 ImageJ 或简短的 Python 脚本可以在快速机器上在一分钟内完成此操作 在同一台机器上 无论使用我尝试过的
  • 分析 mex 函数

    我刚刚用 c 将 Matlab 程序重写为 mex 函数以加快速度 并取得了出色的结果 这个优化决策是一个非常非常好的主意 无需线程即可将速度提高 20 倍 它仍然让我很好奇 mex 函数将时间花在什么上 并希望找出可能的瓶颈 我正在寻找一
  • 如何在输入对话框中预设光标或选择默认答案

    如果创建一个输入对话框inputdlg和默认答案 看起来像这样 我需要哪个回调命令才能使它看起来像那样 这里缺少很多文档 这是为客户提供的一种 豪华服务 但我认为如果它很容易实现的话那就太好了 这个问题实际上已经解决了 因为我发现有一些方便
  • 使用 MATLAB 读取 CSV 文件?

    我正在尝试使用 MATLAB 读取 csv 文件 这是我的代码 csvread out2 csv out2 csv 如下所示 03 09 2013 23 55 12 129 32 129 33 03 09 2013 23 55 52 129
  • 有没有办法在 mex 文件中制作 try-catch 语句?

    我知道在 C 中没有内置的方法来执行 try catch 语句 但是 MATLAB 是否为 MEX 文件提供了任何类型的 try catch 功能 我尝试使用Longjmp and Setjmp以中描述的方式http www di unip
  • 隐藏图中某些图形对象的 MATLAB 图例条目

    MATLAB 图例列出了绘图中的所有内容 包括您在绘图上放置的指南 绕过这个问题的软糖就是要做的 Plot Add legend Add guidelines 然而 MATLAB 将最新的行放在前面 这意味着指南将位于显示的数据之上 丑陋且
  • Octave/Matlab:向向量添加新元素

    有一个向量x我必须添加一个元素 newElem 有什么区别吗 x end 1 newElem and x x newElem x end 1 newElem更稳健一些 x x newElem 仅当x是行向量 如果它是列向量x x newEl
  • 在python中访问包含matlab类的.mat文件

    我有一个从 matlab 2012b 生成的 mat 文件 它包含一个带有用户定义的 matlab 类的变量 在 python 3 3 中使用 scipy io loadmat 加载文件时 我得到以下信息 mat scipy io load
  • MATLAB:让audioplayer()在函数结束后继续播放

    我正在使用使用以下子函数的代码 function playTone duration toneFreq Generate a tone samplesPerSecond 44100 the bit rate of the tone y si
  • iOS 将 URL 中的音频分成帧

    我正在 iOS 上开发一个简单的网络广播应用程序 具有非常简单的语音 音乐识别功能 主要思想是一个收音机 它播放来自 url 的信号 同时检查正在广播的信号类型 当它检测到语音时 它会改变频道等等 我使用 Storyboards 和 AVF
  • 使用二进制遮罩遮罩 RGB 图像

    我在 MATLAB 中读入了一个 RGB 图像 M x N x 3 矩阵 我还有一个图像的二进制掩码 M x N 矩阵 对于某些感兴趣的区域来说它只是 0 而其他地方都是 1 我正在尝试找出如何使用该二进制掩码来掩蔽 RGB 图像 我尝试过
  • 计算向量中连续 1 和 0 的数量

    在 Matlab 中我有一个如下所示的向量 0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 我现在要做的是统计这个向量中1的个数 连续的 1 算作 1 此外 我还想计算 1 之间 0 的平均值和中
  • Matlab,如何获取imagesc生成的结果?

    我读过一些类似的文章 但它们不是我想要的 得到imagesc之后的矩阵 https stackoverflow com questions 14364239 get the matrix after imagesc 14364434 143
  • 读取 MEX 文件中的 4D 数组

    我在 MATLAB 中有一个 4 维数组 我正在尝试访问 MEX 函数中的数组 下面创建 testmatrix 一个 4 维矩阵 已知数据为uint8 type Create a 4D array 2x 2y rgb 3 framenumb
  • 正确重载 stringbuf 以替换 MATLAB mex 文件中的 cout

    MathWorks 目前不允许您使用cout当 MATLAB 桌面打开时 从 mex 文件中读取 因为它们已重定向 stdout 他们当前的解决方法是提供一个函数 mexPrintf 他们要求你改用 http www mathworks c
  • 如何在 R 中导入 matlab 表

    我有一个matlab mat文件与表数据类型我想将其导入 R 中 我为此使用 readMat R 正在将其作为列表读取 之后有没有办法将列表转换为 R 中的数据帧或表格格式 当我使用as dataframe我收到以下错误 Error in
  • MATLAB:涉及大数的计算

    如何在 MATLAB 中执行涉及大量数字的计算 举一个简单的例子 任意精度计算器将显示 1 120 132 370 260 约为 1 56 但 MATLAB 无法执行此类计算 power 120 132 factorial 370 fact
  • 如何在matlab中绘制彩色一维直方图

    我有一个一维数组 X 其中包含相关系数的统计数据 我想绘制一个彩色直方图 我使用以下代码 histogram X 10 它可以创建具有单色的直方图 现在我想绘制一个直方图 其中每个条形都有不同的颜色 但 FaceColor 选项只能调整整个
  • 朴素分类器 matlab

    在 matlab 中测试朴素分类器时 即使我在相同的样本数据上进行训练和测试 我也会得到不同的结果 我想知道我的代码是否正确 是否有人可以帮助解释这是为什么 dimensionality reduction columns 6 U S V

随机推荐

  • 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代码及文章