【UAV四旋翼的PD控制】使用AscTec Pelican四旋翼无人机的PD控制器研究(Matlab代码实现)

简介: 【UAV四旋翼的PD控制】使用AscTec Pelican四旋翼无人机的PD控制器研究(Matlab代码实现)

  💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

    或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

UAV四旋翼的PD控制:使用AscTec Pelican四旋翼无人机的PD控制器研究

四旋翼的PD控制,在MATLAB中使用AscTec Pelican四旋翼无人机的PD控制器。这里的读取AscTec Pelican四旋翼无人机的PD控制器增益,并使用它们来控制四旋翼达到期望的高度、横滚、俯仰和偏航角。阶跃响应从不同时刻开始。为所有变量提供了比较值(过冲、上升时间和稳态误差)。

PD控制器是一种常用的控制算法,用于控制四旋翼无人机的姿态。对于AscTec Pelican四旋翼无人机,你可以使用PD控制器来稳定其姿态,确保其在飞行中保持平稳和可控性。要进行研究,你需要了解PD控制器的原理和参数调节方法,并结合AscTec Pelican的具体参数和飞行特性进行调试和优化。

一、引言

四旋翼无人机作为一种具有垂直起降、悬停以及高机动性特点的微小型飞行器,在军事、民用以及科研领域展现出巨大的应用潜力。然而,四旋翼无人机本质上是一个非线性、强耦合、欠驱动的多输入多输出(MIMO)系统,其在飞行过程中容易受到外部扰动(如风)的影响,这对控制系统的设计提出了极高的要求。为了实现四旋翼无人机的稳定悬停、精确跟踪预设轨迹以及抗扰动能力,需要设计高效可靠的飞行控制算法。PD(比例-微分)控制作为一种经典的控制策略,因其结构简单、易于实现且鲁棒性较好,被广泛应用于四旋翼无人机的控制中。

AscTec Pelican四旋翼无人机是一款由德国AscTec公司生产的成熟商用平台,其具有较高的硬件性能和良好的开发接口,被广泛用于科研和教学领域。本文将以AscTec Pelican四旋翼无人机为研究对象,重点探讨基于MATLAB的PD控制策略设计与实现。

二、四旋翼无人机动力学模型

四旋翼无人机通常采用“X”或“+”型结构,由四个安装在机体上的电机驱动螺旋桨产生升力。通过独立控制四个电机的转速,可以实现对无人机的姿态(滚转、俯仰、偏航)和位置(x、y、z)的控制。为了简化模型,本文做出以下假设:

  1. 无人机是一个刚体。
  2. 螺旋桨产生的拉力与电机转速的平方成正比。
  3. 机体质量均匀分布。

根据牛顿-欧拉方程,可以将四旋翼无人机的动力学模型分解为平移运动和旋转运动两部分:

  1. 平移运动:在惯性坐标系(earth-fixed frame)下描述。假设惯性坐标系的原点固定在地面,Z轴垂直向上。
  2. 旋转运动:在机体坐标系下描述。假设机体坐标系的原点位于无人机的重心,轴与机体的对称轴对齐。

三、PD控制器设计

PD控制器由比例(P)和微分(D)两部分组成:

  1. 比例部分:根据当前误差(期望值与实际值之间的差异)产生控制输出,其大小与误差成正比。
  2. 微分部分:根据误差的变化率来调整控制输出,用于抑制系统的震荡和提高响应速度。

综合考虑比例和微分部分的影响,PD控制器能够实现快速而稳定的系统响应。在四旋翼无人机中,PD控制器通常用于控制姿态,即飞行器的倾斜角度和角速度,以实现期望的飞行姿态。通过测量飞行器的姿态和角速度,并与期望值进行比较,PD控制器可以生成适当的控制指令,通过调节电机的转速来稳定飞行器并实现期望的飞行动作。

基于四旋翼无人机的动力学模型,可以采用分层控制或解耦控制的思想设计控制器。由于四旋翼的平移运动与姿态紧密耦合,通常将姿态控制作为内环,位置控制作为外环。PD控制器在控制误差和误差变化率的基础上产生控制量,适用于对快速响应和抑制超调有一定要求的系统。

四、MATLAB仿真实现

本文使用MATLAB/Simulink对上述PD控制器进行仿真实现。在Simulink中,可以利用积分器、增益模块、函数模块、矩阵运算模块等搭建四旋翼无人机的动力学模型。具体步骤如下:

  1. 输入输出设计
  • 输入:电机角速度。
  • 输出:位置、速度、姿态和角速度。
  1. 模型简化
  • 将输入的电机指令(例如期望的角速度平方)转换为实际的电机角速度(通常简化为一阶或二阶系统)。本文简化为直接使用期望的角速度平方计算拉力和反扭矩。
  1. 动力学计算
  • 根据总拉力、重力以及当前姿态计算线加速度,然后通过积分得到线速度和位置。
  • 根据力矩和惯性矩阵计算角加速度,然后通过积分得到机体角速度。
  • 根据机体角速度计算欧拉角变化率,然后通过积分得到欧拉角。
  1. 坐标系转换
  • 实现惯性坐标系和机体坐标系之间的转换。
  1. 控制器设计
  • 接收期望位置和当前位置作为输入,输出期望的姿态角和总升力。
  • 接收期望姿态角和当前姿态角作为输入,输出三个控制力矩。

五、参数调节与性能分析

