【无人机设计与技术】自抗扰控制(ADRC)的建模与仿真研究

news2024/10/2 1:27:53

摘要

本文针对四旋翼无人机姿态控制系统进行了基于自抗扰控制(ADRC)的建模与仿真研究。通过MATLAB/Simulink仿真平台,实现了无人机的姿态控制模型,并采用自抗扰控制器(ADRC)对无人机的姿态进行控制。本文详细介绍了自抗扰控制器的设计方法和应用,通过对无人机的俯仰角、滚转角和偏航角的控制,验证了ADRC控制器在四旋翼无人机系统中的高效性和鲁棒性。仿真结果表明,ADRC控制器能够在不同扰动条件下保持系统的稳定性和快速响应。

理论

四旋翼无人机的动力学与运动学模型

四旋翼无人机的动力学模型基于牛顿-欧拉方程,其描述了旋翼产生的推力和力矩作用下无人机的运动特性。动力学方程如下:

[ m \ddot{r} = R F - mg ]

[ I \dot{\omega} = \tau - \omega \times I \omega ]

其中,(m) 为无人机质量,(R) 为旋转矩阵,(F) 为总推力,(\omega) 为角速度,(I) 为惯性矩阵,(\tau) 为力矩。

自抗扰控制器(ADRC)

ADRC 是一种非线性控制方法,通过扩张状态观测器(ESO)实时估计系统状态及外部扰动,并通过非线性误差反馈控制(NLSEF)来补偿系统中的不确定性。自抗扰控制的核心部分包括:

  1. 扩张状态观测器(ESO):用于实时观测系统状态和外部扰动,更新后的状态用于补偿未知扰动。

  2. 非线性误差反馈(NLSEF):通过对误差的非线性函数计算输出,增强系统的动态性能。

ADRC 控制器设计可以分为三个环节:

  1. 跟踪微分器(TD):对期望轨迹进行平滑处理。

  2. 扩张状态观测器(ESO):估计系统状态及外界扰动。

  3. 非线性状态误差反馈(NLSEF):基于ESO估计的状态进行非线性反馈控制。

实验结果

通过MATLAB/Simulink仿真平台,对无人机姿态控制进行了测试,分别验证了系统在俯仰、滚转和偏航角控制中的表现。

  1. 连续型ADRC控制仿真:系统响应曲线表明,ADRC控制器在俯仰角、滚转角和偏航角控制中的表现快速、平稳,具有较好的动态特性和稳态性能。

  2. 离散型ADRC控制仿真:与连续型相比,离散型ADRC控制器在数字化控制中的响应同样迅速,能够有效应对突加扰动,保持系统的稳定性。

仿真结果显示,无论在连续控制还是离散控制中,ADRC控制器都能够在较短时间内使系统稳定,且具有较强的抗扰动能力。

部分代码

以下为ADRC姿态控制的部分MATLAB代码:

% 初始化参数
m = 1.5;  % 无人机质量
g = 9.81; % 重力加速度

% ADRC控制器参数
beta1_yaw = 30; beta2_yaw = 300; beta3_yaw = 1000;
beta1_pitch = 150; beta2_pitch = 300; beta3_pitch = 1000;
beta1_roll = 180; beta2_roll = 120; beta3_roll = 1000;

% 控制器设计
sim_time = 20;  % 仿真时间
yaw_ref = 5;    % 偏航角参考值
pitch_ref = 3;  % 俯仰角参考值
roll_ref = 2;   % 滚转角参考值

% 调用Simulink仿真模型
sim('quadcopter_ADRC_model');

% 绘制结果
figure;
subplot(3,1,1);
plot(tout, yaw_response, 'r', 'LineWidth', 2);
title('偏航角控制响应');
xlabel('时间(s)');
ylabel('角度(°)');

subplot(3,1,2);
plot(tout, pitch_response, 'b', 'LineWidth', 2);
title('俯仰角控制响应');
xlabel('时间(s)');
ylabel('角度(°)');

