您现在的位置:首页 >> 智能控制 >> 内容

基于PID控制算法的无人机飞行姿态控制simulink建模与仿真,对比PD和PI两种控制算法

时间:2024/8/28 1:50:27 点击:

  核心提示:0sj_011m,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZpqWlJ1w

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

   无人机是无人驾驶飞机的简称(Unmanned Aerial Vehicle),是利用无线电遥控设备和自备的程序控制装置的不载人飞机,包括无人直升机、固定翼机、多旋翼飞行器、无人飞艇、无人伞翼机。广义地看也包括临近空间飞行器(20-100 公里空域),如平流层飞艇、高空气球、太阳能无人机等。从某种角度来看,无人机可以在无人驾驶的条件下完成复杂空中飞行任务和各种负载任务,可以被看做是 “空中机器人”。

   飞控子系统是无人机完成起飞、空中飞行、执行任务和返场回收等整个飞行过程的核心系统,飞控对于无人机相当于驾驶员对于有人机的作用,我们认为是无人机最核心的技术之一。飞控一般包括传感器、机载计算机和伺服作动设备三大部分,实现的功能主要有无人机姿态稳定和控制、无人机任务设备管理和应急控制三大类。

   对于固定翼无人机,一般来说,在姿态平稳时,控制方向舵会改变飞机的航向,通常会造成一定角度的横滚,在稳定性好的飞机上,看起来就像汽车在地面转弯一般,可称其为测滑。方向舵是最常用做自动控制转弯的手段,方向舵转弯的缺点是转弯半径相对较大,较副翼转弯的机动性略差。 副翼的作用是进行飞机的横滚控制。固定翼飞机当产生横滚时,会向横滚方向进行转弯,同时会掉一定的高度。 升降舵的作用是进行飞机的俯仰控制,拉杆抬头,推杆低头。拉杆时飞机抬头爬升,动能朝势能的转换会使速度降低,因此在控制时要监视空速,避免因为过分拉杆而导致失速。 油门舵的作用是控制飞机发动机的转速,加大油门量会使飞机增加动力,加速或爬升,反之则减速或降低。

  无人机飞行姿态控制的目标是通过调节飞行器的姿态(俯仰、偏航和滚转角度),使其能够稳定地悬停在空中或按照预定轨迹飞行。PID控制器因其良好的鲁棒性和易于实现的特点,在无人机飞行姿态控制中得到了广泛应用。

4.部分源码

function [sys,x0,str,ts] = Attitude7(t,x,u,flag,J)

 

switch flag,

  case 0,

    [sys,x0,str,ts]=mdlInitializeSizes;

  case 1,

    sys=mdlDerivatives(t,x,u,J);

  case {2,4,9},

    sys=[];

  case 3,

    sys=mdlOutputs(t,x);

  otherwise

    error(['Unhandled flag = ',num2str(flag)]);

end

 

function [sys,x0,str,ts]=mdlInitializeSizes

 

sizes = simsizes;

 

sizes.NumContStates  = 6;

sizes.NumDiscStates  = 0;

sizes.NumOutputs     = 6;

sizes.NumInputs      = 3;

sizes.DirFeedthrough = 0;

sizes.NumSampleTimes = 1;   

 

sys = simsizes(sizes);

% w0=[10 ;20 ;-30];

% theta0=[10 ;20 ;-30];

x0=[10 20 -30 10 20 -30]/180*pi;

 

str = [];

 

ts  = [0 0];

%---状态方程----姿态运动学和动力学方程-----

function sys=mdlDerivatives(t,x,u,J)

J1=J(1);J2=J(2);J3=J(3);

w1=x(1);w2=x(2);w3=x(3);

theta1=x(4);theta2=x(5);theta3=x(6);

%--------------------

dw1=(J2-J3)/J1*w3*w2+1/ J1*u(1);

dw2=(J3-J1)/J2*w1*w3+1/ J2*u(2);

dw3=(J1-J2)/J3*w1*w2+1/ J3*u(3);

 

dtheta1=w1-w2*cos(theta1)*tan(theta3)+w3*sin(theta1)*tan(theta3);

dtheta2=w2*cos(theta1)/cos(theta3)-w3*sin(theta1)/cos(theta3);

dtheta3=w2*sin(theta1)+w3*cos(theta1);

%-----------------------

sys =[dw1 dw2 dw3 dtheta1 dtheta2 dtheta3];

function sys=mdlOutputs(t,x)

wx=x(1);wy=x(2);wz=x(3);

thetax=x(4);thetay=x(5);thetaz=x(6);

% % dthetax=wx-wy*cos(thetax)*tan(thetaz)+wz*sin(thetax)*tan(thetaz);

% % dthetay=wy*cos(thetax)/cos(thetaz)-wz*sin(thetax)/cos(thetaz);

% % dthetaz=wy*sin(thetax)+wz*cos(thetax);

% wx=x(1);wy=x(2);wz=x(3);

% thetax=x(4);thetay=x(5);thetaz=x(6);

sys =[wx wy wz thetax thetay thetaz];

0sj_011m

---

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168