主要内容gydF4y2Ba

multirotorgydF4y2Ba

多旋翼无人机制导模型gydF4y2Ba

描述gydF4y2Ba

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

关于固定翼无人机,请参见gydF4y2BafixedwinggydF4y2Ba.gydF4y2Ba

创建gydF4y2Ba

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

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

属性gydF4y2Ba

全部展开gydF4y2Ba

UAV的名称,用于将其与工作区中的其他模型区分开来,指定为字符串标量。gydF4y2Ba

例子:gydF4y2Ba“myUAV1”gydF4y2Ba

数据类型:gydF4y2Ba字符串gydF4y2Ba

UAV控制器配置,指定为参数结构。指定这些参数来调整无人机的内部控制行为。指定动态模型和其他无人机参数的比例(P)和导数(D)增益。对于多旋翼无人机,结构包含以下字段,并列出默认值:gydF4y2Ba

  • “PDRoll”gydF4y2Ba-gydF4y2Ba(3402.97 - 116.67)gydF4y2Ba

  • “PDPitch”gydF4y2Ba-gydF4y2Ba(3402.97 - 116.67)gydF4y2Ba

  • “PYawRate”gydF4y2Ba-gydF4y2Ba1950gydF4y2Ba

  • “PThrust”gydF4y2Ba-gydF4y2Ba3900gydF4y2Ba

  • “质量”gydF4y2Ba-gydF4y2Ba0.1gydF4y2Ba(以公斤计)gydF4y2Ba

例子:gydF4y2Ba结构(“PDRoll”,[3402.97,116.67],“PDPitch”,[3402.97,116.67],“PYawRate”,1950年,“PThrust”,3900年,“质量”,0.1)gydF4y2Ba

数据类型:gydF4y2Ba结构体gydF4y2Ba

此属性是只读的。gydF4y2Ba

无人机制导模型类型,指定为gydF4y2Ba“MultirotorGuidance”gydF4y2Ba.gydF4y2Ba

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

对象的功能gydF4y2Ba

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

例子gydF4y2Ba

全部折叠gydF4y2Ba

方法的使用gydF4y2BamultirotorgydF4y2Ba该制导模型用于模拟无人机由于指令输入而引起的状态变化。gydF4y2Ba

创建多旋翼制导模型。gydF4y2Ba

型号=多旋翼;gydF4y2Ba

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

S =状态(模型);S (1:3) = [3;2;1];gydF4y2Ba

指定一个控制命令,gydF4y2BaugydF4y2Ba,规定了多旋翼机的滚转和推力。gydF4y2Ba

U =控制(模型);u.Roll = pi/12;u.推力= 1;gydF4y2Ba

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

E =环境(模型);gydF4y2Ba

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

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

模拟无人机状态使用gydF4y2Ba数值gydF4y2Ba集成。的gydF4y2BaygydF4y2Ba字段输出多旋翼无人机状态为13 ×gydF4y2BangydF4y2Ba矩阵。gydF4y2Ba

simOut =数值(@ (~,x)导数(模型、x u, e), [0 3], s);大小(simOut.y)gydF4y2Ba
ans =gydF4y2Ba1×2gydF4y2Ba3536年13gydF4y2Ba

根据仿真输出绘制滚转角度变化图。滚动角(X欧拉角)是第9行gydF4y2BasimOut.ygydF4y2Ba输出。gydF4y2Ba

:情节(simOut.y(9日)gydF4y2Ba

图中包含一个轴对象。axis对象包含一个line类型的对象。gydF4y2Ba

画出Y轴和Z轴位置的变化。在指定的推力和滚转角度下,多旋翼应该飞过并失去一些高度。Z的值为正值,因为Z是正的。gydF4y2Ba

:图绘制(simOut.y (2));持有gydF4y2Ba在gydF4y2Ba:情节(simOut.y (3));传奇(gydF4y2Ba“坐标”gydF4y2Ba,gydF4y2Ba“z位置”gydF4y2Ba)举行gydF4y2Ba从gydF4y2Ba

图中包含一个轴对象。axis对象包含2个line类型的对象。这些物体代表y轴位置,z轴位置。gydF4y2Ba

您还可以使用绘图多旋翼轨迹gydF4y2BaplotTransformsgydF4y2Ba.根据模拟状态创建平移和旋转向量。下采样(每300个元素)并转置gydF4y2BasimOutgydF4y2Ba元素,并将欧拉角转换为四元数。指定网格为gydF4y2Bamultirotor.stlgydF4y2Ba文件和正z方向为gydF4y2Ba“向下”gydF4y2Ba.所显示的视图显示无人机在y方向上平移并失去高度。gydF4y2Ba

translations = simOut.y(1:3,1:300:end)';gydF4y2Ba% xyz位置gydF4y2Ba= eul2quat(simOut.y(7:9,1:300:end)');gydF4y2Ba欧拉gydF4y2BaplotTransforms(平移、旋转、gydF4y2Ba...gydF4y2Ba“MeshFilePath”gydF4y2Ba,gydF4y2Ba“multirotor.stl”gydF4y2Ba,gydF4y2Ba“InertialZDirection”gydF4y2Ba,gydF4y2Ba“向下”gydF4y2Ba)视图([90.00 -0.60])gydF4y2Ba

图中包含一个轴对象。axis对象包含48个patch、line类型的对象。gydF4y2Ba

更多关于gydF4y2Ba

全部展开gydF4y2Ba

参考文献gydF4y2Ba

[1]梅林格,丹尼尔和内森·迈克尔。四旋翼飞行器精确攻击性机动的轨迹生成和控制gydF4y2Ba国际机器人研究杂志gydF4y2Ba.2012,第664-74页。gydF4y2Ba

扩展功能gydF4y2Ba

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

版本历史gydF4y2Ba

在R2018b中引入gydF4y2Ba