当前位置: 首页 > news >正文

【四旋翼飞行器】模拟四旋翼飞行器的平移和旋转动力学(Simulink仿真实现)

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、Simulink仿真及文献


💥1 概述

摘要-由于民用和军用无人机(Unmanned Aerial Vehicles, UAV)的兴趣日益增长,对自主微型飞行机器人的研究得到了显著加强。本文总结了OS4项目建模和控制部分的最终结果,该项目的重点是四旋翼设计和控制。文章介绍了一个考虑到飞行器运动引起的空气动力学系数变化的仿真模型。利用该模型找到的控制参数成功地应用于直升机上,无需重新调整。本文的最后部分描述了控制方法(积分反馈)和我们提出的四旋翼完全控制方案(姿态、高度和位置)。最后,介绍了自主起飞、悬停、降落和避障的结果。

飞行物体一直以来都对人类产生着巨大的吸引力,鼓励各种研究和发展。这个项目始于2003年,当时机器人学界对无人机(Unmanned Aerial Vehicles, UAV)的发展表现出越来越大的兴趣。在拥挤环境下设计和控制无人机的科学挑战以及缺乏现有解决方案的情况非常激发人们的积极性。另一方面,军事和民用市场上广泛的应用领域鼓励了与无人机相关项目的资金支持。从项目开始就决定专注于一种特定的配置:四旋翼飞行器。这种选择不仅源于其动力学特性,这代表了一个有吸引力的控制问题,还源于设计问题。将传感器、执行器和智能集成到一个轻量级的垂直飞行系统中,并保持良好的运行时间并不是一件简单的事情。

A. 现状
在过去几年中,四旋翼飞行器控制的现状发生了巨大的变化。解决这个问题的项目数量大幅增加。这些项目中的大多数是基于商用玩具,如Draganflyer [1],后来进行了修改以增加更多的传感和通信功能。只有少数几个团队解决了MFR设计问题。论文[2]列举了过去10年中一些最重要的四旋翼项目。Mesicopter项目[3]始于1999年,于2001年结束。它旨在研究厘米级四旋翼的可行性。E. Altug在他的论文中介绍了2003年的双摄像头视觉反馈控制[4]。

详细讲解见第4部分。

📚2 运行结果

Matlab代码:

% KF_setup.m           19/11/2013
%Quadrotor Sim 
% 
%
% Purpose: to declare initial values
%
%%
%% sensor noises
position_uncertainty_var = (20/3600*pi/180)^2*ones(3,1);
%% simulation set up
step_time = 0.5;                       % simulation step time(sec)
end_time  = 1000;                   % simulation end time (sec)
%end_time  = 86400;
%% attitude estimator gains
Tatd  = 0.5;                          % attitude estimator update time (sec)
Tqint = 0.5;                         % discrete quaternion integration period (sec)
Tsen_out = 0.5;                      % sensor output period (sec)
TkfProp = 0.5;                       % Kalman filter propagation period (sec)
KfupdatePeriodInCycle = 1;           % Kalman filter update period (propagation cycle)
f_bw_atd = 0.02;                     % attitude determination bandwidth (hz)
%f_bw_atd = 0.005;
zeta = 0.7;
Krp =  (2*pi*f_bw_atd)^2 * eye(3);
Kpp =  2*zeta*2*pi*f_bw_atd*eye(3);
qest0 = [0*1e-4; 0; 0; 1];                          % initial estimator quaternion
delta_west0 = zeros(3,1);                           % initial deviation of estimator angular rate (rad/sec)
max_delta_w = 0.1*pi/180;
delta_w_lim = 2e-4; %0.1/pi/Tqint;
delta_th_lim= 1e-4; %0.1*pi/180/Tqint;
q0 = [0; 0; 0; 1];   %% for estimate error standard deviation prediction calculation
wn=sqrt(diag(Krp));
k=sqrt((wn.^4+4*zeta^2)./(4*zeta*wn));
%% for using Lyapunove equation to solve for expected estimation error
C=[1 0];  K=[Kpp(1,1);Krp(1,1)];      A=[0    1;0 0]-K*C; B=K; 
H=[1 0];  K=[Kpp(1,1);Krp(1,1)]*Tatd; F=[1 Tatd;0 1]-K*H; G=K;
%% Kalman filter setups
Fmat = [eye(3) TkfProp*eye(3);zeros(3,3) eye(3)];
Hmat = [eye(3)  zeros(3,3)];
therr0 = max([abs(qest0(1:3)); 5*1e-4]);  % initial error estimate, assuming q0=[0 0 0 1]
P0 = diag([therr0^2*ones(1,3) 3e-6^2*ones(1,3)]);
R = TkfProp*KfupdatePeriodInCycle*diag(position_uncertainty_var);%1e-3^2*eye(3)*
Q = diag([1e-5^2*ones(1,3), 1e-7^2*ones(1,3)])*TkfProp;
max_rate = pi/180;
P0 = diag([1e-32*ones(1,3) 1e-5^2*ones(1,3)]);
Q = diag([1e-5^2*ones(1,3), 5e-6^2*ones(1,3)])*TkfProp;
max_bias = 1*pi/180/3600;
%% start simulation
Tcapt = Tsen_out;                              % sim variable capture rate (sec)

