PX4 统计飞行日志分析:Flight Review 公共日志数据集与批量处理实践
2026/9/24 16:44:33 网站建设 项目流程
  • 嵌入式
  • 物联网
  • 机器人
  • 自动驾驶
  • 智能硬件

【免费下载链接】PX4-Autopilot

PX4 Autopilot Software

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

导读

PX4 的统计飞行日志分析(Statistical Flight Log Analysis)建立在 Flight Review 托管的大规模公开 ULog 数据集之上:开发者可以利用这些真实飞行日志开展统计研究、机器学习训练、算法回归测试与故障模式分析。本文以官方统计日志分析文档为主线,完整介绍公共日志数据集的构成与许可、基于download_logs.py的批量下载工作流、基于pyulog的日志解析与二次开发方法,并结合本仓库(PX4-Autopilot)中的上传、下载与 EKF 分析脚本给出可直接落地的实践方案。

统计飞行日志分析:为什么要用公开日志

单次飞行的日志分析解决的是"这一架次飞得如何"的问题,而**统计性(statistical)**日志分析解决的是"一整批飞行数据的规律是什么"的问题。后者的典型场景包括:

  • 对比不同机架、不同固件版本的振动分布,评估硬件与滤波配置的整体表现;
  • 统计 EKF 估计器在大量飞行中的传感器融合失败率,定位共性问题;
  • 为机器学习模型准备带标签的真实飞行样本(如正常/异常分类);
  • 在固件发布前,用历史日志批量回归验证控制与估计性能。

围绕这一目标,PX4 官方提供了一条完整的工具链:Flight Review 在线平台负责托管与展示日志,download_logs.py负责批量获取日志,pyulog负责程序化解析日志,而本仓库中的 Tools/ecl_ekf/analyse_logdata_ekf.py 等脚本则展示了基于这些能力构建具体分析流水线的完整范例。

Flight Review 公共日志数据集

Flight Review 在线工具 是 PX4 官方的网页版日志分析与分享平台,它同时托管了一个大型公开日志库,供统计分析和机器学习等用途免费取用。这部分正是 统计飞行日志分析文档 的核心内容。

该数据集的覆盖范围包括多种维度:

维度说明
机型(vehicle types)多旋翼、固定翼、垂直起降(VTOL)、无人车等不同机型
PX4 版本稳定版本以及开发版本(main 分支中间产物)
硬件板卡(boards)不同飞控硬件平台上录制的日志
飞行模式手动、自稳、任务、返航等不同模式下的数据

所有日志通过 Flight Review 的浏览页面按时间倒序提供访问,并采用CC-BY PX4(知识共享署名 4.0)许可发布,这意味着在保留署名的情况下,可以自由复制、分发、改编用于统计研究与再发布。数据集的来源与贡献机制是闭环的:使用者既可以通过网页界面上传日志,也可以使用本仓库中的 Tools/upload_log.py 脚本批量上传.ulg文件到 Flight Review 服务器(脚本支持--type flightreport|personal--public--description--rating等参数,上传成功后返回可分享的分析报告 URL),从而不断扩充这个公共数据集。

批量下载日志:download_logs.py

对于统计研究而言,手动逐个下载日志是不可行的。Flight Review 项目提供了专用的download_logs.py批量下载脚本(该脚本维护在 flight_review 代码仓库中,与 PX4-Autopilot 仓库是不同项目),它具备以下关键能力:

  • 按属性过滤:支持按飞行模式、机架名称(airframe name)或机架类型(airframe type)等属性筛选日志,只下载你关心的子集;
  • 完整参数列表:使用--help标志即可查看脚本支持的全部过滤与输出参数;
  • 最新优先:默认从最新上传的日志开始下载,便于始终拿到最新固件版本的数据;
  • 断点续传:下载过程可以随时中断,之后重新运行脚本即可从断点继续,无需从头开始。

一个典型的工作流是:先用--help确认可用的过滤参数,构造一条只包含"某型号多旋翼 + 某 PX4 版本"的下载命令,把数 GB 的公开日志拉取到本地,再交给下面的解析工具链处理。

补充说明:本仓库中的 Tools/log_encryption/download_logs.py 是另一个方向的日志获取工具——它通过 MAVLink 协议(LOG_REQUEST_LIST/LOG_REQUEST_DATA消息)直接从飞行器或 GCS 下载机载日志,并支持自动识别加密日志(.ulge)。如果你的目标是"从自己的飞机上批量取日志",可以参考它;如果目标是"从公共数据集批量取日志",则使用 Flight Review 的download_logs.py

