【无人机设计与控制】基于MATLAB的四旋翼无人机PID双闭环控制研究

摘要

本文基于MATLAB/Simulink环境,对四旋翼无人机进行了PID双闭环控制设计与仿真研究。通过分析四旋翼无人机的动力学模型与运动学模型,建立了姿态和位置双闭环控制系统,以实现无人机的稳定飞行与精确轨迹跟踪。仿真实验验证了该控制策略的有效性,表明系统具有良好的动态性能和稳态精度。

理论

1. 四旋翼无人机模型

四旋翼无人机模型由以下两部分组成:

  • 动力学模型: 描述了无人机的力和力矩方程:

  • 运动学模型: 描述无人机的位姿变化:

2. PID双闭环控制

为了实现姿态和位置的精确控制,采用双闭环PID控制:

  • 内环控制(姿态控制):用于控制无人机的俯仰、横滚和偏航角。

  • 外环控制(位置控制):用于控制无人机的三维空间位置。

实验结果

  • 姿态控制 仿真结果显示,在给定姿态变化指令后,系统能够快速响应,姿态误差迅速收敛,且无明显超调。

  • 位置控制 在位置轨迹跟踪仿真中,无人机能够精确跟随参考轨迹,系统位置误差在稳态时接近零。

  • 抗扰性能 加入外界扰动后,控制系统仍能维持稳定,无人机姿态和位置能够迅速恢复到平衡状态。

部分代码

% 初始化参数
Kp_pos = 1.2; Ki_pos = 0.5; Kd_pos = 0.8; % 位置控制器参数
Kp_att = 1.5; Ki_att = 0.7; Kd_att = 1.0; % 姿态控制器参数

% 时间步长
Ts = 0.01;
time = 0:Ts:10;

% 初始状态
pos_ref = [0; 0; -5]; % 期望位置
att_ref = [0; 0; 0]; % 期望姿态

pos = [0; 0; 0];
att = [0; 0; 0];
error_int_pos = [0; 0; 0];
error_int_att = [0; 0; 0];

for k = 1:length(time)
    % 计算位置误差
    error_pos = pos_ref - pos;
    error_int_pos = error_int_pos + error_pos * Ts;
    pos_cmd = Kp_pos * error_pos + Ki_pos * error_int_pos + Kd_pos * (error_pos / Ts);
    
    % 姿态控制
    error_att = att_ref - att;
    error_int_att = error_int_att + error_att * Ts;
    att_cmd = Kp_att * error_att + Ki_att * error_int_att + Kd_att * (error_att / Ts);
    
    % 更新无人机动态模型
    [pos, att] = quadcopter_dynamics(pos_cmd, att_cmd);
end

% 动态模型
function [pos, att] = quadcopter_dynamics(pos_cmd, att_cmd)
    % 简化的动力学模型更新
    pos = pos + 0.1 * pos_cmd; % 更新位置
    att = att + 0.1 * att_cmd; % 更新姿态
end

参考文献

  1. Bouabdallah, S., Murrieri, P., & Siegwart, R. (2004). Design and Control of an Indoor Micro Quadrotor. IEEE International Conference on Robotics and Automation, 4393-4398.

  2. Castillo, P., Lozano, R., & Dzul, A. (2005). Modelling and Control of Mini-Flying Machines. Springer Tracts in Advanced Robotics.

  3. Hoffmann, G. M., Huang, H., & Waslander, S. L. (2008). Quadrotor Helicopter Flight Dynamics and Control: Theory and Experiment. Proceedings of the AIAA Guidance, Navigation, and Control Conference.

(文章内容仅供参考,具体效果以图片为准)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

强大的正则表达式——Easy

进入题目界面输入难度1后,让我们输入正则表达式(regex): 目前不清楚题目要求,先去下载附件查看情况: import re import random# pip install libscrc import libscrcallowed_chars "0123456789()|*&q…

pytest | 框架的简单使用

这里写目录标题 单个文件测试方法执行测试套件的子集测试名称的子字符串根据应用的标记进行选择 其他常见的测试命令 pytest框架的使用示例 pytest将运行当前目录及其子目录中test_*.py或 *_test.py 形式的所有 文件 文件内的函数名称可以test* 或者test_* 开头 单个文件测试…

【安卓恶意软件检测-论文】DroidEvoler:自我进化的 Android 恶意软件检测系统

DroidEvolver:自我进化的 Android 恶意软件检测系统 摘要 鉴于Android框架的频繁变化和Android恶意软件的不断演变,随着时间的推移以有效且可扩展的方式检测恶意软件具有挑战性。为了应对这一挑战,我们提出了DroidEvolver,这是一…

Vulnhub靶场 Billu_b0x 练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 文件包含2. SQL注入3. 文件上传4. 反弹shell5. 提权(思路1:ssh)6. 提权(思路2:内核)7. 补充 0x04 总结 0x00 准备 下载链接&#…

LabVIEW弧焊参数测控系统

在现代制造业中,焊接技术作为关键的生产工艺之一,其质量直接影响到最终产品的性能与稳定性。焊接过程中,电流、电压等焊接参数的精确控制是保证焊接质量的核心。基于LabVIEW开发的弧焊参数测控系统,通过实时监控和控制焊接过程中关…

