基于四旋翼无人机的PD控制研究(Matlab代码实现)

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

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

⛳️ 座右铭:行百里者,半于九十。
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现

💥1 概述

近年来,无人机(UAV)越来越多地应用于环保、电力、交通、测绘、安防、农业等民用领域。随着现代技术的进步,特别是人工智能技术的快速发展,未来无人机+行业应用的模式具有广阔的应用前景。目前无人机的智能化水平还有待提高,许多应用背后都有无人机操作员在控制无人机.要提高无人机的自动化和智能化水平,还需科研工作者进行大量研究。无人机的自主着陆问题是无人机智能化应用必须解决的关键技术问题,相比无人机航路规划、导航等方面,自主着陆的研究还相对较少。

四旋翼无人机动力学模型
四旋翼无人机是MIMO系统,其动力学模型可表示为(公式比较重要,纯手打):

基于四旋翼无人机的PD控制研究(Matlab代码实现)

式中:(x.y.z)为UAV质心在惯性坐标系中的位置.后续仿真中假设UAV可通过自身携带的GPS获得位置信息;

基于四旋翼无人机的PD控制研究(Matlab代码实现)基于四旋翼无人机的PD控制研究(Matlab代码实现)基于四旋翼无人机的PD控制研究(Matlab代码实现)为无人机三个姿态的欧拉角,分别为俯仰角、偏航角和滚转角;g为重力加速度:为无人机半径长度;m为UAV之负载总质量;l为围绕每个轴的转动惯量;K为阻力系数。UAV着陆控制目标为:X→xd,y→yd,z一0,基于四旋翼无人机的PD控制研究(Matlab代码实现)→0.

系统方框图如图1所示。外环产生指令信号

基于四旋翼无人机的PD控制研究(Matlab代码实现)基于四旋翼无人机的PD控制研究(Matlab代码实现)和u,,并将其传递至内环系统,采用双环控制方法设计内外环的控制律。

基于四旋翼无人机的PD控制研究(Matlab代码实现)

本文讲解四旋翼无人机的 PD 控制器的增益,并使用它们来控制四旋翼飞行器所需的高度、横滚、俯仰和偏航角。阶跃响应在不同的时刻开始。为所有变量提供比较值(过冲、上升时间和SS误差)。

📚 2 运行结果

基于四旋翼无人机的PD控制研究(Matlab代码实现)

基于四旋翼无人机的PD控制研究(Matlab代码实现)

基于四旋翼无人机的PD控制研究(Matlab代码实现)

基于四旋翼无人机的PD控制研究(Matlab代码实现)

基于四旋翼无人机的PD控制研究(Matlab代码实现)

基于四旋翼无人机的PD控制研究(Matlab代码实现)

部分代码:

% Plot the errors
figure(5)
[p q] = size(Ez);
t3 = 0:0.01:5; % For exp.3
hold on
plot(t3,Ez,’r’)
plot(t3,Ep,’g’)
plot(t3,Et,’b’)
plot(t3,Eps,’k’)
hold off
title(‘Error vectors’);
legend(‘Z error’,’Phi error’,’Theta error’,’Psi error’);
grid
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% Variables used to decide the effectiveness of the gains
[a b] = size(Ez);
% Calculate the overshoot
ZOvershoot = 50;
ROvershoot = 50;
POvershoot = 50;
YOvershoot = 50;
% Height
if (min(Ez) < 0)
ZOvershoot = abs(min(Ez))10; % Height overshoot
end
if (min(Ez) > 0)
ZOvershoot = 0; % Height overshoot
end
% Roll
if (min(Ep) < 0)
ROvershoot = abs(min(Ep))
10; % Roll overshoot
end
if (min(Ep) > 0)
ROvershoot = 0; % Height overshoot
end
% Pitch
if (min(Et) > 0)
POvershoot = abs(min(-Et))10; % Pitch overshoot
end
if (min(Et) < 0)
POvershoot = 0; % Height overshoot
end
% Yaw
if (min(Eps) < 0)
YOvershoot = abs(min(Eps))
10; % Yaw overshoot
end
if (min(Eps) > 0)
YOvershoot = 0; % Height overshoot
end

Overshoot = [ZOvershoot ROvershoot POvershoot YOvershoot]

% Calculate the steady-state error
Zess = Ez(a);
Ress = Ep(a);
Pess = Et(a);
Yess = Eps(a);

SSError = [Zess Ress Pess Yess]

% Calculate the rise time
Ztr = 10;
Phitr = 10;
Thetatr = 10;
Psitr = 10;
for i = 1:a
Ez(i) = Zd – Z(i); % find the error in height
if abs(Ez(i)) < 0.05
Ztr = i*stepsize;
break;
end
end

for i = 1:a
Ep(i) = Phid – Phi(i); % find the error in height
if abs(Ep(i)) < 0.05
Phitr = i*stepsize;
break;
end
end

for i = 1:a
Et(i) = Thetad – Theta(i); % find the error in height
if abs(Et(i)) < 0.05
Thetatr = i*stepsize;
break;
end
end

for i = 1:a
Eps(i) = Psid – Psi(i); % find the error in height
if abs(Eps(i)) < 0.05
Psitr = i*stepsize;
break;
end
end

Ztr = Ztr – ztime;
Phitr = Phitr – phitime;
Thetatr = Thetatr – thetatime;
Psitr = Psitr – psitime;

Rise_time = [Ztr Phitr Thetatr Psitr]

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% Calculate the controls in order to draw them
U1 = m(g + KpzEz + Kdz( – x(:,6)))./(cos(x(:,9)).cos(x(:,7))); % Total Thrust on the body along z-axis
U2 = (KppEp + Kdp( – x(:,8))); % Roll input
U3 = (KptEt + Kdt( – x(:,10))); % Pitch input
U4 = (KppsEps + Kdps( – x(:,12))); % Yawing moment

U1 = real(U1);
U2 = real(U2);
U3 = real(U3);
U4 = real(U4);

🎉 3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]宋志强,方武,刘孝赵.基于PD控制的四旋翼无人机着陆控制研究[J].计算机应用与软件,2020,37(09):324-327.

[2]Abdel-Razzak (2022). PD control of quadrotor.

🌈 4 Matlab代码实现

Original: https://blog.csdn.net/weixin_46039719/article/details/127825496
Author: 研学社
Title: 基于四旋翼无人机的PD控制研究(Matlab代码实现)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/660648/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球