【无人机设计与技术】四旋翼无人机的建模

摘要

本项目的目标是通过 Simulink 建模和仿真,研究四旋翼无人机的建模、姿态控制、定点位置控制及航点规划功能。无人机建模包含了动力单元模型、控制效率模型和刚体模型,并运用这些模型实现了姿态控制和位置控制。姿态控制为无人机的平稳飞行提供基础,而位置控制则帮助无人机进行精确的空间定位。通过给定一系列航点,完成了航点规划功能的验证。仿真结果表明,系统设计的控制算法简单高效,具有良好的跟踪效果和稳定性。

理论

四旋翼无人机是多旋翼飞行器的一种,其控制原理基于姿态和位置控制器的设计。

  1. 动力单元模型:主要包括四个电机和螺旋桨的动力学行为,通过电机的转速控制推力和转矩。

  2. 控制效率模型:用于描述推力和转矩与电机控制输入之间的关系。

  3. 刚体模型:包括无人机的动力学模型和运动学模型,动力学模型主要描述力和加速度之间的关系,运动学模型描述无人机的姿态和位置随时间的变化。

无人机控制器分为姿态控制器和位置控制器两部分。姿态控制是为了保持无人机的平衡,通过控制螺旋桨的速度来调整俯仰角、滚转角和偏航角。位置控制则是在姿态控制的基础上,通过调整无人机的速度和加速度,使其能够在空间中移动到指定的位置。
航点规划:在位置控制的基础上,实现无人机的航点规划,即无人机按照设定的航点序列飞行,依次达到目标点。

实验结果

  1. 姿态控制仿真:通过设定步进信号验证姿态控制器的性能,结果表明无人机可以迅速达到设定的姿态角度,且姿态控制具有较好的动态响应特性,无超调现象。

  2. 位置控制仿真:位置控制在 Simulink 仿真中表现出较好的稳定性,能够准确跟踪设定的参考轨迹,并在达到目标位置后保持稳定。

  3. 航点规划实验:通过设定多个航点,无人机可以在仿真中依次到达每个航点,证明航点规划功能实现。

  4. 实验中的示波器图像显示了姿态角度(俯仰、滚转、偏航)的动态变化过程,验证了控制系统在动态跟踪方面的有效性。

部分代码

以下是一个姿态控制的简化代码示例:

% 四旋翼无人机的姿态控制器仿真代码
clc;
clear all;
close all;% 参数设定
k_p = 1.2; % 比例增益
k_d = 0.8; % 微分增益
desired_pitch = 0; % 期望的俯仰角
desired_roll = 0; % 期望的滚转角
desired_yaw = 0; % 期望的偏航角% 仿真时间
sim_time = 10; % 姿态控制器的 PD 控制
for t = 1:sim_timeerror_pitch = desired_pitch - current_pitch;error_roll = desired_roll - current_roll;error_yaw = desired_yaw - current_yaw;pitch_control = k_p * error_pitch + k_d * (error_pitch - last_error_pitch);roll_control = k_p * error_roll + k_d * (error_roll - last_error_roll);yaw_control = k_p * error_yaw + k_d * (error_yaw - last_error_yaw);last_error_pitch = error_pitch;last_error_roll = error_roll;last_error_yaw = error_yaw;% 更新无人机姿态current_pitch = update_pitch(pitch_control);current_roll = update_roll(roll_control);current_yaw = update_yaw(yaw_control);
end

参考文献

  1. Bouabdallah, S., & Siegwart, R. (2007). Full control of a quadrotor. Proceedings of the 2007 IEEE International Conference on Robotics and Automation.

  2. Mellinger, D., & Kumar, V. (2011). Minimum snap trajectory generation and control for quadrotors. Proceedings of the 2011 IEEE International Conference on Robotics and Automation.

  3. Mahony, R., Kumar, V., & Corke, P. (2012). Multirotor aerial vehicles: Modeling, estimation, and control of quadrotor. IEEE Robotics & Automation Magazine.

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

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

相关文章

字体文件压缩

技术点 npm、html、font-spider 实现原理 个人理解:先引入原先字体,然后重置字符为空,根据你自己填充文字、字符等重新生成字体文件,因此在引入的时候务必添加自己使用的文字、字符等!!! 实…

高校体育场小程序|高校体育场管理系统系统|体育场管理系统小程序设计与实现(源码+数据库+文档)

高校体育场管理系统小程序 目录 体育场管理系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道…

ClickHouse入库时间与实际相差8小时问题

原因一&#xff1a;服务端未修改默认时区 解决方案&#xff1a; 1、找 ClickHouse 配置文件 config.xml&#xff0c;通常位于 /etc/clickhouse-server/ 目录。 2、编辑 config.xml 文件&#xff0c;找到 <timezone> 标签。如果标签不存在&#xff0c;需要手动添…

unity一键注释日志和反注释日志

开发背景&#xff1a;游戏中日志也是很大的开销&#xff0c;虽然有些日志不打印但是毕竟有字符串的开销&#xff0c;甚至有字符串拼接的开销&#xff0c;有些还有装箱和拆箱的开销&#xff0c;比如Debug.Log(1) 这种 因此需要注释掉&#xff0c;当然还需要提供反注释的功能&am…

避免学术欺诈!在ChatGPT帮助下实现严格引用并避免抄袭

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 当今的学术环境中&#xff0c;保持学术诚信至关重要。随着ChatGPT等技术的发展&#xff0c;写作变得更加高效&#xff0c;但也增加了不当使用的风险。严格的引用和避免抄袭不仅是学术道…

C++基础---类和对象(上)

