导数
无人机状态的时间导数
描述
使用当前状态、控制命令和环境输入确定无人机制导模型状态的时间导数。使用状态和时间导数stateDerivative
= ' (uavGuidanceModel
,状态
,控制
,环境
)数值
来模拟无人机。
例子
模拟一个多旋翼控制命令
方法的使用multirotor
该制导模型用于模拟无人机由于指令输入而引起的状态变化。
创建多旋翼制导模型。
型号=多旋翼;
创建一个状态结构。在世界坐标中指定位置。
S =状态(模型);S (1:3) = [3;2;1];
指定一个控制命令,u
,规定了多旋翼机的滚转和推力。
U =控制(模型);u.Roll = pi/12;u.推力= 1;
创建一个没有风的默认环境。
E =环境(模型);
给定当前状态、控制命令和环境,计算状态的时间导数。
Sdot =导数(模型,s,u,e);
模拟无人机状态使用数值
集成。的y
字段输出多旋翼无人机状态为13 ×n矩阵。
simOut =数值(@ (~,x)导数(模型、x u, e), [0 3], s);大小(simOut.y)
ans =1×23536年13
根据仿真输出绘制滚转角度变化图。滚动角(X欧拉角)是第9行simOut.y
输出。
:情节(simOut.y(9日)
画出Y轴和Z轴位置的变化。在指定的推力和滚转角度下,多旋翼应该飞过并失去一些高度。Z的值为正值,因为Z是正的。
:图绘制(simOut.y (2));持有在:情节(simOut.y (3));传奇(“坐标”,“z位置”)举行从
您还可以使用绘图多旋翼轨迹plotTransforms
.根据模拟状态创建平移和旋转向量。下采样(每300个元素)并转置simOut
元素,并将欧拉角转换为四元数。指定网格为multirotor.stl
文件和正z方向为“向下”
.所显示的视图显示无人机在y方向上平移并失去高度。
translations = simOut.y(1:3,1:300:end)';% xyz位置= eul2quat(simOut.y(7:9,1:300:end)');欧拉plotTransforms(平移、旋转、...“MeshFilePath”,“multirotor.stl”,“InertialZDirection”,“向下”)视图([90.00 -0.60])
模拟一个固定翼控制命令
方法的使用fixedwing
该制导模型用于模拟无人机由于指令输入而引起的状态变化。
创建固定翼制导模型。
模型=固定翼;
通过修改结构来设置飞行器的空气速度状态
函数。
S =状态(模型);S (4) = 5;% 5 m/s
指定一个控制命令,u
,保持空气速度,并给出一个滚动角度π/ 12
.
U =控制(模型);u.RollAngle = pi/12;u.AirSpeed = 5;
创建一个没有风的默认环境。
E =环境(模型);
给定当前状态、控制命令和环境,计算状态的时间导数。
Sdot =导数(模型,s,u,e);
模拟无人机状态使用数值
集成。的y
在此仿真基础上,现场输出固定翼无人机的状态。
simOut =数值(@ (~,x)导数(模型、x u, e), 50 [0]);大小(simOut.y)
ans =1×2904年8
根据仿真输出绘制滚转角度变化图。滚动角是第7行simOut.y
输出。
:情节(simOut.y(7日)
你也可以用plotTransforms
.根据模拟状态创建平移和旋转向量。降低采样(每30个元素)和转置simOut
元素,并将欧拉角转换为四元数。指定网格为fixedwing.stl
文件和正z方向为“向下”
.所显示的视图显示无人机基于恒定的滚转角度进行恒定的转弯。
downsample = 1:30:size(simOut.y,2);翻译= simOut.y(1:3,downsample)';% xyz-positionrotation = eul2quat([simOut.y(5,downsample)',simOut.y(6,downsample)',simOut.y(7,downsample)']);欧拉plotTransforms(平移、旋转、...“MeshFilePath”,“fixedwing.stl”,“InertialZDirection”,“向下”)举行在: plot3 (simOut.y (1), -simOut.y (2:), simOut.y (3:)“——b”)%全路径xlim ([-10.0 - 10.0]) ylim ([-20.0 - 5.0]) zlim([-0.5 - 4.00])视图(90 [-45])从
输入参数
uavGuidanceModel
- - - - - -无人机制导模型
fixedwing
对象|multirotor
对象
无人机制导模型,指定为fixedwing
或multirotor
对象。
状态
- - - - - -状态向量
eight-element向量|thirteen-element向量
状态向量,指定为八元素或十三元素向量。向量总是用0填充。使用这个函数来确保状态向量的大小合适。
对于固定翼无人机,状态是一个八元向量:
北-北方向位置,单位为米。
东-位置在东方方向,单位为米。
高度-离地高度,单位:米。
空速-相对于风的速度,单位为米/秒。
HeadingAngle-地面速度与北方方向之间的夹角,以弧度为单位。
FlightPathAngle-地面速度与东北平面之间的夹角(以弧度为单位)。
RollAngle-沿身体旋转的角度x-轴,单位为弧度/秒。
RollAngleRate-沿物体旋转的角速度x-轴,单位为弧度/秒。
对于多旋翼无人机,状态是一个13元矢量,顺序如下:
世界的位置-
[x y z]
在米。世界的速度-
[vx vy vz]
单位是米每秒。欧拉角(ZYX)-
[psi theta]
在弧度。身体角速率-
[p q r]
单位是弧度/秒。推力-
F
在牛顿。
环境
- - - - - -环境输入参数
结构
环境输入参数,作为结构返回。要生成此结构,请使用环境
.
对于固定翼无人机,结构场为WindNorth
,WindEast
,WindDown
,重力
.风速的单位是米每秒,负风速指向相反的方向。重力的单位是米每秒的平方(默认)9.81
).
对于多旋翼无人机,结构的唯一元素是重力
(默认9.81
)单位为米每秒的平方。
控制
- - - - - -无人机控制命令
结构
无人机的控制命令,指定为结构。要生成此结构,请使用控制
.
对于多旋翼无人机,制导模型近似为每个指令的独立PD控制器。该结构的元素是控制命令:
卷
-以弧度为单位的滚动角度。球场
-俯仰角,以弧度为单位。YawRate
-偏航率,以弧度/秒为单位。(d = 0。仅P控制器)推力
-垂直推力的无人机牛顿。(d = 0。仅P控制器)
对于固定翼无人机,该模型假设无人机在协调转弯条件下飞行。制导模型方程假设侧滑为零。总线的元素有:
高度
-离地面高度,单位为米。空速
-无人机速度相对于风米每秒。RollAngle
-滚动角度沿身体前轴弧度。由于协调转弯条件,航向角速率基于滚转角。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
版本历史
在R2018b中引入
另请参阅
功能
对象
块
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。