% KF_setup.m           19/11/2013
%Quadrotor Sim 

%
% Purpose: to declare initial values
%
%%
%% sensor noises
position_uncertainty_var = (20/3600*pi/180)^2*ones(3,1);
%% simulation set up
step_time = 0.5;                       % simulation step time(sec)
end_time  = 1000;                   % simulation end time (sec)
%end_time  = 86400;
%% attitude estimator gains
Tatd  = 0.5;                          % attitude estimator update time (sec)
Tqint = 0.5;                         % discrete quaternion integration period (sec)
Tsen_out = 0.5;                      % sensor output period (sec)
TkfProp = 0.5;                       % Kalman filter propagation period (sec)
KfupdatePeriodInCycle = 1;           % Kalman filter update period (propagation cycle)
f_bw_atd = 0.02;                     % attitude determination bandwidth (hz)
%f_bw_atd = 0.005;
zeta = 0.7;
Krp =  (2*pi*f_bw_atd)^2 * eye(3);
Kpp =  2*zeta*2*pi*f_bw_atd*eye(3);
qest0 = [0*1e-4; 0; 0; 1];                          % initial estimator quaternion
delta_west0 = zeros(3,1);                           % initial deviation of estimator angular rate (rad/sec)
max_delta_w = 0.1*pi/180;
delta_w_lim = 2e-4; %0.1/pi/Tqint;
delta_th_lim= 1e-4; %0.1*pi/180/Tqint;
q0 = [0; 0; 0; 1];   

%% for estimate error standard deviation prediction calculation
wn=sqrt(diag(Krp));
k=sqrt((wn.^4+4*zeta^2)./(4*zeta*wn));
%% for using Lyapunove equation to solve for expected estimation error
C=[1 0];  K=[Kpp(1,1);Krp(1,1)];      A=[0    1;0 0]-K*C; B=K; 
H=[1 0];  K=[Kpp(1,1);Krp(1,1)]*Tatd; F=[1 Tatd;0 1]-K*H; G=K;
%% Kalman filter setups
Fmat = [eye(3) TkfProp*eye(3);zeros(3,3) eye(3)];
Hmat = [eye(3)  zeros(3,3)];
therr0 = max([abs(qest0(1:3)); 5*1e-4]);  % initial error estimate, assuming q0=[0 0 0 1]
P0 = diag([therr0^2*ones(1,3) 3e-6^2*ones(1,3)]);
R = TkfProp*KfupdatePeriodInCycle*diag(position_uncertainty_var);%1e-3^2*eye(3)*
Q = diag([1e-5^2*ones(1,3), 1e-7^2*ones(1,3)])*TkfProp;
max_rate = pi/180;
P0 = diag([1e-32*ones(1,3) 1e-5^2*ones(1,3)]);
Q = diag([1e-5^2*ones(1,3), 5e-6^2*ones(1,3)])*TkfProp;
max_bias = 1*pi/180/3600;
%% start simulation
Tcapt = Tsen_out;                              % sim variable capture rate (sec)

🎉3 参考文献

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

[1]杨维,周冰倩,吴志刚,等.四旋翼飞行器的设计与仿真分析[J].计算机光盘软件与应用, 2014, 17(16):2.DOI:CNKI:SUN:GPRJ.0.2014-16-154.

