【无人机设计与控制】滑模控制、反步控制、传统PID四旋翼无人机轨迹跟踪控制仿真

摘要
本文基于滑模控制、反步控制和传统PID控制,设计了针对四旋翼无人机的轨迹跟踪控制系统。通过对比这三种控制策略在四旋翼无人机轨迹跟踪中的表现,分析了各自的优缺点和适用场景。仿真结果表明,滑模控制具有更强的鲁棒性,反步控制在响应速度上具有优势,而传统PID控制方法相对简单易实现但精度略逊一筹。
理论
四旋翼无人机的运动控制是一个复杂的非线性系统问题,传统PID控制策略在某些线性场景下有着较好的效果,但在面对复杂轨迹跟踪任务时,受非线性因素和外界干扰影响较大。为了提高控制系统的鲁棒性和跟踪精度,本文引入了滑模控制和反步控制策略。
-
滑模控制:通过设计滑模面,使得系统状态能够快速到达并保持在该面上,进而实现对系统的不确定性和外部扰动的鲁棒控制。
-
反步控制:通过将控制目标逐步分解,逐步设计虚拟控制量,使系统从高阶逐步稳定到低阶,最终达到全局控制目标。
-
传统PID控制:经典的比例-积分-微分控制器,通过调整三个参数,调节系统的误差响应。
实验结果
通过Matlab仿真,对比了三种控制策略的轨迹跟踪性能。以下为部分结果:
-
在X轴、Y轴和Z轴的轨迹跟踪精度对比中,滑模控制表现出了最小的误差波动,反步控制的误差次之,传统PID控制的误差相对较大。
-
反步控制在系统响应时间方面优于滑模控制,PID控制方法的响应时间相对较慢。
-
对于抗干扰能力,滑模控制具有显著优势,能够更好地应对外部扰动。

