主要内容

可视化自定义飞行日志

配置flightLogSignalMapping对象可视化自定义飞行日志中的数据。

加载自定义飞行日志

在本例中,假设飞行数据已经被解析到MATLAB®中,并存储为MAT文件。本例重点介绍配置flightLogSignalMapping对象,以便正确处理保存在MAT文件中的日志数据并将其可视化。数据,customFlightData.mat,存储包含3个字段的结构。财政司司长为MAT文件中存储的信号的采样频率。IMU轨迹是包含实际飞行信息的矩阵。轨迹数据和IMU数据是基于在xy平面上沿投影矩形路径飞行的模拟飞行。

customData =负载(“customFlightData.mat”); logData=customData.logData
logData =结构体字段:IMU: [2785×9 double] Fs: 100轨迹:[2785×10 double]

IMU野外logData是一个n- × 9矩阵,前三列是加速度计的读数 / 年代 2 .下面三列是陀螺仪的读数 rad / 年代 ,最后三列是磁强计读数 μ T

logData.IMU(1:5,:)
ans=5×90.8208 0.7968 10.7424 0.0873 0.0873 0.0862 327.6000 297.6000 283.8000 0.8016 0.8160 10.7904 0.0883 0.0873 0.0862 327.6000 293.8000 0.7680 0.7680 10.7568 0.0862 0.0851 0.0851 327.6000 297.6000 283.8000 0.8208 0.736 10.7520 0.0873 0.0883 0.0819 327.6000 297.6000 283.8000 0.7872 0.7728 10.7328 0.0873 0.0862 0.0830 327.6000 297.6000 283.8000

轨迹野外logData是一个n-by-9矩阵,前3列为中的XYZ坐标 .接下来的3列是在XYZ NED方向的速度 / 年代 ,最后4列是描述无人机从惯性NED框架到机身框架的四元数。每一行都是定义了所有这些参数的轨迹的单个点。

日志数据。轨迹(1:5,:)
ans=5×100.0200 0 -4.0000 2.0000 0 -0.0036 1.0000 00 -0.0000 0.0400 0 -4.0001 2.0000 0 -0.0072 1.0000 00 -0.0000 0.0600 0 -4.0002 2.0000 0 -0.0108 1.0000 00 -0.0000 0.0800 0 -4.0003 2.0000 0 -0.0143 1.0000 00 -0.0000 0.1000 0 -0.0179 1.0000 00 -0.0001

使用预定义的信号格式和绘图可视化自定义飞行日志

创建一个flightLogSignalMapping对象没有输入参数,因为自定义日志格式不遵循标准。ulog”或“tlog”释义

customPlotter=flightLogSignalMapping;

对象具有一组预定义的信号,您可以映射这些信号。通过映射这些预定义的信号,您可以访问一组预定义的图。注意,一些信号有“#”符号后缀。对于这些信号,您可以选择将整数作为后缀添加到信号名称中,这样飞行日志绘图仪就可以处理多个此类信号,例如次级IMU信号和气压计读数。调用信息

