【无人机】回波状态网络(ESN)在固定翼无人机非线性控制中的应用(Matlab代码实现)

news2024/12/28 5:39:11

💥💥💞💞欢迎来到本博客❤️❤️💥💥

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

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

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

无人机为执行各种军事和民用任务提供了平台。这包括情报、监视和侦察( ISR )、战场损伤评估和部队保护等军事应用。民用应用包括遥感、科学研究、搜救任务、边境巡逻、受灾地区监测、航空摄影、航空测绘岩土工程、植被生长分析、农作物除尘、精准农业、地形变化评估等。无人机产业是航天工业中发展最快的部门,民用无人机的使用也在显著增长。据估计,在未来十年中,无人机的支出将从目前全世界每年52亿美元的支出翻一番。一旦技术成熟,将无人机集成到国家空间系统( NAS )中,本文是为无人机开发自适应飞行控制器。包括多层感知器( MLP )和回声状态网络( ESN )。MLP用于离线模型,而ESN用于在线模型。MLP将成为焦点,因为它的自适应和循环行为允许它自然地坚持经典控制律,并完成反馈回路。ESN采用有监督的时序方法进行机器学习。这使得它成为解决诸如飞行控制器等动态系统问题的备选方案。MLP将主要用于误差校正。ESN是稀疏连接的,隐藏层有12个神经元,具有单一的输入和输出信号。隐藏层充当一个储液器,因为它表现出电流已知的40 %泄漏率。详细文章讲解见第4部分。

📚2 运行结果

 

 部分代码:

% NSF Twin Engine Doublet Data

clc
clear

% Read log file
Data = xlsread('Fri May 24 14-54-11 2013e.xlsx');

% Read in time (ms) 
t = Data(:,1)-27081;

% Convert milli seconds to seconds
tsec = t./1000;

% Convert seconds to minutes
tmin = tsec./60;

% Determine the point at which 1 Hz recording to 10 Hz recording
tdiff = diff(tsec);

%Change time set to only contain 10 Hz data
tsec2 = tsec(829:4557);

%Roll Rate
P = Data(:,32).*(180/pi());
Pflight = P(829:4557);

% Pitch Rate
Q = Data(:,33).*(180/pi());
Qflight = Q(829:4557);

% Yaw Rate
R = Data(:,34).*(180/pi());
Rflight = R(829:4557);

% Roll
Roll = Data(:,38).*(180/pi());
Roll_flight = Roll(829:4557);

% Pitch
Pitch = Data(:,39).*(180/pi());
Pitch_flight = Pitch(829:4557);

% Yaw
Yaw = Data(:,40).*(180/pi());
Yaw_flight = Yaw(829:4557);

% Acknowledgement Ratio
AckRatio = Data(:,49);
AckRatio_flight = AckRatio(829:4557);

% RSSI
RSSI = Data(:,50);
RSSI_flight = RSSI(829:4557);

% Surface 0
% Aileron
Surface0 = Data(:,51);
Sur0_flight = Surface0(829:4557).*(180/pi());

% Looking for constant surface deflection
Aileron1_diff = diff(Sur0_flight);

% Surface 1
% Elevator
Surface1 = Data(:,52).*(180/pi());
Sur1_flight = Surface1(829:4557);

% Looking for constant surface deflection
Elevator1_diff = diff(Sur1_flight);

% Surface 2
% Throttle
Surface2 = Data(:,53);
Sur2_flight = Surface2(829:4557);

% Looking for constant surface deflection
Throttle1_diff = diff(Sur2_flight);

% Surface 3
Surface3 = Data(:,54).*(180/pi());
Sur3_flight = Surface3(829:4557);

% Looking for constant surface deflection
Sur3_diff = diff(Sur3_flight);

% Surface 4
Surface4 = Data(:,55).*(180/pi());
Sur4_flight = Surface4(829:4557);

% Looking for constant surface deflection
Sur4_diff = diff(Sur3_flight);

% Surface 5
% Aileron
Surface5 = Data(:,56).*(180/pi());
Sur5_flight = Surface5(829:4557);

% Looking for constant surface deflection
Aileron2_diff = diff(Sur5_flight);

% Surface 6
% Elevator
Surface6 = Data(:,57).*(180/pi());
Sur6_flight = Surface6(829:4557);

% Looking for constant surface deflection
Elevator2_diff = diff(Sur6_flight);

% Surface 7
% Throttle
Surface7 = Data(:,58);
Sur7_flight = Surface7(829:4557);

% Looking for constant surface deflection
Throttle2_diff = diff(Sur7_flight);

% Roll 3-2-1-1
% 1567-1624 No Elevator Movement
subplot(3,2,1)
plot(tsec2(1567:1624),Sur0_flight(1567:1624))
xlabel('time (seconds)')
ylabel('deflection (degrees)')
title('Roll 3-2-1-1')

