news 2026/8/22 15:56:29

PyULog:8条命令解析PX4 ULog日志,导出CSV、KML与SQLite

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 15:54:08

RDMA数据传输操作:Send/Recv与Read/Write全解析

摘要: 本文深入解析RDMA的四种核心数据传输操作:Send/Recv与Read/Write。我们将探讨消息语义与内存语义的本质区别,剖析RDMA如何通过硬件级授权实现“零拷贝”与“零CPU干预”。结合AI大模型训练中的GPUDirect RDMA实战场景,带你彻…

作者头像 李华
网站建设 2026/8/22 15:51:21

AnythingLLM 教程:10 分钟搭建一个本地私有知识库问答应用

AnythingLLM 教程:10 分钟搭建一个本地私有知识库问答应用 【免费下载链接】anything-llm Stop renting your intelligence. Own it with AnythingLLM. Everything you need for a powerful local-first agent experience 项目地址: https://gitcode.com/GitHub_…

作者头像 李华
网站建设 2026/8/22 15:43:33

我的价值观

世界上最不负责人的话就是穷穷养,富富养,儿孙自有儿孙福。

作者头像 李华
网站建设 2026/8/22 15:43:18

如何使用 draw.io 桌面版:离线绘图与批量导出完整指南

如何使用 draw.io 桌面版:离线绘图与批量导出完整指南 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop draw.io 桌面版是一个基于 Electron 的离线图表绘制工具&…

作者头像 李华