天天看點

基于PID控制的四旋翼飛行器仿真(Matlab代碼實作)

 💥💥💞💞歡迎來到本部落格❤️❤️💥💥

🏆部落客優勢:🌞🌞🌞部落格内容盡量做到思維缜密,邏輯清晰,為了友善讀者。

⛳️座右銘:行百裡者,半于九十。

目錄

​​💥1 概述​​

​​📚2 運作結果​​

​​🎉3 參考文獻​​

​​🌈4 Matlab代碼實作​​

💥1 概述

近幾年,随着科技發展,各種傳感器技術和通信技術不斷突破,無人機技術也發展迅速,在軍事偵察、交通巡邏、景色航拍、高空電纜巡檢等諸多應用領域已經發揮了重要的作用。四旋翼無人機以其具有的操作靈活、地形上限制小、攜帶時友善以及成本低廉等特點,更加緊密貼近了我們的日常生活,是以,對無人機進行研究具有很大的學術價值和意義。

傳統的PID由比例、積分、微分三部分組成,通過調節Kp、Ki、Kd的數值可以實作不同的控制效果如圖所示。PID控制算法的核心是用偏差來消除偏差,該算法可以對控制系統進行有效的估計:

基于PID控制的四旋翼飛行器仿真(Matlab代碼實作)

📚2 運作結果

基于PID控制的四旋翼飛行器仿真(Matlab代碼實作)
基于PID控制的四旋翼飛行器仿真(Matlab代碼實作)
基于PID控制的四旋翼飛行器仿真(Matlab代碼實作)
基于PID控制的四旋翼飛行器仿真(Matlab代碼實作)
基于PID控制的四旋翼飛行器仿真(Matlab代碼實作)

部分代碼:

I = [Ixx 0 0;0 Iyy 0;0 0 Izz];

Jtp = 104e-6;

Ke = 6.3e-3;

Km = 6.3e-3;

L = 15e-6;

b = 54.2e-6;

l = 0.24;

g = 9.81;

n = 0.9;

N = 5.6;

h = 1e-3;

R = 0.6;

d = 1.1e-6; % drag factor

% Motor Controller Design

Kp_position = 5;

Ki_position = 0;

Kd_position = 10;

Kp_angle = 5*2;

Ki_angle = 0;

Kd_angle = 10*2;

Kp_motor = 1;

Ki_motor = 10;

Kd_motor = 0;

%w'=Apw+Bpv+Cp

Ap = -22.5;

Bp = 509;

Cp = 489;

a1 = Ap;

b1 = Bp;

c1 = 1;

d1 = 0;

sys_c_m = ss(a1,b1,c1,d1);

Gc_m = tf(sys_c_m);

sys_d_m = c2d(sys_c_m,h,'zoh');

Gd_m = tf(sys_d_m);

Cc_m = tf([Kp_motor Ki_motor],[1 0]);

sys_c_mctrl = ss(Cc_m);

sys_d_mctrl = c2d(sys_c_mctrl,h,'tustin');

Cd_m = tf(sys_d_mctrl);

LGd_m = Gd_m*Cd_m;

Td_m = feedback(LGd_m,1);

figure(1)

margin(LGd_m)

hold on

grid on

figure(2)

step(Td_m)

hold on

grid on

num = [1];

den = [1 0 0];

Gc_p = tf(num,den);

sys_c_p = ss(Gc_p);

sys_d_p = c2d(sys_c_p,h,'zoh');

Gd_p = tf(sys_d_p);

🎉3 參考文獻

部分理論來源于網絡,如有侵權請聯系删除。

​​🌈​​4 Matlab代碼實作

繼續閱讀