当前位置: 首页 > news >正文

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),仅供参考

http://www.cnnetsun.cn/news/4159712.html

相关文章:

  • RDMA数据传输操作:Send/Recv与Read/Write全解析
  • AnythingLLM 教程:10 分钟搭建一个本地私有知识库问答应用
  • Element Tiptap富文本编辑器:Vue3项目5分钟接入带菜单的WYSIWYG编辑器
  • SPA 刷新 404 难题终结者:boot-react SinglePageAppConfig pushState 资源解析器深度剖析
  • 我的价值观
  • 如何使用 draw.io 桌面版:离线绘图与批量导出完整指南
  • CEdev 图形编程完全指南:graphx 库调色板、精灵动画与 Tilemap 实战教程
  • iOS跨平台位置模拟实战:基于WebKit调试协议实现GeoPort方案
  • Weasis:内建 2D/3D 影像分析的开源 DICOM 查看器
  • res-downloader完全教程:免费的跨平台资源嗅探器,一键下载视频音乐图片
  • PhoneProfilesPlus新手必学的8个实用场景:会议自动静音、通勤一键飞行模式
  • 让Claude Code、Codex与Gemini协同工作:Agent Relay Harnesses完整指南
  • 训练UniDetector前必看的20+个关键超参数:完整配置项逐条解读
  • 快速上手solid-dnd:10分钟从零搭建你的第一个拖拽应用,新手友好教程
  • 如何系统掌握高级数据结构?AlgorithmsAndDataStructuresInAction官方代码库入门指南
  • Vue-preview 图片预览:新手安装与上手完整指南
  • ShawzinBot:免费把 MIDI 变成游戏按键
  • 如何重置 Navicat 试用期:3 条命令跑通 navicat-key 注册表清理工具
  • ODC 生产环境部署最佳实践:MetaDB、Docker 与高可用架构配置全解析
  • 让联邦查询提速10倍:aws-athena-query-federation谓词下推、分区裁剪与TopN优化实战
  • MobilityDB高精度建模:tpose四元数姿态类型如何描述自动驾驶与机器人运动
  • TeslaLogger新功能MCP Server详解:用自然语言向AI查询你的特斯拉数据
  • B站视频下载完全指南:5 分钟跑通 BilibiliDown,把喜欢的内容存进本地
  • Rollbar.js Node.js 接入实战:Express 服务端错误追踪的 5 步配置法
  • paperetl PubMed 高级过滤教程:用 MeSH 编码与关键词精准筛选科研文献
  • 读懂 Apktool ApkInfo:APK 元数据的存储、加载与回写
  • MusicPlayer2:免费开源的本地音乐播放器,10分钟讲透歌词、封面与音效
  • hubot-rocketchat架构深潜:hubot-meteorchat驱动模型与@rocket.chat/sdk响应式订阅完整指南
  • 一文掌握grafar.map:响应式依赖追踪与自动拓扑推断完全教程
  • 如何快速上手XRNeRF:Neural Radiance Field环境部署完整指南(含Docker一键搭建与避坑清单)