[2]高燕,虞旦.四旋翼飞行器的建模及控制算法仿真[J].工业控制计算机, 2014(9):3.DOI:10.3969/j.issn.1001-182X.2014.09.045.

[3]乔维维.四旋翼飞行器飞行控制系统研究与仿真[D].中北大学,2012.DOI:10.7666/d.D316360.

🌈4 Matlab代码、Simulink仿真及文献

相关文章:

【四旋翼飞行器】模拟四旋翼飞行器的平移和旋转动力学(Simulink仿真实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Kaggle - LLM Science Exam(一):赛事概述、数据收集、BERT Baseline

文章目录 一、赛事概述1.1 OpenBookQA Dataset1.2 比赛背景1.3 评估方法和代码要求1.4 比赛数据集1.5 优秀notebook 二、BERT Baseline2.1 数据预处理2.2 定义data_collator2.3 加载模型,配置trainer并训练2.4 预测结果并提交2.5 deberta-v3-large 1k Wiki&#xff…...

mmap底层驱动实现(remap_pfn_range函数)

mmap底层驱动实现 myfb.c&#xff08;申请了128K空间&#xff09; #include <linux/init.h> #include <linux/tty.h> #include <linux/device.h> #include <linux/export.h> #include <linux/types.h> #include <linux/module.h> #inclu…...

品牌如何查窜货

当渠道中的产品出现不按规定区域销售时&#xff0c;这种行为就叫做窜货&#xff0c;窜货不仅会扰乱渠道的健康发展&#xff0c;损害经销商的利益&#xff0c;同时会滋生低价、假货的发生&#xff0c;有效的管控窜货&#xff0c;需要品牌先将窜货链店铺找出来&#xff0c;才能进…...

Java基于SpringBoot的车辆充电桩

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1、效果演示效果图 技术栈2、 前言介绍&#xff08;完整源码请私聊&#xff09;3、主要技术3.4.1…...

【ARM】(1)架构简介

前言 ARM既可以认为是一个公司的名字&#xff0c;也可以认为是对一类微处理器的通称&#xff0c;还可以认为是一种技术的名字。 ARM公司是专门从事基于RISC技术芯片设计开发的公司&#xff0c;作为知识产权&#xff08;IP&#xff09;供应商&#xff0c;本身不直接从事芯片生产…...

企业完善质量、环境、健康安全三体系认证的作用及其意义!

一、ISO三体系标准作用 ISO9001&#xff1a;质量管理体系&#xff0c;专门针对企业的质量管理&#xff0c;投标首选&#xff0c;很多大客户要求企业必备这项。 ISO14001&#xff1a;环境管理体系&#xff0c;针对企业的生产环境&#xff0c;排污&#xff0c;节能环保&#xf…...

<HarmonyOS第一课>运行Hello World——闯关习题及答案

判断题 1.DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。&#xff08; 对 &#xff09; 2.main_pages.json存放页面page路径配置信息。&#xff08; 对 &#xff09; 单选题 1.在stage模型中&#xff0c;下列配置文件属于AppScope文件夹的是&#xff1f;&#xff…...

NLP 02 RNN

一、RNN RNN(Recurrent Neural Network),中文称作循环神经网络它一般以序列数据为输入通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出。 传统神经网络(包括CNN)&#xff0c;输入和输出都是互相独立的。但有些任务&#xff0c;后续的输出和之前…...

@PostConstruct注解

PostConstruct注解 PostConstruct注解是javax.annotation包下的一个注解&#xff0c;用于标记一个方法&#xff0c;在构造函数执行之后&#xff0c;依赖注入(如Autowired&#xff0c;意味着在方法内部可以安全地使用依赖注入的成员变量&#xff0c;而不会出现空指针异常&#…...

拓世AI|中秋节营销攻略,创意文案和海报一键生成

秋风意境多诗情&#xff0c;中秋月圆思最浓。又是一年中秋节&#xff0c;作为中国传统的重要节日之一&#xff0c;中秋节的意义早已不再仅仅是一家团圆的节日&#xff0c;更是一场商业盛宴。品牌方们纷纷加入其中&#xff0c;希望能够借助这一节日为自己的产品赢得更多的关注和…...

基于知识蒸馏的两阶段去雨去雪去雾模型学习记录(三)之知识测试阶段与评估模块

去雨去雾去雪算法分为两个阶段&#xff0c;分别是知识收集阶段与知识测试阶段&#xff0c;前面我们已经学习了知识收集阶段&#xff0c;了解到知识阶段的特征迁移模块&#xff08;CKT)与软损失&#xff08;SCRLoss&#xff09;,那么在知识收集阶段的主要重点便是HCRLoss(硬损失…...

代码随想录二刷day46

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣139. 单词拆分二、力扣动态规划&#xff1a;关于多重背包&#xff0c;你该了解这些&#xff01; 前言 提示&#xff1a;以下是本篇文章正文内容&#x…...

计算机竞赛 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习行人重识别(person reid)系统 该项目…...

在线图片转BASE64、在线BASE64转图片

图片转BASE64、BASE64转图片...

什么是RPA?一文了解RPA发展与进程!

RPA&#xff08;Robotic Process Automation&#xff0c;机器人流程自动化&#xff09;是一种通过软件机器人模拟人类在计算机上执行重复性任务的技术。RPA的核心理念是将规则、过程和数据“机器人化”&#xff0c;从而实现对业务流程的自动化。RPA技术可以显著提高企业的工作效…...

【云备份项目】【Linux】:环境搭建(g++、json库、bundle库、httplib库)

文章目录 1. g 升级到 7.3 版本2. 安装 jsoncpp 库3. 下载 bundle 数据压缩库4. 下载 httplib 库从 Win 传输文件到 Linux解压缩 1. g 升级到 7.3 版本 &#x1f517;链接跳转 2. 安装 jsoncpp 库 &#x1f517;链接跳转 3. 下载 bundle 数据压缩库 安装 git 工具 sudo yum…...

工信部教考中心:什么是《研发效能(DevOps)工程师》认证,拿到证书之后有什么作用!(下篇)丨IDCF

拿到证书有什么用&#xff1f; 提高职业竞争力&#xff1a;通过学习认证培训课程可以提升专业技能&#xff0c;了解项目或产品研发全生命周期的核心原则&#xff0c;掌握端到端的研发效能提升方法与实践&#xff0c;包括组织与协作、产品设计与运营、开发与交付、测试与安全、…...

Linux进程相关管理(ps、top、kill)

目录 一、概念 二、查看进程 1、ps命令查看进程 1&#xff09;ps显示某个时间点的程序运行情况 2&#xff09;查看指定的进程信息 2、top命令查看进程 1&#xff09;信息统计区&#xff1a; 2&#xff09;进程信息区 3&#xff09;交互式命令 三、信号控制进程 四、…...

微服务技术栈-Ribbon负载均衡和Nacos注册中心

文章目录 前言一、Ribbon负载均衡1.LoadBalancerInterceptor&#xff08;负载均衡拦截器&#xff09;2.负载均衡策略IRule 二、Nacos注册中心1.Nacos简介2.搭建Nacos注册中心3.服务分级存储模型4.环境隔离5.Nacos与Eureka的区别 总结 前言 在上面那个文章中介绍了微服务架构的…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 &#xff08;1&#xff09;确定回溯算法函数的参数和返回值&#xff08;一般是void类型&#xff09; &#xff08;2&#xff09;因为是用递归实现的&#xff0c;所以我们要确定终止条件 &#xff08;3&#xff09;单层搜索逻辑 二…...

shell脚本质数判断

shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数&#xff09;shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数&#xff09; 思路&#xff1a; 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...

在ubuntu等linux系统上申请https证书

使用 Certbot 自动申请 安装 Certbot Certbot 是 Let’s Encrypt 官方推荐的自动化工具&#xff0c;支持多种操作系统和服务器环境。 在 Ubuntu/Debian 上&#xff1a; sudo apt update sudo apt install certbot申请证书 纯手动方式&#xff08;不自动配置&#xff09;&…...

JS设计模式(5): 发布订阅模式

解锁JavaScript发布订阅模式&#xff1a;让代码沟通更优雅 在JavaScript的世界里&#xff0c;我们常常会遇到这样的场景&#xff1a;多个模块之间需要相互通信&#xff0c;但是又不想让它们产生过于紧密的耦合。这时候&#xff0c;发布订阅模式就像一位优雅的信使&#xff0c;…...