• 四旋翼飞行器基本模型(Matlab&Simulink)


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

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

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

    📋📋📋本文目录如下:🎁🎁🎁

    目录

    💥1 概述

    📚2 运行结果

    🎉3 参考文献

    🌈4 Matlab代码、Simulink、文章


    💥1 概述

    四轴飞行器模型与控制系统开发用MATLABSimulink实现

    现在已经生成了基本的运动方程,可以形成Simulink植物模型了。此部分的MATLAB脚本和Simulink模型可以在名为“Basic_Simulink_Model”的文件夹中找到。首先,需要创建一个定义惯性矩、转子惯性、长度、质量、推力和阻力系数的基本脚本。然后创建Simulink模型。从一个空的Simulink块图开始,首先定义求解器选项。在Simulink的顶部工具栏上,点击Simulation,然后选择Model Configuration Parameters。在求解器选项下,确保类型为可变步长,求解器设置为自动。现在可以定义一个名为“四旋翼植物”的子系统。该子系统有4个输入(Ω1,Ω2,Ω3,Ω4)和6个输出(X,Y,Z,滚动,俯仰,偏航)。此时,模型应该看起来像下面的图2.17和2.18。

    详细讲解见第4部分。 

    📚2 运行结果

     

     

    部分代码:

    Jr = 6.5*10^(-7);  % Total rotational moment of inertia around the propeller axis 6.5*10^(-6)
    b = 1.144e-08;  % Thrust factor
    d = 9.94e-10;  % Drag factor 1.0876e-9
    l = 0.1;  % Distance to the center of the Quadrotor
    g = 9.81;   % Gravitational acceleration
    weight =.284; %kg  Weight=mg (from a scale)
    m = weight/g;  % Mass of the Quadrotor in Kg
    TF=30; %Simulation time
    sim('Simple_Quadcopter_Model_Sim_X_Yaw');

    figure(fig)
    fig=fig+1;
    plot(time,Phi,time,Theta,time,Psi)
    title('Body Angles (rad)')
    xlabel('Time(s)')
    ylabel('rad')
    legend('Phi','Theta','Psi')

    figure(fig)
    fig=fig+1;
    plot(time,X,time,Y)
    title('X and Y position')
    xlabel('Time(s)')
    ylabel('Postion (m)')
    legend('X', 'Y')

    figure(fig)
    fig=fig+1;
    plot(time,Z)
    title('Altitude')
    xlabel('Time(s)')
    ylabel('Altitude (m)')

    X_m1=(((pi/4)*l)+X);
    Y_m1=-(((pi/4)*l)+Y);
    X_m2=(((pi/4)*l)+X);
    Y_m2=(((pi/4)*l)+Y);
    X_m3=-(((pi/4)*l)+X);
    Y_m3=(((pi/4)*l)+Y);
    X_m4=-(((pi/4)*l)+X);
    Y_m4=-(((pi/4)*l)+Y);

    X1 = X_m1.*cos(Psi) - Y_m1.*sin(Psi);
    Y1 = X_m1.*sin(Psi) + Y_m1.*cos(Psi);
    X2 = X_m2.*cos(Psi) - Y_m2.*sin(Psi);
    Y2 = X_m2.*sin(Psi) + Y_m2.*cos(Psi);
    X3 = X_m3.*cos(Psi) - Y_m3.*sin(Psi);
    Y3 = X_m3.*sin(Psi) + Y_m3.*cos(Psi);
    X4 = X_m4.*cos(Psi) - Y_m4.*sin(Psi);
    Y4 = X_m4.*sin(Psi) + Y_m4.*cos(Psi);

    figure(fig)
    fig=fig+1;
    plot3(X,Y,Z,'lineWidth',3)
    hold on
    plot3(X1,Y1,Z,'--r','lineWidth',3)
    plot3(X2,Y2,Z,'--k','lineWidth',3)
    plot3(X3,Y3,Z,'--g','lineWidth',3)
    plot3(X4,Y4,Z,'--m','lineWidth',3)
    legend('Center of Mass','Motor 1','Motor 2','Motor 3','Motor 4')
    grid on
    title('Quadcopter Trajectory')
    xlabel('X Position(m)')
    ylabel('Y Position(m)')
    zlabel('Z Position(m)')

    🎉3 参考文献

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

    🌈4 Matlab代码、Simulink、文章

  • 相关阅读:
    YOLOv5实操——检测是否戴口罩
    SpringMVC11-拦截器
    C++不能在子类中构造函数的初始化成员列表中直接初始化基类成员变量
    使用C语言,编写猜数字小游戏(使用时间戳)
    虚拟局域网技术 (VLAN技术、tag帧、交换机端口的VLAN属性、以太网交换机的转发流程)
    Mybatis中Resources和ClassLoaderWrapper
    如何用python给女神写一封照片情书?亲测表白率100%~
    人生的思考
    UOS 序列号激活指令及方法
    字节跳动内网开源的《Python项目开发实战》,GitHub飙升!
  • 原文地址:https://blog.csdn.net/Ke_Yan_She/article/details/132563806