部分代码
% 四旋翼无人机轨迹跟踪PID控制仿真代码
% 定义系统参数
Kp = [1.2, 1.2, 1.5]; % 比例增益
Ki = [0.1, 0.1, 0.1]; % 积分增益
Kd = [0.3, 0.3, 0.3]; % 微分增益% 初始化变量
X_ref = 10; Y_ref = 10; Z_ref = 10; % 参考轨迹
X = 0; Y = 0; Z = 0; % 初始位置
dt = 0.01; % 时间步长
t = 0:dt:10; % 仿真时间% PID 控制器
for i = 1:length(t)% 误差计算e_x = X_ref - X(i);e_y = Y_ref - Y(i);e_z = Z_ref - Z(i);% PID 控制计算u_x = Kp(1) * e_x + Ki(1) * sum(e_x) * dt + Kd(1) * (e_x - X(i)) / dt;u_y = Kp(2) * e_y + Ki(2) * sum(e_y) * dt + Kd(2) * (e_y - Y(i)) / dt;u_z = Kp(3) * e_z + Ki(3) * sum(e_z) * dt + Kd(3) * (e_z - Z(i)) / dt;% 更新位置X(i+1) = X(i) + u_x * dt;Y(i+1) = Y(i) + u_y * dt;Z(i+1) = Z(i) + u_z * dt;
end% 绘制结果
figure;
plot3(X, Y, Z);
xlabel('X'); ylabel('Y'); zlabel('Z');
title('PID控制的四旋翼无人机轨迹跟踪');
参考文献
❝
Slotine, J. J. E., & Li, W. (1991). Applied Nonlinear Control. Prentice-Hall.
Isidori, A. (1995). Nonlinear Control Systems. Springer.
Khalil, H. K. (2002). Nonlinear Systems. Prentice Hall.
Madani, T., & Benallegue, A. (2006). "Backstepping Control for a Quadrotor Helicopter". In IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).
Utkin, V. I. (1992). Sliding Modes in Control Optimization. Springer-Verlag.
(文章内容仅供参考,具体效果以图片为准)
相关文章:
【无人机设计与控制】滑模控制、反步控制、传统PID四旋翼无人机轨迹跟踪控制仿真
摘要 本文基于滑模控制、反步控制和传统PID控制,设计了针对四旋翼无人机的轨迹跟踪控制系统。通过对比这三种控制策略在四旋翼无人机轨迹跟踪中的表现,分析了各自的优缺点和适用场景。仿真结果表明,滑模控制具有更强的鲁棒性,反步…...
MongoDB 介绍
一、MongoDB 介绍 MongoDB 是一个开源的、面向文档的数据库管理系统。它采用了灵活的数据模型,以类似 JSON 的文档形式存储数据,具有高可扩展性、高性能和丰富的功能。 主要特点包括: 灵活的数据模型:文档型数据库允许存储不同…...
计算机网络:物理层 —— 物理层概述
文章目录 物理层功能物理层接口特性常见特性 相关概念 物理层(Physical Layer)是OSI(Open Systems Interconnection)模型的第一层,负责提供原始比特流传输的服务。它定义了硬件接口的电气、机械、功能和过程特性&#…...
HTTP的工作原理
HTTP(Hypertext Transfer Protocol)是一种用于在计算机网络上传输超文本数据的应用层协议。它是构成万维网的基础之一,被广泛用于万维网上的数据通信。(超文本(Hypertext)是用超链接的方法,将各种不同空间的文字信息组…...
缓存数据减轻服务器压力
问题:不是所有的数据都需要请求后端的 不是所有的数据都需要请求后端的,有些数据是重复的、可以复用的解决方案:缓存 实现思路:每一个分类为一个key,一个可以下面可以有很多菜品 前端是按照分类查询的,所以我们需要通过分类来缓存缓存代码 /*** 根据分类id查询菜品** @pa…...
【自动驾驶】控制算法(十二)横纵向综合控制 | 从理论到实战全面解析
写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…...
Python基础之List列表用法
1、创建列表 names ["张三","李四","王五","Mary"] 2、列表分片 names[1]:获取数组的第2个元素。 names[1:3]:获取数组的第2、第3个元素。包含左侧,不包含右侧。 names[:3]等同于names[0:3]&…...
视觉检测开源库-功能包框架搭建
chapt9/chapt9_ws/src,接着在目录下新建 yolov5_ros2 功能包,并添加相关依赖,完整命令如下: ros2 pkg create yolov5_ros2 --build-type ament_python --dependencies rclpy yolov5 cv_bridge sensor_msgs vision_msgs cv2 --lic…...
pytest的基础入门
pytest判断用例的成功或者失败 pytest识别用例失败时会报AssertionError或者xxxError错误,当捕获异常时pytest无法识别到失败的用例 pytest的fixture夹具 pytest的参数化 #coding:utf-8 import pytestfrom PythonProject.pytest_test.funcs.guess_point import ge…...
(31)非零均值信号的时域分析:均值、方差、与功率
文章目录 前言一、使用MATLAB生成余弦波并画图二、计算信号的均值、方差、与功率三、结果分析 前言 本文对叠加了直流分量的一段整周期余弦信号进行时域分析,使用MATLAB进行信号生成,并计算其均值、方差、与功率。最后给出对计算结果的分析,…...
架设传奇SF时提示此服务器满员,GEE引擎点开始游戏弹出服务器满员的解决方法
昨天一个朋友在架设GEE的传奇服务端时遇到一个奇怪的问题,就是在服务器外网架设时,建好角色点开始游戏提示此服务器满员,这个问题一般比较少见,而且出现的话一般都是GEE引擎的版本。 他折腾了半天,一直没进游戏&#x…...
QT day06
在QT使用数据库实现学生管理系统 头文件: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QSqlDatabase> #include <QSqlQuery> #include <QSqlRecord> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAME…...
微信小程序-npm支持-如何使用npm包
文章目录 1、在内建终端中打开2、npm init -y3、Vant Weapp4、通过 npm 安装5、构建 npm 1、在内建终端中打开 Windows PowerShell 版权所有 (C) Microsoft Corporation。保留所有权利。尝试新的跨平台 PowerShell https://aka.ms/pscore6PS C:\Users\dgq\WeChatProjects\minip…...
Spring Cloud Stream 3.x+kafka 3.8整合
Spring Cloud Stream 3.xkafka 3.8整合,文末有完整项目链接 前言一、如何看官方文档(有深入了解需求的人)二、kafka的安装tar包安装docker安装 三、代码中集成创建一个测试topic:testproducer代码producer配置(配置的格式,上篇文章…...
JavaScript中的数组
1.数组的概念 数组可以把一组相关的数据一起存放,并提供方便的访问/获取方式数组是指一组数据的集合,其中每个数据称之为元素(element),在数组中可以存放任意类型的元素,数组是一种将一组数据存储在单个变量名下的优雅方式。 2.…...
UE5运行时动态加载场景角色动画任意搭配-场景角色相机动画音乐加载方法(三)
1、将场景打包为Pak并加载 1、参考这篇文章将场景打包为pak,UE4打包并加载Pak-Windows/iOS/Android不同平台Editor/Runtime不同运行模式兼容 2、在Mount Pak后直接打开Map即可 void UMapManager::OpenMap(FString Path) {UWorld* World = UGlobalManager::GetInstance()->…...
c# 中 中文、英文、数字、空格、标点符号占的字符大小
在C#中,中文、英文、数字、空格和标点符号在不同编码下所占的字节大小是不一样的。常见的编码有UTF-8、UTF-16、GB2312等。以下是在不同编码下各种字符类型所占的字节大小: UTF-8: 中文字符:3个字节 英文字符:1个字…...
前端_003_js扫盲
文章目录 var,let,const严格模式数据类型运算符事件常用对象函数绑定call() ,apply(),bind() 闭包浏览器中事件循环回调和异步Promiseasync和await DOMBOMAjax var,let,const let是var的升级版本,对于块作用域,var无法进行限制,let不会存在该…...
ValueError: You cannot perform fine-tuning on purely quantized models.
在使用peft 微调8bit 或者4bit 模型的时候,可能会报错: You cannot perform fine-tuning on purely quantized models. Please attach trainable adapters on top of the quantized model to correctly perform fine-tuning. Please see: https://huggi…...
DELL R720服务器阵列数据恢复,磁盘状态为Foreign
服务器无法正常进入系统,物理磁盘状态变成了Foreign 虚拟磁盘状态变成了Failed 阵列已经丢失了,需要手工强制导入外部配置 单击 Main Menu 屏幕上的 Configuration Management。单击 Manage Foreign Configuration 单击 Preview Foreign Configurati…...
百度网盘直链解析工具:3分钟突破限速实现满速下载
百度网盘直链解析工具:3分钟突破限速实现满速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾为百度网盘的下载速度而烦恼?非会员用户经常…...
Swagger2Word终极指南:3种方法实现API文档自动化转换
Swagger2Word终极指南:3种方法实现API文档自动化转换 【免费下载链接】swagger2word 项目地址: https://gitcode.com/gh_mirrors/swa/swagger2word 还在为手动编写API文档而烦恼吗?Swagger2Word为你提供了一站式自动化解决方案,将Swa…...
3倍效率提升:Gofile批量下载工具实战指南
3倍效率提升:Gofile批量下载工具实战指南 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader 您是否曾为Gofile平台的文件下载效率低下而烦恼?当面对大文…...
DLP/SLA光固化3D打印技术解析与Ember打印机实战指南
1. DLP/SLA 3D打印技术深度解析:从光与树脂的对话说起如果你是从FDM(熔丝制造)打印转向树脂打印的,那感觉就像从开手动挡卡车换到了开精密数控机床。DLP(数字光处理)和SLA(立体光刻)…...
【Midjourney数字艺术风格终极指南】:20年AI视觉专家亲授7大核心风格参数调优法则(含V6.1新增Realism Mode实测数据)
更多请点击: https://intelliparadigm.com 第一章:Midjourney数字艺术风格演进与V6.1核心变革 Midjourney自V1发布以来,其图像生成范式经历了从纹理模拟到语义理解、从风格模仿到跨模态协同的深层跃迁。V6.1标志着模型首次在原生架构中集成…...
OpenAgentsControl:构建多智能体协同系统的开源框架解析
1. 项目概述:一个面向智能体控制的开放框架最近在折腾AI智能体(Agent)相关的项目,发现一个挺有意思的开源仓库:darrenhinde/OpenAgentsControl。这个项目名字直译过来就是“开放智能体控制”,听起来就很有搞…...
基于MCP协议构建AI数据连接器:从原理到SQL查询服务器实践
1. 项目概述:一个连接AI与数据源的“翻译官”最近在折腾AI应用开发,特别是想让大语言模型(LLM)能直接、安全地访问我自己的数据库、API或者文件系统时,遇到了一个普遍难题:怎么让AI理解并操作这些外部数据源…...
初创团队如何通过Taotoken的Token Plan实现成本可控的AI应用开发
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何通过Taotoken的Token Plan实现成本可控的AI应用开发 对于预算敏感的初创团队和独立开发者而言,在开发AI应…...
Arm Cortex-A35 Cycle Model技术解析与SoC集成实战
1. Arm Cortex-A35 Cycle Model技术解析在SoC设计领域,虚拟平台验证已成为不可或缺的关键环节。作为Armv8-A架构中的能效比优化核心,Cortex-A35处理器通过Cycle Model提供了RTL级精度的硬件行为模拟能力。我在多个车载SoC项目中验证发现,其Cy…...
Noto Emoji字体架构深度解析:现代表情符号渲染的技术实现与性能优化
Noto Emoji字体架构深度解析:现代表情符号渲染的技术实现与性能优化 【免费下载链接】noto-emoji Noto Emoji fonts 项目地址: https://gitcode.com/gh_mirrors/no/noto-emoji Noto Emoji作为Google开源的表情符号字体库,提供了跨平台的Unicode表…...
