PyULog:8条命令解析PX4 ULog日志,导出CSV、KML与SQLite
PyULog:8条命令解析PX4 ULog日志,导出CSV、KML与SQLite
【免费下载链接】pyulogPython module & scripts for ULog files项目地址: https://gitcode.com/gh_mirrors/py/pyulog
PyULog是Python ULog日志解析与转换工具包,把PX4飞控记录的ULog二进制飞行日志转成CSV、KML、ROS2 bag等3种格式,并支持SQLite入库。适合飞行数据分析与轨迹可视化。
🔧 PyULog如何安装并运行第一条ulog_info命令
用 pip 安装后,系统里会得到 8 个命令行工具:ulog_info、ulog_messages、ulog_params、ulog2csv、ulog2kml、ulog2ros2bag、ulog_migratedb 和 ulog_extract_gps_dump,全部支持 -h 查看用法。下面的第一条命令安装依赖,第二条命令查看任意一个 .ulg 日志的概况:
pip install pyulog ulog_info sample.ulg执行后,开头几行给出日志开始时间、总时长和丢包(dropout)统计,仓库里的示例日志是 0:01:52 开始、持续 0:01:08、丢包 4 次共 0.1 秒;随后是一张消息流清单,列出每条流的数据点数量和字节数,例如 sensor_combined 有 17070 个点、actuator_controls_0 有 3269 个点。你据此就能先判断这份日志包含哪些数据、规模多大。
📊 PyULog 8条命令的能力清单
| 核心能力 | 所在模块 | 解决什么问题 |
|---|---|---|
| 日志概况、丢包与软硬件版本(ulog_info) | pyulog/info.py | 快速确认日志完整性与数据分布 |
| 系统日志与 ERROR 消息(ulog_messages) | pyulog/messages.py | 按时间戳定位报错,如气压计缺失 |
| 参数表导出(ulog_params) | pyulog/params.py | 比对多架飞行器的配置差异,支持 CSV 与 Octave 格式 |
| 转 CSV(ulog2csv) | pyulog/ulog2csv.py | 导入 pandas 或电子表格做数值分析 |
| 转 KML 轨迹(ulog2kml) | pyulog/ulog2kml.py | 在 Google Earth 中查看飞行轨迹 |
| 转 ROS2 bag(ulog2ros2bag) | pyulog/ulog2ros2bag.py | 在 ROS2 生态里回放飞行数据 |
| SQLite 建库与入库(ulog_migratedb、DatabaseULog) | pyulog/db.py | 按主键批量查询多份日志 |
| PX4 事件解析(PX4Events) | pyulog/px4_events.py | 把事件编号还原为可读文本 |
🔄 如何用PyULog把ULog日志转成CSV
挑一条最典型的路径:把传感器消息流导出来做分析。
输入:一个 PX4 飞控录制的 .ulg 文件。
操作:用 -m 指定只导出需要的消息流(逗号分隔),用 -o 指定输出目录,缺省时输出到输入文件所在目录:
ulog2csv sample.ulg -m sensor_combined,vehicle_gps_position -o output/产出:output/ 目录下每条消息流各得到一份 CSV 文件,列名就是该消息定义里的字段,可直接用 pandas 读取,用于检查姿态曲线或 GPS 漂移。不带 -m 会导出全部消息流,长时间日志要注意磁盘占用。
📈 PyULog进阶用法:Python API、数据库与依赖
- 用 Python API 取单条数据流:pyulog/extract_message.py 提供
extract_message(),返回逐条记录的键值对列表,还能按起止时间(秒)截取区间,适合写自动化分析脚本:
from pyulog.extract_message import extract_message data = extract_message('sample.ulg', 'vehicle_gps_position', time_s=100)- 批量归档入库:先用
ulog_migratedb初始化数据库(当前 schema 版本为 5,迁移脚本位于 pyulog/sql/),再用 DatabaseULog 读取日志并调用 save() 写入,之后按主键即可秒级加载。条目是只写的,改数据需先 delete() 再 save(),且官方建议保留原始 .ulg 文件。 - 可选依赖:ulog2kml 需要额外安装 simplekml;ulog2ros2bag 需要本地 ROS2 环境并已构建 px4_msgs。
❓ PyULog常见问题
问:怎么判断日志是否损坏或有掉包?答:看 ulog_info 输出的 Dropouts 行;核心解析模块 的 ULog 类还提供 file_corruption 属性检测损坏包。
问:全量导出 CSV 太大怎么办?答:用 -m 只保留需要的消息流,或用 Python API 只导出指定时间区间。
问:schema 升级后 DatabaseULog 还能用吗?答:构造时会校验 schema 版本,不一致就报异常,需要重新执行 ulog_migratedb 迁移。
PyULog 用 8 条命令和 Python API 覆盖了单份日志查看、格式转换到批量归档这 3 类需求,底层解析由 核心解析模块 稳定支撑。建议你先跑一遍 ulog_info 和 ulog2csv,熟悉日志内部的消息流分布,再把数据接进自己的分析流程;日志量上来之后,再引入 SQLite 方案做集中管理。
【免费下载链接】pyulogPython module & scripts for ULog files项目地址: https://gitcode.com/gh_mirrors/py/pyulog
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