subplot(3,1,3);
plot(tout, roll_response, 'g', 'LineWidth', 2);
title('滚转角控制响应');
xlabel('时间(s)');
ylabel('角度(°)');

参考文献

  1. Han, J. (2009). Auto-Disturbance-Rejection Control Technique. Control Theory and Applications, 30(12), 1553-1564.

  2. Gao, Z. (2006). Scaling and Bandwidth-Parameterization Based Controller Tuning. Proceedings of the American Control Conference, 4989-4996.

  3. Bouabdallah, S., Murrieri, P., & Siegwart, R. (2004). Design and Control of an Indoor Micro Quadrotor. Proceedings of the IEEE International Conference on Robotics and Automation.

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

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

相关文章

机器学习模型评估

前言 承接上篇讲述了机器学习有哪些常见的模型算法,以及适用的场景,本篇将继续讲述如何评估模型。模型评估的目的是选出泛化能力强的模型。泛化能力强表示模型能很好地适用于未知的样本,模型的错误率低、精度高。本文将从评估方法和评估指标…

【开源鸿蒙】OpenHarmony 5.0.0 发布了,速来下载最新代码

【开源鸿蒙】OpenHarmony 5.0.0 发布了,速来下载最新代码 一、写在前面二、准备命令工具三、配置用户信息四、下载OpenHarmony源码4.1 使用ssh协议下载(推荐)4.2 使用https协议下载 五、下载编译工具链六、参考链接 今天是9月30号&#xff0c…

20道面试题001

常考语法就是指针,指针与数组、指针与字符串、指针与结构体、指针与函数之间的关系与使用, 以上课为准,辅助《深度理解C指针》这本书。 1. 指针与数组 定义: 数组名在表达式中通常被视为指向数组首元素的指针。 访问元素: 可以通过指针访问数…

计算机网络:计算机网络概述:网络、互联网与因特网的区别

文章目录 网络、互联网与因特网的区别网络分类 互联网因特网基于 ISP 的多层次结构的互连网络因特网的标准化工作因特网管理机构因特网的组成 网络、互联网与因特网的区别 若干节点和链路互连形成网络,若干网络通过路由器互连形成互联网 互联网是全球范围内的网络…

PWM驱动LED呼吸灯

背景知识:TIM输出比较-CSDN博客 stm32f10x_tim.h函数 // *** OC是Output Compare输出比较函数 void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TI…

给Windows系统设置代理的操作方法

一、什么是代理 网络代理是一种特殊的网络服务,允许一个网络终端通过这个服务与另一个网络终端进行非直接的连接,而提供代理服务的电脑系统或其它类型的网络终端被称为代理服务器。 代理服务器是网络信息的中转站,代理服务器就像是一个很大的…

56. QTreeWidget的基本使用

1. 说明 在软件开发中会遇到将数据信息制作成一种树目录的形式进行展示,那么此时就可以借助QT提供的QTreeWidget控件来实现这种需求,本篇博客会做一个案例简要说明这个控件的基本使用方法,博客中代码能够实现的功能是将此项目代码所在文件夹中的内容展示出来,如下图所示:…

模式识别编程实践1:身高和/或体重数据进行性别分类

🌞欢迎莅临我的个人主页👈🏻这里是我专注于深度学习领域、用心分享知识精粹与智慧火花的独特角落!🍉 🌈如果大家喜欢文章,欢迎:关注🍷点赞👍🏻评论…

回溯大总结

目录 0、基础什么是回溯?回溯法解决的问题回溯模板 1、组合问题77. 组合216.组合总和III17. 电话号码的字母组合39. 组合总和:40.组合总和II 0、基础 什么是回溯? 回溯是一种穷举的搜索算法,并不是一个高效的算法,当…

高并发内存池(五):ThreadCache、CentralCache和PageCache的内存回收机制、阶段性代码展示和释放内存过程的调试