用 pyulog 解析 ULog

拿到日志后,需要程序化解析才能做统计分析。官方推荐的解析库是pyulog——一个用于读取 ULog 文件的 Python 包,同时提供一组命令行脚本用于提取、展示和转换 ULog 信息。详细介绍见 飞行日志分析。

核心命令行脚本

pyulog 安装后会注册为系统级命令(前提是本机装有 Python),所有脚本都支持-h查看用法:

脚本用途
ulog_info显示 ULog 文件的基本信息(时长、丢弃点、消息与数据点统计)
ulog_messages显示日志中记录的调试与状态消息
ulog_params从 ULog 文件中提取参数
ulog2csv将 ULog 转换为(多个)CSV 文件
ulog2kml将 ULog 转换为(多个)KML 文件

例如查看一条日志的信息:

$ ulog_info sample.ulg Logging start time: 0:01:52, duration: 0:01:08 Dropouts: count: 4, total duration: 0.1 s, max: 62 ms, mean: 29 ms Info Messages: sys_name: PX4 time_ref_utc: 0 ver_hw: AUAX_X21 ver_sw: fd483321a5cf50ead91164356d15aa474643aa73 Name (multi id, message size in bytes) number of data points, total bytes 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

Dropouts一行直接给出日志记录过程中产生的数据丢失统计(次数、总时长、最大/最长的单次间隔),这正是 Flight Review 使用指南 中"采样规律性(Sampling Regularity)"图表所关注的指标来源。ver_hw/ver_sw字段则标明了录制日志的硬件与固件版本——当你要按"PX4 版本"过滤数据集做统计对比时,这个字段就是关键依据。

在 Python 中编程使用

pyulog 同样可以作为库导入使用,本仓库中的 EKF 分析工具就把它作为基础依赖。例如 Tools/ecl_ekf/analyse_logdata_ekf.py 顶部直接from pyulog import ULog,随后通过ulog.get_dataset('estimator_states', multi_instance).data等方式读取 EKF 估计器状态、状态标志与创新量等数据集,配合起飞检测器(InAirDetector)与指标计算模块,批量生成 EKF 健康度检查报告。这说明:公共日志数据集 + pyulog + 自研分析脚本可以组成可复用的统计流水线,对成千上万条日志做统一口径的自动评估。

从统计到结论:结合 Flight Review 图表解读

批量统计的价值最终要落到"如何解读指标"。当统计结果指出某类机架振动偏高或 EKF 融合异常时,可以回到 Log Analysis using Flight Review 中逐图定位根因:

  • Actuator Controls FFT 与 Acceleration Power Spectral Density:用于评估振动水平与滤波配置,健康的频谱应在低频段之外保持平坦;
  • Raw Acceleration:悬停或慢速飞行时 z 轴波形不应与 x/y 轴波形交叠;
  • Estimator Watchdog:应恒为 0,非零表示估计器检测到传感器问题(如磁罗盘干扰);
  • Sampling Regularity:丢包过多说明日志缓冲区过小、记录速率过高或 SD 卡质量不足,这直接影响统计数据集的可用性。

需要注意的是,公共日志来自大量不同用户与硬件配置,统计结论的边界条件(机型、版本、板卡、飞行模式)必须在报告中显式标注,才能保证可复现与可比对。

延伸阅读

  • 飞行日志分析(工具总览):包含 Data Comets、FlightPlot、Flight Review、PlotJuggler、pyulog、PX4Tools 等全量工具对比;
  • Log Analysis using Flight Review:Flight Review 各图表的逐项解读与问题定位方法;
  • PlotJuggler 日志分析:桌面端深度可视化分析;
  • ULog 文件格式:理解日志内部结构,便于自定义解析;
  • 日志记录(Logging):了解 SDLOG_PROFILE 等记录配置,保证数据质量;
  • Tools/upload_log.py:向公共数据集贡献日志的官方脚本;
  • Tools/log_encryption/download_logs.py:MAVLink 方式批量下载机载日志的参考实现。
  • 嵌入式
  • 物联网
  • 机器人
  • 自动驾驶
  • 智能硬件

【免费下载链接】PX4-Autopilot

PX4 Autopilot Software

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载
上一篇:AlphaZero五子棋AI深度解析:从理论到实战的完整指南
下一篇:终极指南:如何在macOS上运行Windows软件和游戏

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询