PD控制器的性能严重依赖于比例增益(Kp)和微分增益(Kd)的选取。参数调节是一个迭代优化的过程,可以通过试凑法、Ziegler-Nichols法或其他优化算法进行。在Simulink仿真中,可以方便地修改增益值,观察系统响应,并根据性能指标(如超调量、稳定时间、稳态误差)进行调整。

  1. 参数调节原则
  • 增加Kp可以提高系统的响应速度,减小稳态误差,但也可能导致超调和振荡。
  • 增加Kd可以抑制振荡,提高系统的稳定性,但可能降低响应速度。
  1. 参数调节顺序
  • 先调内环(姿态控制):单独调节姿态控制器的增益,使其能够快速稳定地跟踪期望姿态。
  • 再调外环(位置控制):在姿态控制器稳定的基础上调节位置控制器的增益,使其能够快速准确地跟踪期望位置。
  1. 性能分析
  • 悬停控制:通过仿真可以观察无人机从初始状态逐渐趋近并稳定在期望悬停点。合适的PD增益能够使无人机在较短时间内达到稳定状态,且具有较小的超调和稳态误差。微分项的存在有助于抑制因比例项引起的振荡。
  • 轨迹跟踪:设置期望轨迹(如直线、圆周或螺旋线),通过仿真可以观察无人机是否能够准确地跟踪期望轨迹。PD控制器在轨迹跟踪方面的性能取决于其对误差和误差变化率的响应速度。对于快速变化的轨迹,单纯的PD控制可能存在一定的滞后。
  • 抗扰动能力:在仿真模型中加入外部扰动(如模拟风力),观察无人机在受到扰动时PD控制器的性能。PD控制器的抗扰动能力主要取决于其对误差变化率的响应,微分增益越大,对扰动的抑制能力越强,但也可能对噪声更敏感。

六、实验结果与讨论

通过MATLAB/Simulink仿真,可以观察PD控制器在不同场景下对AscTec Pelican四旋翼无人机的控制效果。以下是一些典型的实验结果:

  1. 悬停控制实验
  • 在无扰动情况下,无人机能够快速稳定地悬停在期望位置。
  • 在加入外部扰动后,无人机能够在短时间内恢复稳定状态,表现出良好的抗扰动能力。
  1. 轨迹跟踪实验
  • 对于直线轨迹跟踪,无人机能够准确地沿着期望轨迹飞行。
  • 对于圆周轨迹跟踪,无人机能够保持稳定的圆周运动,且轨迹误差较小。
  1. 参数敏感性分析
  • 通过对比不同PD增益下的仿真结果,可以直观地理解参数对控制性能的影响。例如,过小的比例增益会导致响应缓慢,稳态误差大;过大的比例增益可能导致超调和振荡。

📚2 运行结果

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

部分代码:

Kpt = GainsK(1,5);  % Pitch P controller

Kdt = GainsK(1,6);  % Pitch D controller

Kpps = GainsK(1,7);  % Yaw P controller

Kdps = GainsK(1,8);  % Yaw D controller

%

% % % Best Gains of the controllers

%

% Kpp = 30

% Kdp = 5

%

% Kpt = 30

% Kdt = 5

%

% Kpps = 30

% Kdps = 5

%

% Kpz = 40

% Kdz = 12

% % save gains data

% Gains = [Kpz Kdz Kpp Kdp Kpt Kdt Kpps Kdps];

% save('Gains.mat','Gains') % Write the optimal gains in a .mat file

% Quadrotor constants

Ixx = 8.1*10^(-3);  % Quadrotor moment of inertia around X axis

Iyy = 8.1*10^(-3);  % Quadrotor moment of inertia around Y axis

Izz = 14.2*10^(-3);  % Quadrotor moment of inertia around Z axis

Jtp = 104*10^(-6);  % Total rotational moment of inertia around the propeller axis

b = 54.2*10^(5-6);  % Thrust factor

d = 1.1*10^(-6);  % Drag factor

l = 0.24;  % Distance to the center of the Quadrotor

m = 1;  % Mass of the Quadrotor in Kg

g = 9.81;   % Gravitational acceleration

stepsize = 0.01;

t = 0.00000000000000:stepsize:5.00000000000000; % simulation time

% Initial conditions for the Quadrotor

x0 = [];

for i = 1:12,

   x0 = [x0;0];    % Initial position is the origin O(0,0,0), linear and angular velocities/accelerations = 0

end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1] Sampaio R C B , Becker M , Siqueira A A G ,et al.FVMS: A novel SiL approach on the evaluation of controllers for autonomous MAV[C]//Aerospace Conference, 2013 IEEE.IEEE, 2013.DOI:10.1109/AERO.2013.6497415.

[2]李仰喬.四旋翼飛行動態與PD控制器之研究[J].虎尾科技大學飛機工程系航空與電子科技碩士班學位論文, 2016.

[3]曹美会,鲜斌,张旭,等.基于视觉的四旋翼无人机自主定位与控制系统[J].信息与控制, 2015, 000(002):190-资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取【请看主页然后私信】

相关文章
|
27天前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
|
27天前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
|
27天前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
129 8
|
27天前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
113 8
|
27天前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
160 0
|
27天前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
|
27天前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
|
27天前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
139 8
|
1月前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
150 12
|
1月前
|
人工智能 数据可视化 网络性能优化
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)

热门文章

最新文章