主要内容gydF4y2Ba

Multorotor.gydF4y2Ba

多旋翼无人机的制导模型gydF4y2Ba

描述gydF4y2Ba

一个gydF4y2BaMultorotor.gydF4y2Ba对象表示了一种无人机(UAV)的降阶制导模型。该模型近似于一个由自动驾驶仪控制器和一个多转子三维运动模型组成的闭环系统的行为。gydF4y2Ba

关于固定翼无人机,请参阅gydF4y2Ba固定翼翼gydF4y2Ba。gydF4y2Ba

创建gydF4y2Ba

模型= multirotorgydF4y2Ba创建一个多转子运动模型gydF4y2Ba双倍的gydF4y2Ba引导模型的输入,输出和配置参数的精度值。gydF4y2Ba

模型= multirotor(数据类型)gydF4y2Ba指定数据类型精度(gydF4y2Ba数据类型gydF4y2Ba属性)用于导航模型的输入、输出和配置参数。gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

UAV的名称,用于区分它与工作空间中的其他模型,指定为一个字符串标量。gydF4y2Ba

例子:gydF4y2Ba“myuav1”gydF4y2Ba

数据类型:gydF4y2Ba字符串gydF4y2Ba

UAV控制器配置,指定为参数的结构。指定这些参数以调整UAV的内部控制行为。指定动态模型和其他UAV参数的比例(P)和导数(d)增益。对于Multotor UVS,该结构包含这些字段,其中包含默认值:gydF4y2Ba

  • 'pdroll'gydF4y2Ba-gydF4y2Ba[3402.97 116.67]gydF4y2Ba

  • 'pdpitch'gydF4y2Ba-gydF4y2Ba[3402.97 116.67]gydF4y2Ba

  • “PYawRate”gydF4y2Ba-gydF4y2Ba1950gydF4y2Ba

  • “佩斯”gydF4y2Ba-gydF4y2Ba3900gydF4y2Ba

  • '大量的'gydF4y2Ba-gydF4y2Ba0.1gydF4y2Ba(以千克)gydF4y2Ba

例子:gydF4y2Bastruct('pdroll',[3402.97,116.67],'pdpitch',[3402.97,116.67],'Pyawrate',1950,'Pellust',3900,'Mass',0.1)gydF4y2Ba

数据类型:gydF4y2Ba结构体gydF4y2Ba

此属性是只读的。gydF4y2Ba

UAV指导模型类型,指定为gydF4y2Ba“MultirotorGuidance”gydF4y2Ba。gydF4y2Ba

输入和输出数字数据类型,指定为gydF4y2Ba'双倍的'gydF4y2Ba或者gydF4y2Ba“单一”gydF4y2Ba。根据可能的软件或硬件限制选择数据类型。指定gydF4y2Ba数据类型gydF4y2Ba当第一次创建对象时。gydF4y2Ba

对象的功能gydF4y2Ba

控制gydF4y2Ba 无人机控制命令gydF4y2Ba
导数gydF4y2Ba 无人机状态的时间导数gydF4y2Ba
环境gydF4y2Ba 无人机的环境输入gydF4y2Ba
状态gydF4y2Ba 无人机状态向量gydF4y2Ba

例子gydF4y2Ba

全部收缩gydF4y2Ba

此示例显示了如何使用gydF4y2BaMultorotor.gydF4y2Ba制导模型,以模拟无人机由于指令输入而产生的状态变化。gydF4y2Ba

建立多旋翼制导模型。gydF4y2Ba

型号= Multorot;gydF4y2Ba

创建一个状态结构。在世界坐标中指定位置。gydF4y2Ba

s =国家(模型);s (1:3) = (3; 2; 1);gydF4y2Ba

指定控件命令,gydF4y2BaugydF4y2Ba,指定多电机的卷和推力。gydF4y2Ba

u =控制(模型);u.Roll =π/ 12;u.Thrust = 1;gydF4y2Ba

创建一个没有风的默认环境。gydF4y2Ba

e =环境(模型);gydF4y2Ba

根据当前状态、控制命令和环境,计算状态的时间导数。gydF4y2Ba

sdot =导数(模型、s u, e);gydF4y2Ba

模拟UAV状态使用gydF4y2BaODE45.gydF4y2Ba一体化。这gydF4y2BaygydF4y2Ba字段将固定翼UAV状态输出为13-逐个gydF4y2BangydF4y2Ba矩阵。gydF4y2Ba

simout = ode45(@(〜,x)衍生物(型号,x,u,e),[0 3],s);大小(Simout.y)gydF4y2Ba
ans =gydF4y2Ba1×2gydF4y2Ba13 3536.gydF4y2Ba

根据仿真输出绘制滚转角的变化曲线。横摇角(X欧拉角)是第9行gydF4y2BasimOut.ygydF4y2Ba输出。gydF4y2Ba

绘图(Simout.y(9,:))gydF4y2Ba

绘制Y和Z位置的变化。使用指定的推力和滚动角度,多电孔应飞过并失去一些高度。Z的正值预计为正Z下降。gydF4y2Ba

图绘图(Simout.y(2,:));抓住gydF4y2Ba上gydF4y2Ba:情节(simOut.y (3));传奇(gydF4y2Ba'y-position'gydF4y2Ba,gydF4y2Ba“z位置”gydF4y2Ba) 抓住gydF4y2Ba离开gydF4y2Ba

您还可以使用多电泳轨迹绘制gydF4y2Baplottransforms.gydF4y2Ba。从模拟状态创建平移和旋转向量。下拍(每300个元素)并转换gydF4y2BasimOutgydF4y2Ba元素,并将欧拉角转换为四元数。指定网格作为gydF4y2Bamultirotor.stlgydF4y2Ba文件和正Z方向gydF4y2Ba“下”gydF4y2Ba。显示的视图显示了无人机在y方向的平移和高度的下降。gydF4y2Ba

翻译= simout.y(1:3,1:300:结束)';gydF4y2Ba% xyz的位置gydF4y2Ba旋转= Eul2quat(Simout.y(7:9,1:300:END)');gydF4y2Ba% ZYX股票欧拉gydF4y2Baplottransforms(翻译,旋转,gydF4y2Ba…gydF4y2Ba'meshfilepath'gydF4y2Ba,gydF4y2Ba“multirotor.stl”gydF4y2Ba,gydF4y2Ba“InertialZDirection”gydF4y2Ba,gydF4y2Ba“下”gydF4y2Ba)视图([90.00 - -0.60])gydF4y2Ba

更多关于gydF4y2Ba

全部展开gydF4y2Ba

参考资料gydF4y2Ba

[1] Mellinger,Daniel和Nathan Michael。“具有四分之二的精确侵略性操纵的轨迹生成和控制。”gydF4y2Ba国际机器人研究杂志gydF4y2Ba。2012,第664-74页。gydF4y2Ba

扩展功能gydF4y2Ba

C / C ++代码生成gydF4y2Ba
使用MATLAB®Coder™生成C和C ++代码。gydF4y2Ba

介绍了R2018bgydF4y2Ba