CentOS网络配置

上一篇文章:VMware Workstation安装Centos系统 在CentOS系统中进行网络配置是确保系统能够顺畅接入网络的重要步骤。本文将详细介绍如何配置静态IP地址、网关、DNS等关键网络参数,以帮助需要的人快速掌握CentOS网络配置的基本方法和技巧。通过遵循本文的…

低速接口项目之串口Uart开发(一)——串口UART

本节目录 一、串口UART 二、串口协议 三、串口硬件 四、往期文章链接本节内容 一、串口UART 串口UART,通用异步收发传输器(Universal Asynchronnous Receiver / Transmitter),一种异步收发传输器,全双工传输。数据发送时,将并行…

Uni-APP+Vue3+鸿蒙 开发菜鸟流程

参考文档 文档中心 运行和发行 | uni-app官网 AppGallery Connect DCloud开发者中心 环境要求 Vue3jdk 17 Java Downloads | Oracle 中国 【鸿蒙开发工具内置jdk17,本地不使用17会报jdk版本不一致问题】 开发工具 HBuilderDevEco Studio【目前只下载这一个就…

SQL 外连接

1 外连接 外连接是一种用于结合两个或多个表的方式,返回至少一个表中的所有记录。 左外连接 LEFT JOIN,左表为驱动表,右表为从表。返回驱动表的所有记录以及从表中的匹配记录。如果从表没有匹配,则结果中从表的部分为NULL。 右…

笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像

很简单的起因,我的东西最终需要跑在amd64上,但是因为mac的架构师arm64,所以直接构建好的代码是没办法跨平台运行的。直接在arm64上pull下来的docker镜像也都是arm64架构。 检查镜像架构: docker inspect 8135f475e221 | grep Arc…

SAP+Internet主题HTML样式选择

SAP目前只支持三种HTML样式选择: 样式一 背景色:深色,蓝 特点:适中型排列,与SAP界面排列相同,富含UI特征,整齐美观 URL地址:http://cn1000-sap-01.sc.com:8000/sap/bc/gui/sap/it…

使用 Qt 实现基于海康相机的图像采集和显示系统(不使用外部视觉库,如Halcon\OpenCv)[工程源码联系博主索要]

本文将梳理一个不借助外部视觉库(如 OpenCV/Halcon)的海康相机图像采集和显示 Demo。该程序直接使用 Qt GUI 来显示图像。通过海康 MVS SDK 实现相机的连接、参数设置、图像采集和异常处理等功能,并通过 Qt 界面展示操作结果。 1. 功能概述 …

C# 异步Task异常处理和堆栈追踪显示

Task的问题 在C#中异步Task是一个很方便的语法,经常用在处理异步,例如需要下载等待等方法中,不用函数跳转,代码阅读性大大提高,深受大家喜欢。 但是有时候发现我们的异步函数可能出现了报错,但是异常又没…

31.3 XOR压缩和相关的prometheus源码解读

本节重点介绍 : xor 压缩value原理xor压缩过程讲解xor压缩prometheus源码解读xor 压缩效果 xor 压缩value原理 原理:时序数据库相邻点变化不大,采用异或压缩float64的前缀和后缀0个数 xor压缩过程讲解 第一个值使用原始点存储计算和前面的值的xor 如果XOR值为0&…

游戏引擎学习第16天

视频参考:https://www.bilibili.com/video/BV1mEUCY8EiC/ 这些字幕讨论了编译器警告的概念以及如何在编译过程中启用和处理警告。以下是字幕的内容摘要: 警告的定义:警告是编译器用来告诉你某些地方可能存在问题,尽管编译器不强制要求你修复…

解析煤矿一张图

解析煤矿一张图 ​ 煤矿一张图是指通过数字化、智能化技术将煤矿的各项信息、数据和资源进行集中展示和管理,形成一个综合的可视化平台。这一平台将矿井的地理信息、设备状态、人员位置、安全生产、环境监测等信息整合成一个统一的“图形”,以便于管理者…

Python学习27天

字典 dict{one:1,two:2,three:3} # 遍历1: # 先取出Key for key in dict:# 取出Key对应的valueprint(f"key:{key}---value:{dict[key]}")#遍历2,依次取出value for value in dict.values():print(value)# 遍历3:依次取出key,value …

【伪造检测】Noise Based Deepfake Detection via Multi-Head Relative-Interaction

一、研究动机 [!note] 动机:目前基于噪声的检测是利用Photo Response Non-Uniformity (PRNU)实现的,这是一种由于相机感光传感器而造成的缺陷噪声,主要用图像的源识别,在伪造检测的任务中并没有很好的表现。因此在文中提出了一种基…

【eNSP】企业网络架构实验——vlan间的路由通信(三)

VLAN间的路由是指不同VLAN之间的通信,通常VLAN是用来分割网络流量和提高网络安全性的。 一、VLAN 1. 什么是VLAN? VLAN,全称是虚拟局域网(Virtual Local Area Network),是一种将物理局域网(LA…

github 模型下载方法

github 模型权重,如果是项目下载,pth文件有时下载后只有1kb 本人测试ok下载方法: 点击view raw,然后可以下载模型权重文件了。