subplot(3,2,2)
plot(tsec2(1567:1624),Roll_flight(1567:1624))
title('Roll Response')
xlabel('time (seconds)')
ylabel('roll angle (degrees)')

% 1733-1805 No Elevator Movement
subplot(3,2,3)
plot(tsec2(1733:1805),Sur0_flight(1733:1805))
xlabel('time (seconds)')
ylabel('deflection (degrees)')

subplot(3,2,4)
plot(tsec2(1733:1805),Roll_flight(1733:1805))
xlabel('time (seconds)')
ylabel('roll angle (degrees)')
% 2563-2628 No Elevator Movement

subplot(3,2,5)
plot(tsec2(2563:2628),Sur0_flight(2563:2628))
xlabel('time (seconds)')
ylabel('deflection (degrees)')

subplot(3,2,6)
plot(tsec2(2563:2628),Roll_flight(2563:2628))
xlabel('time (seconds)')
ylabel('roll angle (degrees)')

% Pitch 3-2-1-1
% 908 - 980 No Aileron Movement
figure
subplot(3,2,1)
plot(tsec2(908:980),Sur1_flight(908:980))
xlabel('time (seconds)')
ylabel('deflection (degrees)')
title('Pitch 3-2-1-1')

subplot(3,2,2)
plot(tsec2(908:980),Pitch_flight(908:980))
title('Pitch Response')
xlabel('time (seconds)')
ylabel('roll angle (degrees)')

% 1068 - 1148 No Aileron Movement
subplot(3,2,3)
plot(tsec2(1068:1148),Sur1_flight(1068:1148))
xlabel('time (seconds)')
ylabel('deflection (degrees)')

subplot(3,2,4)
plot(tsec2(1068:1148),Pitch_flight(1068:1148))
xlabel('time (seconds)')
ylabel('roll angle (degrees)')

% 2380 - 2437 No Aileron Movement
subplot(3,2,5)
plot(tsec2(2380:2437),Sur1_flight(2380:2437))
xlabel('time (seconds)')
ylabel('deflection (degrees)')

subplot(3,2,6)
plot(tsec2(2380:2437),Roll_flight(2380:2437))
xlabel('time (seconds)')
ylabel('roll angle (degrees)')

figure (3), subplot(2,1,1),plot(tsec2(1567:1624),Sur0_flight(1567:1624),'k-','linewidth',3)
grid
ylabel('Aileron (deg)','fontsize',25)
title('Roll Doublet','fontsize',25),set(gca,'fontsize',25)
subplot(2,1,2),plot(tsec2(1567:1624),Roll_flight(1567:1624),'k-','linewidth',3)
ylabel('Roll Angle (deg)','fontsize',25),grid,set(gca,'fontsize',25)
xlabel('Time (sec)')

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/366691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端常见手写面试题集锦

实现迭代器生成函数 我们说迭代器对象全凭迭代器生成函数帮我们生成。在ES6中,实现一个迭代器生成函数并不是什么难事儿,因为ES6早帮我们考虑好了全套的解决方案,内置了贴心的 生成器 (Generator)供我们使用&#xff…

java面试题-IO流

基础IO1.如何从数据传输方式理解IO流?IO流根据处理数据的类型可以分为字节流和字符流。字节流字节流以字节(8位)为单位读写数据。字节流主要用于读写二进制文件,如图片、音频、视频等。Java中的InputStream和OutputStream就是字节…

写论文不用构建语料库!只需要福昕PDF阅读器高级搜索

写论文不用构建语料库!只需要福昕PDF阅读器高级搜索 文章目录写论文不用构建语料库!只需要福昕PDF阅读器高级搜索前言:“福昕语料库”使用前的准备:调用“语料库”:前言: 最近论文阅读可以借助NewBing的总…

【算法与数据结构(C语言)】栈和队列

文章目录 目录 前言 一、栈 1.栈的概念及结构 2.栈的实现 入栈 出栈 获取栈顶元素 获取栈中有效元素个数 检测栈是否为空,如果为空返回非零结果,如果不为空返回0 销毁栈 二、队列 1.队列的概念及结构 2.队列的实现 初始化队列 队尾入队列 队头出队列 获…

报表开发难上手?这里有一份 Fastreport 最新中文用户指南,请查收

Fast Reports,Inc.成立于1998年,多年来一直致力于开发快速报表软件,包括应用程序、库和插件。FastReport的报表生成器(VCL平台和.NET平台)、跨平台的多语言脚本引擎FastScript、桌面OLAP FastCube,如今都受到世界各地开…

Typecho COS插件实现网站静态资源存储到COS,降低本地存储负载

