如何用 PyULog 解析无人机 ULog 飞行日志一份从安装到批量入库的完整指南【免费下载链接】pyulogPython module scripts for ULog files项目地址: https://gitcode.com/gh_mirrors/py/pyulogPyULog 是一个用 Python 编写的 ULog 飞行日志解析与数据转换工具能把 PX4 飞控记录的二进制日志变成 CSV、KML 和 SQLite 数据库适合无人机开发者、飞控数据分析师与科研人员。先看难题一次试飞结束你拿到一个 .ulg 文件用文本编辑器打开全是乱码。ULog 是 PX4 飞控使用的二进制日志格式里面记录了整趟飞行的传感器、姿态和 GPS 数据。想确认气压计什么时候开始报错、飞行中哪些参数被改过就需要能解析这种格式的工具这正是 PyULog 要做的事。三步装好跑通第一次解析第一步安装从包管理器安装最省事pip install pyulog如果还想看或改源码可以先git clone https://gitcode.com/gh_mirrors/py/pyulog拿到仓库再执行pip install -e .做开发式安装。第二步运行第一条命令安装后ulog_info等命令会直接出现在命令行里。仓库的test/目录自带一个 sample.ulg可以直接上手ulog_info test/sample.ulg第三步看懂输出结果分三块日志开始时间与飞行时长、数据丢失统计丢失次数、总时长、单次最大时长、以及记录下来的数据流清单。清单里每行是一条数据流比如 sensor_combined、vehicle_attitude后面跟着记录点数和总字节数。文件没问题的话这一条命令就能帮你摸清热带的数据全貌。核心功能详解用日志消息排查飞行异常怀疑飞行出了问题时先看日志里的文本消息ulog_messages sample.ulg输出是“时间 级别 内容”的格式传感器没接上、组件初始化失败这类问题会以 ERROR 行直接冒出来是最快的定位路径。把飞行数据导出为 CSV要做控制延迟、电池消耗这类定量分析就把数据导出成 CSV再用你顺手的工具处理ulog2csv sample.ulg -m sensor_combined,vehicle_gps_position -o flight_data/-m参数用来只取需要的数据流每条数据流会单独写成一个 CSV 文件。导出逻辑位于pyulog/ulog2csv.py模块。在地图上查看飞行轨迹想在地图软件里回看航迹用 KML 导出ulog2kml sample.ulg -o flight_path.kml。注意要先pip install simplekml位置数据默认取自 vehicle_gps_position 数据流也可以用--topic换成别的流。入库到 SQLite 做批量查询日志攒多了之后逐文件处理就不划算了。先用ulog_migratedb初始化数据库再用pyulog/db.py里的 DatabaseULog 类把日志读写到 SQLite 中。首次入库较慢之后按主键读取很快适合做“找出所有航班报警前 30 秒”这类跨航次的查询。转成 ROS 2 bag 文件需要在 ROS 2 系统里回放日志话题时用ulog2ros2bag转换。前提是 ROS 2 环境里已编译并 source 了相应版本的 px4_msgs属于一次性操作参数看ulog2ros2bag -h即可。进阶技巧与使用建议大日志先配合-m过滤数据流按流或按时间段分批导出避免内存压力入库后务必保留原始 .ulg 文件数据库是“一次写入”设计无法就地更新已有记录升级版本后先跑一遍ulog_migratedb否则数据库操作会因表结构不一致而失败检查文件完整性看ulog_info -v的 dropouts 与坏包统计核心解析逻辑在pyulog/core.py只需要某条数据流的结构化数据时可直接调用pyulog/extract_message.py里的extract_message它支持按时间范围筛选返回字典列表常见问题速查问日志文件损坏或数据缺失怎么判断先跑ulog_info。PyULog 能检测损坏的数据包并报告丢失情况次数、总时长、单次最大时长都会给出借此区分是日志文件的问题还是飞行系统的问题。问只想导出某个传感器的数据用-m传逗号分隔的数据流名如-m sensor_combined,vehicle_gps_position。问转 KML 时报缺少模块执行pip install simplekml后重试。PyULog 的解析与转换都是现成的你只需选择输出格式。现在就安装它用今天的日志跑一遍ulog_info剩下的交给它。【免费下载链接】pyulogPython module scripts for ULog files项目地址: https://gitcode.com/gh_mirrors/py/pyulog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考