【无人机设计与控制】PID_积分滑模_积分反步四旋翼无人机轨迹跟踪控制算法

摘要

本文基于四旋翼无人机设计与控制,提出了一种结合PID控制、积分滑模控制以及积分反步控制的轨迹跟踪算法。该算法通过调节无人机的运动轨迹,提升其在复杂环境下的稳定性与抗扰动能力。实验结果表明,该算法能有效改善无人机的轨迹跟踪精度,并在多个自由度上均取得了较好的控制效果。

理论

1. PID 控制理论

PID 控制是一种广泛应用于控制系统中的经典控制方法。它通过对误差信号进行比例 (P)、积分 (I)、微分 (D) 操作,调节系统输出达到期望目标值。PID 控制器的数学表达式为:

其中,𝑒(𝑡) 为误差, 𝐾𝑝 、𝐾𝑖 、𝐾𝑑分别为比例、积分和微分增益。

2. 积分滑模控制理论

积分滑模控制是一种增强系统鲁棒性的控制策略,滑模面可以设定为:

该控制策略可以有效减小外界干扰对系统的影响,且具有较强的自适应性。

3. 积分反步控制理论

积分反步控制通过引入虚拟控制量,分步解决系统控制问题。其主要思想是对系统进行逐步反馈线性化,使其满足 Lyapunov 稳定条件,从而实现系统稳定性。

实验结果

通过仿真实验对四旋翼无人机的轨迹跟踪效果进行验证,结果如图所示。图中的六个子图分别展示了无人机在 X 轴、Y 轴、Z 轴的位移变化以及三个角度自由度上的角度变化。实验对比了实际轨迹与期望轨迹(蓝色与红色曲线),结果表明,该控制算法能够较好地实现期望轨迹的跟踪效果,特别是在X和Y方向上的振荡情况得到了有效控制。

部分代码

% PID控制参数
Kp = [1.5, 1.5, 1.5];  % 比例增益
Ki = [0.1, 0.1, 0.1];  % 积分增益
Kd = [0.2, 0.2, 0.2];  % 微分增益% 时间设置
t = 0:0.1:70;% 期望轨迹
x_d = sin(0.1*t);
y_d = sin(0.1*t);
z_d = zeros(size(t));% 实际轨迹初始化
x_real = zeros(size(t));
y_real = zeros(size(t));
z_real = zeros(size(t));% 轨迹跟踪控制
for i = 2:length(t)% 误差计算ex = x_d(i) - x_real(i-1);ey = y_d(i) - y_real(i-1);ez = z_d(i) - z_real(i-1);% PID控制器u_x = Kp(1)*ex + Ki(1)*sum(ex) + Kd(1)*(ex - (x_real(i-1) - x_real(i-2)));u_y = Kp(2)*ey + Ki(2)*sum(ey) + Kd(2)*(ey - (y_real(i-1) - y_real(i-2)));u_z = Kp(3)*ez + Ki(3)*sum(ez) + Kd(3)*(ez - (z_real(i-1) - z_real(i-2)));% 更新实际轨迹x_real(i) = x_real(i-1) + u_x*0.1;y_real(i) = y_real(i-1) + u_y*0.1;z_real(i) = z_real(i-1) + u_z*0.1;
end% 绘制结果
figure;
subplot(3,1,1); plot(t, x_d, 'r', t, x_real, 'b'); title('X轴轨迹'); xlabel('时间/s'); ylabel('位置/m');
subplot(3,1,2); plot(t, y_d, 'r', t, y_real, 'b'); title('Y轴轨迹'); xlabel('时间/s'); ylabel('位置/m');
subplot(3,1,3); plot(t, z_d, 'r', t, z_real, 'b'); title('Z轴轨迹'); xlabel('时间/s'); ylabel('位置/m');

参考文献

  1. Khalil, H.K., Nonlinear Systems, 3rd Edition, Prentice Hall, 2002.

  2. Slotine, J.J.E., and Li, W., Applied Nonlinear Control, Prentice-Hall, 1991.

  3. Utkin, V.I., Sliding Modes in Control and Optimization, Springer-Verlag, 1992.

  4. Huang, C.F., "Trajectory tracking control for a quadrotor UAV using integral backstepping approach," IEEE Transactions on Aerospace and Electronic Systems, vol. 45, no. 3, pp. 1065-1075, 2009.

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python Django 查询集的延迟加载特性