Typecho 简介Typecho 是一个简单、强大的轻量级开源博客平台,用于建立个人独立博客。它具有高效的性能,支持多种文件格式,并具有对设备的响应式适配功能。Typecho 相对于其他 CMS 还有一些特殊优势:包括可扩展性、不同数据库之间的…

IDA 实战--(2)熟悉工具

布局介绍 软件启动后会 有几个选项,一般直接选择Go 即可 之后的工作台布局如下 开始分析 分析的第一个,将PE 文件拖入工作区 刚开始接触,我们先保持默认选项,其它选项后面会详细讲解,点击OK 后,等待分析…

软件项目管理知识回顾---软件项目质量和资源管理

软件项目质量和资源管理 5.0质量管理 5.1质量管理模型 1.模型 boehm模型:可移植性,可使用性,可维护性McCall模型ISO体系认证5.2质量成本 1.含义:由于产品第一次不正常运行而产生的附加费用 预防成本和缺陷成本5.3质量管理 1.过程 …

Python opencv进行矩形识别

Python opencv进行矩形识别 图像识别中,圆形和矩形识别是最常用的两种,上一篇讲解了圆形识别,本例讲解矩形识别,最后的结果是可以识别出圆心,4个顶点,如下图: 左边是原始图像,右边是识别结果,在我i5 10400的CPU上,执行时间不到8ms。 识别出结果后,计算任意3个顶点…

【自监督论文阅读笔记】Unsupervised Learning of Dense Visual Representations

Abstract 对比自监督学习已成为无监督视觉表示学习的一种有前途的方法。通常,这些方法学习全局(图像级)表示,这些表示对于同一图像的不同视图(即数据增强的组合)是不变的。然而,许多视觉理解任务…

PDF文件怎么转图片格式?转换有技巧

PDF文件有时为了更美观或者更直观的展现出效果,我们会把它转成图片格式,这样不论是归档总结还是存储起来都会更为高效。有没有合适的转换方法呢?这就来给你们罗列几种我个人用过体验还算不错的方式,大家可以拿来参考一下哈。1.用电…

vm 网络配置

点击NAT设置,配置本台虚拟机ip(注意网关要在同一个网段),配置对应端口 然后添加映射端口: 然后选择网络适配器 选择vm8网卡 配置网卡静态ip #查看网卡 ip addr #修改网卡配置 cd /etc/sysconfig/network-scripts…

DevData Talks | 对谈谷歌云 DORA 布道师,像谷歌一样度量 DevOps 表现

本期 DevData Talks 我们请到来自 Google Cloud 谷歌云的 DORA 研究团队的嘉宾 Nathen Harvey与 Apache DevLake、CNCF DevStream 的海外社区负责人 Maxim 进行对谈。如果您关注 DevOps 的话,也许对这个团队有所耳闻。 DORA 的全称是 DevOps Research and Assessme…

mysql lesson1

常用命令 1:exit 退出mysql 2:uroot pENTER键,再输入密码,不被别人看见 3:完美卸载:双击安装包,手动删除program file中的mysql,手动删除Programedate里的mysql 4:use mysql 使用数据库 5:…

InstallAware Multi-Platform updated

InstallAware Multi-Platform updated 原生ARM:为您的内置设置、IDE和整个工具链添加了Apple macOS和Linux ARM构建。 本地化:引擎内多语言感知,可再分发工具,具有资产隔离功能,使您的IP保持安全。 模板:将…

通信算法复习题纲

通信算法复习题1、当信源发送信号满足以下哪一项条件时,接收端采用最小距离准则进行判决等价于采用最大后验概率准则进行判决?2、OFDM系统的正交性体现在哪个方面?3、模拟信号数字化过程中,哪一步会引入量化噪声?4、OF…

考研复试机试 | c++ | 王道复试班

目录n的阶乘 (清华上机)题目描述代码汉诺塔问题题目:代码:Fibonacci数列 (上交复试)题目代码:二叉树:题目:代码:n的阶乘 (清华上机) …

汽车电子社区交流宣传

http://t.csdn.cn/VSLO0http://t.csdn.cn/VSLO0 当今的汽车行业已经进入了数字化时代,汽车电子软件的开发变得越来越重要。在这个领域,开发者们需要应对各种挑战,包括复杂的硬件和软件交互、高效的嵌入式编程和安全性要求。为了帮助汽车电子…

Android Bluetooth(一)——蓝牙的开启和搜索

Android Bluetooth(一)——蓝牙的开启和搜索Android Bluetooth(一)——蓝牙的开启和搜索概览设置蓝牙蓝牙权限设置蓝牙查找设备查询已配对设备发现设备启用可检测性Android Bluetooth(一)——蓝牙的开启和搜…

Git系列——Git理论

概述Git 是一个开源的分布式版本控制系统, 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git没有中央版本库的概念,每个客户端都可成为版本库,内部采用全量方式对文件的每次提交建立快照并存储&#x…