目录 ThreadCache的内存回收机制 补充内容1 补充内容2 补充内容3 补充内容4 ListTooLong函数的实现 CentralCache的内存回收机制 MapObjectToSpan函数的实现 ReleaseListToSpans函数的实现 PageCache的内存回收机制 补充内容1 补充内容2 ReleaseSpanToPageCache函…

【Spine】引入PhotoshopToSpine脚本

引入 右键Photoshop图标,选择属性 打开文件所在位置 找到目录下的\Presets\Scripts文件夹。 找到Spine目录下的\scripts\photoshop文件夹下的PhotoshopToSpine.jsx 复制它,丢到Photoshop刚才找的那个目录下。 使用 打开.psd文件,检查不要…

二叉树:总结篇!【需要掌握的二叉树技能都在这里啦】

文章目录 前言二叉树理论基础二叉树理论基础二叉树的遍历方式深度优先遍历广度优先遍历 N叉树的遍历方式求二叉树的属性二叉树:是否对称二叉树:求最大深度二叉树:求最小深度二叉树:求有多少个节点二叉树:是否平衡二叉树…

外贸财务软件精选,提升管理效率与精准度

ZohoBooks、QuickBooks等六款会计软件各具特色,支持多币种、国际化等功能,适合不同规模外贸企业。其中,ZohoBooks功能全面,QuickBooks操作简便,SageIntacct适合复杂业务,用友U8和金蝶K/3面向中大型企业&…

CommandLineRunner 和 ApplicationRunner

CommandLineRunner 和 ApplicationRunner 背景: 项目启动之前,预先加载数据。比如,权限容器、特殊用户数据等。通常我们可以使用监听器、事件来操作。但是,springboot提供了一个简单的方式来实现此类需求,即&#xf…

《Linux从小白到高手》理论篇(九):Linux的资源监控管理

本篇介绍Linux的资源监控管理。 1、CPU 资源管理 进程调度: Linux 采用公平的进程调度算法,确保每个进程都能获得合理的 CPU 时间。调度算法会根据进程的优先级、等待时间等因素来决定哪个进程获得 CPU 使用权。 可以通过调整进程的优先级来影响其获得…

C++继承实例讲解

C类继承的基本概念 base class,基类、父类 derived class,派生类、子类 C中的类可以扩展,创建保留基类特征的新类,这个过程称之为继承。类继承也可以描述为:派生类继承基类的成员,并在其上添加自己的成员…

【hot100-java】【单词搜索】

回溯 回溯可以使用DFS剪枝解决 class Solution {public boolean exist(char[][] board, String word) {char[] wordsword.toCharArray();for(int i0;i<board.length;i){for(int j0;j<board[0].length;j){if(dfs(board,words,i,j,0)) return true;}}return false;}boolean…

关于Elastic Search与MySQL之间的数据同步

目录 前言 思路分析 同步调用 异步通知 监听binlog 选择 实现数据同步 思路 运行项目 声明交换机、队列 1&#xff09;引入依赖 2&#xff09;声明队列交换机名称 3&#xff09;声明队列交换机 发送MQ消息 接收MQ消息 前言 Elastic Search中的酒店数据来自于MyS…

TypeScript 算法手册【插入排序】

文章目录 TypeScript 算法手册 - 插入排序1. 插入排序简介1.1 插入排序定义1.2 插入排序特点 2. 插入排序步骤过程拆解2.1 选择当前元素2.2 寻找插入位置2.3 插入元素 3. 插入排序的优化3.1 二分查找插入排序案例代码和动态图 4. 插入排序的优点5. 插入排序的缺点总结 【 已更新…

48.哀家要长脑子了!

1.376. 摆动序列 - 力扣&#xff08;LeetCode&#xff09; 看问题抓本质 本质&#xff01;&#xff01;识别和追踪数组中元素值的变化趋势。摆动序列是什么&#xff0c;什么是摆动序列&#xff0c;就是差值正负正负的来&#xff0c;最后要求摆动序列的子序列的长度的话&#x…