1.类的定义 C程序设计允许程序员使用类&#xff08;class&#xff09;定义特定程序中的数据类型。这些数据类型的实例被称为对象 &#xff0c;这些实例可以包含程序员定义的成员变量、常量、成员函数&#xff0c;以及重载的运算符。语法上&#xff0c;类似C中结构体&#xff0…

Jmeter常用函数、逻辑控制器

目录 一、Jmeter常用函数 counter函数 machineName函数 machineIP函数 Random函数 RandomString函数 RandomDate函数 time函数 二、逻辑控制器 IF控制器 循环控制器 foreach控制器 仅一次控制器 事务控制器 聚合报告 随机控制器 随机顺序控制器 一、Jmeter常用…

趣味运动会分组记分指南

团队比赛时如何记分&#xff1f; 趣味运动会的组织过程中&#xff0c;分组和记分是两个关键环节。云分组小程序提供了一个高效的解决方案&#xff0c;无论是随机分组还是内定分组&#xff0c;都能轻松实现。系统还能自动统计积分和排名&#xff0c;极大简化了组织者的工作。 分…

如何在Python中计算移动平均值?

在这篇文章中&#xff0c;我们将看到如何在Python中计算移动平均值。移动平均是指总观测值集合中固定大小子集的一系列平均值。它也被称为滚动平均。 考虑n个观测值的集合&#xff0c;k是用于确定任何时间t的平均值的窗口的大小。然后&#xff0c;移动平均列表通过最初取当前窗…

Android Studio | 无法识别Icons.Default.Spa中的Spa

编写底部导航栏&#xff0c;涉及到Spa部分出现报红&#xff1a; 解决办法&#xff1a;在build.gradle.kts中引入图标依赖 dependencies {implementation "androidx.compose.material:material-icons-extended:<version>" }

Linux相关概念和重要知识点(9)(父进程、子进程、进程状态)

1.父进程、子进程 &#xff08;1&#xff09;父进程 CLI本质上是一款命令行界面的软件&#xff0c;是用户调用接口层面的程序&#xff08;上层&#xff0c;可以和系统调用接口做沟通&#xff09;&#xff0c;CLI和GUI是同级别的。用户的操作都是建立在CLI和GUI之上的。 但是…

SPI驱动OLED

OLED像素发光原理 OLED-有机发光半导体&#xff0c;在有机高分子聚合物的两端施加电压可发光,LED基于金属硅片发光&#xff0c;而OLED可以附于玻璃、塑料&#xff0c;可以用OLED做出曲面屏折叠屏&#xff0c;不同于LCD&#xff0c;OLED没有背光板&#xff0c;每个像素可以独立…

墙绘产品展示:基于SpringBoot的解决方案

5 系统实现 系统实现部分就是将系统分析&#xff0c;系统设计部分的内容通过编码进行功能实现&#xff0c;以一个实际应用系统的形式展示系统分析与系统设计的结果。前面提到的系统分析&#xff0c;系统设计最主要还是进行功能&#xff0c;系统操作逻辑的设计&#xff0c;也包括…

scrapy 爬取微博(五)【最新超详细解析】: 爬取微博文章

1 读取配置参数 爬取微博文章首先需要读取settings.py中的设置的配置变量&#xff0c;然后编写爬虫&#xff0c;读取的配置变量主要有爬取的关键词、时间范围、爬取区域等。 class WeiboSearchSpider(scrapy.Spider):name weibo_searchallowed_domains [weibo.com]settings…

记一次J1900主板短路报废

记一次J1900主板短路报废 一、主板样貌 J1900的CPU&#xff0c;板载4GB内存&#xff0c;64GB固态&#xff0c;双千M&#xff0c;又HDMI。就是这个电源线&#xff0c;右上角是用线连接的。 二、缘由 前两天接了一个转接板&#xff0c;为了给新增的机械硬盘供电。上午刚测试…

演讲干货整理:泛能网能碳产业智能平台基于 TDengine 的升级之路

在 7 月 26 日的 TDengine 用户大会上&#xff0c;新奥数能 / 物联和数据技术召集人袁文科进行了题为《基于新一代时序数据库 TDengine 助力泛能网能碳产业智能平台底座升级》的主题演讲。他从泛能网能碳产业智能平台的业务及架构痛点出发&#xff0c;详细分享了在数据库选型、…

【最新华为OD机试E卷-支持在线评测】字符串分割转换(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

Flux 最新最快ControlNet模型现身:法线贴图详细测评

原文链接&#xff1a;Flux目前最快ControlNet模型现身&#xff01;法线贴图详细测评 (chinaz.com) Flux目前最快ControlNet模型现身&#xff01; 上周一个名叫JasperAI的团队开源了他们的 3 款Flux ControlNet&#xff0c;分别是法线贴图&#xff0c;深度&#xff0c;和升频器…

8608 实现二叉排序树的各种算法(2)

### 思路 1. **插入新结点**&#xff1a;在二叉排序树中插入新结点。 2. **遍历二叉树**&#xff1a;实现前序、中序、后序遍历。 3. **中序遍历的非递归算法**&#xff1a;使用栈实现中序遍历。 4. **层次遍历二叉树**&#xff1a;使用队列实现层次遍历。 5. **查找给定关键字…

【U8+】安装用友U8+16.5后,应用服务管理中缺少加密服务。

【问题描述】 安装用友U8+后,应用服务管理中,没有加密服务。 导致软件无法登录到加密服务器。 【解决方法】 此问题多为CPU所影响: 1、深信服和霆智虚拟机需要开启HOST CPU选项。不开启此选项无法发挥CPU的全部功能,对U8和SQL Server的性能影响很大,所以在U8V16.5中要求开…