Django 查询集的延迟加载特性 一、引言 在 Django 的开发过程中,查询集(QuerySet)是我们与数据库进行交互的重要工具。查询集提供了一种高效的方式来检索和操作数据库中的数据,且能够进行懒加载(Lazy Loading&#x…

Element中el-table组件设置max-height右侧出现空白列的解决方法

之前就出现过这个情况,没理过,因为不影响啥除了不美观...但今天看着实在是难受,怎么都不顺眼(可能是我自己烦躁--) 试了很多网上的方法,都不得行,后面发现了这篇文章,解决了! 感谢! Element中t…

【数据结构】:破译排序算法--数字世界的秩序密码(一)

文章目录 一.排序算法概述1.定义和目的2.排序算法的分类2.1比较排序2.2非比较排序 二.插入排序算法1.InsertSort直接插入排序1.1.插入排序原理1.2.插入排序过程1.3.代码实现1.4.复杂度和稳定性 2.ShellSort希尔排序2.1.希尔排序原理2.2.希尔排序过程2.3.代码实现2.4.复杂度和稳…

【.net core使用minio大文件分片上传】.net core使用minio大文件分片上传以及断点续传、秒传思路

版本:.net core 7 需求:net限制了上传的大小,只能上传25M上下的文件,如果上传一个八十多兆的文件,swagger接口报错,如果前端调用上传接口,会报CORS跨域错误,这篇文章介绍怎么使用分片…

使用CSS和HTML实现3D图片环绕效果

使用CSS和HTML实现3D图片环绕效果 在本篇博客中,将介绍如何使用HTML和CSS实现一个3D图片环绕效果。这个效果不仅具有视觉吸引力,而且具有高度的互动性,鼠标悬停时动画会暂停。接下来将一步步讲解这个效果的实现过程。 1. 效果 2. 页面结构与…

【华为HCIP实战课程十一】OSPF网络NBMA网络解决方案,网络工程师

上节我们讲解了DR DBR 选举,每台设备可以学到全网路由,但是通信是有问题的 DR BDR的选举是基于接口的,而不是基于路由器的 一、OSPF路由通信问题 R5虽然可以学到全网的OSPF路由,但是R5无法ping通44.1.1.1 原因是R5到达R4 lo0的下一跳是10.1.1.4, 而R5和R4直连无法ping通…

数码准备记录

1.数据结构 常见的数据结构包括数组、链表、栈、队列、树(如二叉树、B树、B树)、图等 2.队列和栈的区别 队列是一种先入先出的数据结构,即最先加入的元素被最先移除; 栈是一种后进后出的数据结构,即最后加入的元素…

linux tar 打包文件去掉文件所在路径

一、准备目录 /root/tmp/images /root/tmp/images2 执行命令打包目录/root/tmp/images 到 /root/tmp/images.tar.gz 再解压到/root/tmp/images2 cd /root/tmp/images && tar -cvzf images.tar.gz * && mv images.tar.gz /root/tmp/ tar -C /root/tmp/image…

JDK17常用新特性

目前国内大部分开发人员都是在使用jdk8,甚至是jdk6,但是随着jdk的更新迭代,jdk8我觉得可能就会慢慢的淡出舞台,随着目前主流框架最新版推出明确说明了不再支持jdk8,也促使我不得不抓紧学习了解一波jdk17的新特性&#…

多线程-初阶(2)BlockingQueueThreadPoolExecutor

学习目标: 熟悉wait和notify的线程休眠和启动 熟悉多线程的基本案例 1.单例模式的两种设置模式:懒汉模式和饿汉模式 2.阻塞队列(生产者消费者模型) 3.线程池 4.定时器 1.wait和notify 由于线程之间是抢占式执⾏的, 因此线程之间执⾏的先后顺序难以预知. 但是…

【消息队列】Kafka从入门到面试学习总结

国科大学习生活(期末复习资料、课程大作业解析、大厂实习经验心得等): 文章专栏(点击跳转) 大数据开发学习文档(分布式文件系统的实现,大数据生态圈学习文档等): 文章专栏(点击跳转&…

人工智能的核心技术之机器学习

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 人工智能(AI)核心技…

使用DataX同步hive数据到MySQL

目录 1、组件环境 2、安装datax 2.1、下载datax并解压 3、安装datax-web 3.0、下载datax-web的源码,进行编译 3.1、在MySQL中创建datax-web元数据 3.2、安装data-web 3.2.1执行install.sh命令解压部署 3.2.1、手动修改 datax-admin配置文件 3.2.2、手动修改…

「Ubuntu」文件权限说明(drwxr-xr-x)

我们在使用Ubuntu 查看文件信息时,常常使用 ll 命令查看,但是输出的详细信息有些复杂,特别是 类似与 drwxr-xr-x 的字符串,在此进行详细解释下 属主:所属用户 属组:文件所属组别 drwxr-xr-x 7 apps root 4…

Pytorch基础:设置随机种子

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 有时候,如果需要代码在多个运行中具有可重复性,可以通过以下方式来设置随机种子: import torch import numpy as np import r…

【亲测可行】最新ubuntu搭建rknn-toolkit2

文章目录 🌕结构图(ONNX->RKNN)🌕下载rknn-toolkit2🌕搭建环境🌙配置镜像源🌙conda搭建python3.8版本的虚拟环境🌙进入packages目录安装依赖库🌕测试安装是否成功🌕其它🌙rknn-toolkit2🌙rknn_model_zoo🌙关于部署的博客发布本文的时间为2024.10.13…

【进阶OpenCV】 (11)--DNN板块--实现风格迁移

文章目录 DNN板块一、DNN特点二、DNN函数流程三、实现风格迁移1. 图像预处理2. 加载星空模型3. 输出处理 总结 DNN板块 DNN模块是 OpenCV 中专门用来实现 DNN(Deep Neural Networks,深度神经网络) 模块的相关功能,其作用是载入别的深度学习框架(如 TensorFlow、Caf…

【微信小程序_11_全局配置】

摘要:本文介绍了微信小程序全局配置文件 app.json 中的常用配置项,重点阐述了 window 节点的各项配置,包括导航栏标题文字、背景色、标题颜色,窗口背景色、下拉刷新样式以及上拉触底距离等。通过这些配置可实现小程序窗口外观的个性化设置,提升用户体验。 微信小程序_11_全…

如何成为 Rust 核心贡献者?Rust 开发的核​​心是什么?Rust 重要技术专家揭秘

10 月 17 - 18日,由 GOSIM 开源创新汇主办、CSDN 承办的 GOSIM CHINA 2024 将在北京盛大启幕。作为 GOSIM 开源年度大会的第三届盛会,本次活动邀请了 60 多位国际开源专家,汇聚了来自全球百余家顶尖科技企业、知名高校及开源社区的技术大咖、…

回溯法与迭代法详解:如何从手机数字键盘生成字母组合

在这篇文章中,我们将详细介绍如何基于手机数字键盘的映射,给定一个仅包含数字 2-9 的字符串,输出它能够表示的所有字母组合。这是一个经典的回溯算法问题,适合初学者理解和掌握。 问题描述 给定一个数字字符串,比如 …