飞行日志分析
本主题概述了可用于分析 PX4 飞行日志的工具和方法(在某些情况下,会提供指向更详细主题的链接)。
:::信息 飞行报告 介绍了如何下载日志,以及如何与开发团队报告/讨论有关飞行的问题。 :::
结构化分析
在分析飞行日志之前,明确其背景信息至关重要:
- 如果是在故障发生后进行分析,日志是记录到了故障发生时刻,还是在飞行途中就停止记录了?
- 所有控制器是否都能跟踪其设定值?最简单的方法是将横滚和俯仰的角速度与其设定值进行对比。
- 传感器数据看起来是否有效?是否存在强烈振动(一般认为,峰峰值超过 2 - 3 m/s² 可视为强烈振动)。
- 如果根本原因并非特定于飞行器,请务必在 PX4 问题追踪器 上报告,并附上日志文件链接(如有视频也一并附上)。
排查电力故障
如果日志文件在飞行中途结束,主要有两个可能原因:电力故障或操作系统硬故障。
在基于 STM32 系列 的自动驾驶仪上,硬故障会记录到 SD 卡中。这些文件位于 SD 卡顶层,命名为 fault_date.log,例如 fault_2017_04_03_00_26_05.log。如果飞行日志突然结束,您应检查是否存在此文件。
分析工具
Flight Review(在线工具)
Flight Review 是 Log Muncher 的继任者,它与新的 ULog 日志格式配合使用。
主要特点:
- 基于网页,非常适合终端用户。
- 用户可通过网页界面上传日志,然后与他人分享报告(使用 upload_log.py 脚本支持批量上传)。
- 支持交互式绘图。
有关介绍,请参阅 使用 Flight Review 进行日志分析。
PlotJugler
PlotJugler 是一款桌面应用程序,用户可借助它轻松可视化和分析以时间序列形式呈现的数据。它是最好的 ULog 分析工具之一,因为它能展示日志中的所有信息(相比之下,Flight Review 仅显示一小部分数据)。
自 2.1.4 版本起,它支持 ULog 文件(.ulg)。
主要特点:
- 直观的拖放式界面。
- 可将数据安排在多个图表、选项卡或窗口中。
- 所有 uORB 主题均会显示并可绘制图表。
- 整理好数据后,可将其保存到 “布局” 文件中,便于多次重新加载。
- 可在 PlotJuggler 中使用自定义 “数据转换” 处理数据。
源代码和下载内容可在 Github 上获取。
有关介绍,请参阅 使用 Plot Juggler 进行日志分析。
pyulog
pyulog 是一个用于解析 ULog 文件的 Python 包,同时还包含一组命令行脚本,用于提取/显示 ULog 信息并将其转换为其他文件格式。
主要特点:
- 用于分析 ulog 文件的 Python 库,是许多其他 ULog 分析和可视化工具使用的基础库。
- 用于提取/显示 ulog 信息的脚本:
- ulog_info:显示 ULog 文件中的信息。
- ulog_messages:显示 ULog 文件中记录的消息。
- ulog_params:从 ULog 文件中提取参数。
- 用于将 ulog 文件转换为其他格式的脚本:
- ulog2csv:将 ULog 转换为(多个)CSV 文件。
- ulog2kml:将 ULog 转换为(多个)KML 文件。
所有脚本都会安装为系统级应用程序(即在安装了 Python 的情况下,可在命令行中调用),并支持使用 -h
标志获取使用说明。例如:
$ ulog_info -h
用法: ulog_info [-h] [-v] file.ulg
显示 ULog 文件中的信息
位置参数:
file.ulg ULog 输入文件
可选参数:
-h, --help 显示此帮助信息并退出
-v, --verbose 详细输出
以下是使用 ulog_info 从示例文件中导出的信息示例:
$ ulog_info sample.ulg
日志记录开始时间: 0:01:52,持续时间: 0:01:08
丢包情况: 计数 4,总时长 0.1 秒,最长 62 毫秒,平均 29 毫秒
信息消息:
sys_name: PX4
time_ref_utc: 0
ver_hw: AUAV_X21
ver_sw: fd483321a5cf50ead91164356d15aa474643aa73
名称(多 ID,消息大小(字节)) 数据点数,总字节数
actuator_controls_0 (0, 48) 3269 156912
actuator_outputs (0, 76) 1311 99636
commander_state (0, 9) 678 6102
control_state (0, 122) 3268 398696
cpuload (0, 16) 69 1104
ekf2_innovations (0, 140) 3271 457940
estimator_status (0, 309) 1311 405099
sensor_combined (0, 72) 17070 1229040
sensor_preflight (0, 16) 17072 273152
telemetry_status (0, 36) 70 2520
vehicle_attitude (0, 36) 6461 232596
vehicle_attitude_setpoint (0, 55) 3272 179960
vehicle_local_position (0, 123) 678 83394
vehicle_rates_setpoint (0, 24) 6448 154752
vehicle_status (0, 45) 294 13230
FlightPlot
FlightPlot 是一款基于桌面的日志分析工具,可从 FlightPlot 下载(支持 Linux、MacOS、Windows 系统)。
主要特点:
- 基于 Java,跨平台。
- 直观的图形用户界面,无需编程知识。
- 支持新旧 PX4 日志格式(如.px4log、.ulg、.bin)。
- 可将图形保存为图像。
PX4Tools
PX4Tools 是一个用 Python 编写的 PX4 自动驾驶仪日志分析工具箱。推荐使用 anaconda3 进行安装,详情请参阅 px4tools github 页面。
主要特点:
- 易于分享,用户可在 Github 上查看笔记本(例如 15-09-30 Kabir Log.ipynb)。
- 基于 Python,跨平台,可与 anaconda 2 和 anaconda3 配合使用。
- 使用 iPython/jupyter notebooks 可方便地共享分析结果。
- 具备高级绘图功能,便于进行详细分析。
MAVGCL
MAVGCL 是一款用于 PX4 的飞行中日志分析器,也可离线使用下载的 uLog 文件。
主要特点:
- 基于 MAVLink 消息或 MAVLink 上的 ULOG 数据进行实时数据采集(50 毫秒采样,100 毫秒滚动显示)。
- 带有消息(MAVLink 和 ULog)和参数更改(仅 MAVLink)注释的时间图。
- 选定关键指标的 XY 分析。
- 3D 视图(飞行器和观察者视角)。
- MAVLink 检查器面板(报告原始 MAVLink 消息)。
- 离线模式:从 PX4Log/ULog 导入关键指标(通过 WiFi 从设备获取文件或最后一次日志)。
- 基于 Java,可在 MacOS 和 Ubuntu 上运行。
- 更多功能……
Data Comets
Data Comets 是一款交互式 PX4 飞行日志分析工具,可将飞行数据编码到飞行路径上,按时间过滤和筛选数据,功能丰富!
对于较小的日志文件(< 32Mb),您可使用该工具的在线版本,若要分析较长的飞行记录,可在本地运行。