%预定义信号信息(customPlotter“信号”
ans =18×4表“信号名称”是一个信号场,信号场场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场场,信号场场场场场,信号场场场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,信号场,场,场,场,研究UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU研究UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU“加速”错误“加速度,加速度,加速度”“m/s^2,m/s^2,m/s^2”“空速#”“假”按Diff,表示速度,温度”“Pa,m/s,度数”“姿态调节器”“假”滚动,俯仰,偏航”“弧度,弧度”“姿态调节器”“假”车身旋转率X,车身旋转率Y,车身旋转率Z”“弧度/秒,弧度/秒”“姿态调节器”“假”滚动目标,俯仰目标,YawTarget“rad,rad,rad”气压计“false”按ABS,按海拔高度,温度“Pa,m,degreeC”电池“false”电压“u1,电压“u2,电压”u3,电压“u4,电压”u5,电压“u6,电压”u7,电压“u8,电压”u9,电压“u10,电压”u11,电压“u12,电压”u13,电压“u14,电压“u15,电压”u16,剩余容量”“v,v,v,v,v,v,v,v,v,v,v,v,v,v,%”GPS#“假”纬度、经度、高度、地面速度、航向角、卫星可见度、度、度、米、米、米、米、米、秒、度、不适用“假”陀螺、陀螺、陀螺、陀螺、陀螺、回旋、弧度、弧度、弧度、弧度、弧度、弧度、弧度、弧度、弧度、弧度、弧度、弧度、弧度、弧度、弧度“false”VX,VY,VZ“m/s,m/s,m/s”LocalENUVelTarget“false”VXTarget,VYTarget,VZTarget“m/s,m/s,m/s”LocalNED“false”X,Y,Z“m,m,m”LocalNEDTarget“false”X,Y,Z“m,m,m”localnevel“false”VX,VY,VZ“m/s,m/s”⋮
%预定义的情节信息(customPlotter“情节”
ans =10×4表PlotName ReadyToPlot MissingSignals RequiredSignals  _______________________ ___________ ____________________________________ ____________________________________ " 态度“false”AttitudeEuler AttitudeRate,陀螺#”“AttitudeEuler AttitudeRate,陀螺#”“AttitudeControl“false”AttitudeEuler, AttitudeTargetEuler”“AttitudeEuler,“GPS 2d”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS 2d”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假“GPS#”假LocalNEDTarget" " trajectory "LocalNED, LocalNEDTarget" "LocalNED, LocalNEDTarget" " trajectory "LocalNEDVel, LocalNEDVelTarget"

flightLogSignalMapping对象需要知道数据如何存储在飞行日志中,然后才能可视化数据。将信号名称与访问中相关信息的函数句柄相关联logData,你必须使用地图信号地图信号.每个信号被定义为一个时间戳向量和一个信号值矩阵。

例如,要映射陀螺#信号,定义一个timeAccess功能手柄基于传感器数据采样频率。此函数句柄使用数据的全局时间戳间隔为信号值生成时间戳向量。

timeAccess = @ (x)秒(1 /范*(1:尺寸(x.IMU)));

接下来,检查必须为陀螺#信号使用信息

信息(customPlotter“信号”“陀螺#”
ans =1×4表SignalName IsMapped SignalFields FieldUnits  __________ ________ _____________________ _____________________ " 陀螺#“false”GyroX、GyroY GyroZ”“rad / s, rad / s, rad / s”

陀螺#信号需要三列包含XYZ轴的陀螺仪读数。定义gyroAccess函数相应地处理并映射它timeAccess使用地图信号

gyroAccess = @ (x) x.IMU (: 4:6);mapSignal (customPlotter“陀螺”,时间存取,陀螺存取);

同样,映射飞行日志中存在的数据的其他预定义信号。定义数据的值函数句柄。使用相同的方法映射信号timeAccess时间戳向量函数。

% IMU数据存储加速度计和磁强计数据。accelAccess = @ (x) x.IMU (:, 1:3);magAccess = @ (x) x.IMU(:,七章)* 1飞行;%局部NED坐标系下的飞行轨迹% XYZ坐标nedAccess = @ x (x)。轨迹(:, 1:3);% XYZ celocitiesnedVelAccess = @ x (x)。轨迹(:4:6);从四元数转换的俯仰偏航旋转attitudeAccess = @翻转(quat2eul (x (x)。轨迹(:7:10)),2);%为自定义数据配置flightLogSignalMappingmapSignal (customPlotter“加速”,时间访问,加速访问);地图信号(自定义绘图仪,“杂志”、timeAccess magAccess);mapSignal (customPlotter“LocalNED”、timeAccess nedAccess);mapSignal (customPlotter“LocalNedLevel”、timeAccess nedVelAccess);mapSignal (customPlotter“AttitudeEuler”、timeAccess attitudeAccess);

一旦所有信号都被映射出来,customPlotter准备根据存储在日志中的信号数据生成图。为了快速检查信号是否正确映射,调用checkSignal并指定logData。

checkSignal (customPlotter logData);
-------------------------------------------- SignalName:陀螺通过  -------------------------------------------- SignalName: Accel通过  -------------------------------------------- SignalName:杂志通过  -------------------------------------------- SignalName: LocalNED通过  -------------------------------------------- SignalName:LocalNEDVel通过  -------------------------------------------- SignalName: AttitudeEuler通过

要获得映射信号的预览,请在checkSignal中选择预览选项。

checkSignal (customPlotter logData,“预览”“关于”“信号”“加速”);
--------------------------------------------SignalName:Accel Pass按一个键继续,或按“q”退出。数字需要重点关注。

要可视化飞行记录数据,呼叫显示并指定logData.图中显示了所有基于映射信号的图。

预定义绘图=显示(自定义绘图仪、日志数据);

使用自定义绘图可视化自定义飞行日志

对于mod细节日志分析,定义更多的信号,并添加更多的图,而不是存储在预定义的图flightLogSignalMapping. 指定过滤大于1的加速度的函数句柄。

accelThreshold = @ (x) (vecnorm (accelAccess (x)) > 11)”;mapSignal (customPlotter“HighAccel”timeAccess accelThreshold,“AccelGreaterThan11”“不适用”);

调用updatePlot添加自定义图。将飞行日志绘图仪对象和绘图的名称指定为前两个参数。要指定数据的时间序列,请使用“Timeseries”作为第三个参数,然后列出数据。

updatePlot (customPlotter“AnalyzeAccel”“Timeseries”,[“HighAccel。AccelGreaterThan11”“LocalNEDVel。VX”“LocalNEDVel。v”“LocalNEDVel。款”]);

定义用于生成图形句柄的自定义函数句柄(请参见下面的函数定义)。此函数使用fft和其他函数上的加速度数据和绘图。函数返回一个函数句柄。

updatePlot (customPlotter“plotFFTAccel”@ (acc) plotFFTAccel (acc),“加速”);

检查customPlotter现在包含一个新信号和两个使用信息

信息(customPlotter“信号”
ans =19×4表SignalName IsMapped SignalFields FieldUnits  _____________________ ________ __________________________________________________________________________________________________________________________________________________________________________________________________________ ___________________________________________________ " Accel“真正的”访问AccelX AccelZ”“米/秒^ 2米/秒^ 2米/秒^ 2”“AttitudeEuler”真正的“横滚、俯仰、偏航”“rad、rad rad”“陀螺”真正的“GyroX、GyroY GyroZ”“rad / s, rad / s, rad / s”“HighAccel”真正的“AccelGreaterThan11”“N / A”“LocalNED”真正的“X, Y, Z”“米、米,米”“LocalNEDVel”真正的“v, VX VZ”“m / s, m / s, m / s”“杂志”真正的“MagX, MagY, MagZ”“Gs、Gs、“Airspeed#”假“PressDiff, IndicatedAirSpeed, Temperature”“Pa, m/s, degreeC”“态度”假“BodyRotationRateX, BodyRotationRateX, BodyRotationRateZ”“rad/s, rad/s, rad/s”“态度targeteuler”假“RollTarget, PitchTarget, YawTarget”“rad, rad, rad”“气压表#”假“PressAbs, PressAltitude, Temperature”“Pa, m,degreeC" "Battery" false "Voltage_1, Voltage_2, Voltage_3, Voltage_4, Voltage_5, Voltage_6, Voltage_7, Voltage_8, Voltage_9, Voltage_10, Voltage_11, Voltage_12, Voltage_13, Voltage_14, Voltage_15, Voltage_16, RemainingCapacity" "v, v, v, v, v, v, v, v, v, v, v, v, v, v, %" "GPS#" " false "纬度,经度,海拔,地速度,课程角度,卫星可见" "度,度,m, m/s,度,N/A" "LocalENU"假"X, Y, Z" "m, m, m" " localenuttarget "假"XTarget, YTarget, ZTarget" "m, m, m" "LocalENUVel"假"VX, VY, VZ" "m/s, m/s, m/s"⋮
信息(customPlotter“情节”
ans =12×4表图上的文章文章文章的图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图图分析加速度“真”“高加速度,本地电平”“姿态”真“姿态调节器”“姿态调节器,姿态调节器,陀螺仪”“姿态控制”真“姿态调节器”“姿态调节器,姿态调节器”“指南针”真“GPS”真“GPS”真“GPS”真“ATITUDEEULER”,Mag,GPS“高度”真“气压计”,GPS“气压计”,GPS“气压计”,GPS“气压计”,LocalNEDTarget,LocalNEDTarget“轨迹”真“LocalNEDTarget”LocalNEDTarget,LocalNEDTarget“轨迹跟踪”真“LocalNEDTarget”LocalNEDTarget“轨迹跟踪”真“LocalNEDVelTarget”LocalNEDVelTarget“轨迹跟踪”真“LocalNEDVelTarget”LocalNEDVel“LocalNEDVel,LocalNEDVelTarget”Plottaccel“真实”加速“电池”错误“电池”错误“电池”错误“GPS”错误“GPS”错误“速度”错误“GPS”,空速“GPS”,空速

指定要打印的打印名称。呼叫显示使用“PlotsToShow”将加速度数据的分析可视化。

accelAnalysisProfile=[“AnalyzeAccel”“plotFFTAccel”]; accelAnalysisPlots=显示(自定义绘图仪、日志数据、,“PlotsToShow”, accelAnalysisProfile);

这个例子展示了如何使用flightLogSignalMapping对象查看预定义的信号和图,以及自定义您自己的图为飞行日志分析。

分析加速数据功能定义

函数h = plotFFTAccel(acc)“名称”“AccelFFT”);ax = newplot (h);v = acc.Values {1};Fs = v.Properties.SampleRate;N =地板(长度(v.AccelX) / 2) * 2;(ax,“关于”);对于x = v{1:N, idx};xdft = fft (x);xdft = xdft (1: N / 2 + 1);psdx = (1/(Fs*N)) * abs(xdft).^2;psdx (2: end-1) = 2 * psdx (2: end-1);频率= 0:Fs /长度(x): Fs / 2;情节(ax频率10 * log10 (psdx));终止(ax,“关闭”);标题(“使用FFT周期图”);包含(“f (Hz)”);ylabel (“功率/频率(dB / Hz)”);传奇(“AccelX”“访问”“AccelZ”);终止