MissionPlanner架构梳理之(十四)日志浏览
概述和目的
Mission Planner 中的日志浏览系统提供了加载、查看、分析和解读 ArduPilot 驱动的飞行器生成的飞行日志的工具。飞行日志包含飞行操作期间记录的关键遥测数据,使用户能够查看飞行性能、诊断问题并从过去的飞行中获取见解。
本页记录了日志浏览系统的架构、组件和功能。有关生成或下载飞行日志的信息,请参阅数据分析。
日志浏览架构
日志浏览系统由几个相互连接的组件组成,负责加载、解析和可视化飞行日志数据。
日志文件格式和结构
Mission Planner 支持两种主要日志格式:
- 文本日志(.log):以逗号分隔的值,可供人类阅读的文本日志
- 二进制日志(.bin):需要解析的紧凑二进制格式
两种格式都包含具有以下组件的结构化消息:
- 消息类型:标识数据类型(例如 GPS、ATT、IMU)
- 字段:该消息类型的特定数据值
- 时间戳:通常以启动时的毫秒或微秒为单位
日志格式由日志开头的 FMT 消息定义,它指定了所有后续消息的结构。
核心日志浏览组件
LogBrowse 类
日志浏览功能的主类,以 Windows 窗体形式实现。它负责加载日志、向用户呈现数据并提供分析功能。
主要职责:
- 加载和解析日志文件
- 以多种格式(网格、图表、地图)显示日志数据
- 支持参数选择和过滤
- 促进数据分析和导出
DFLogBuffer 类
用于高效读取和管理日志数据的缓冲区实现。它提供枚举功能和高级缓存以优化性能。
主要职责:
- 缓冲读取日志文件
- 缓存日志条目以实现更快的访问
- 索引消息类型以便快速查找
- 解析二进制日志格式
DFLog 类
日志数据表示和解析的核心类。它定义日志条目的数据结构,并提供从日志中提取数据的方法。
主要职责:
- 定义日志项结构
- 解析日志消息
- 不同时间格式之间的转换
- 提供数据访问实用程序
日志数据流和处理
下图说明了日志数据如何在系统中流动:
可视化组件
图形显示(ZedGraph)
LogBrowse 使用 ZedGraph 库创建日志数据的交互式图表。可以同时绘制多个参数以供分析。
主要特点:
- 多 Y 轴支持
- 缩放和平移
- 时间相关性
- 参数比较
地图显示(GMap)
地理地图显示,显示日志中的飞行路径和位置数据。使用 GMap.NET 进行渲染。
主要特点:
- 飞行路径可视化
- 位置标记
- 多 GPS 源支持
- 地图叠加功能
用户界面元素
参数选择树
分层树状视图显示日志中所有可用的参数。用户可以选择参数进行可视化和分析。
主要特点:
- 按消息类型分组
- 复选框选择
- 工具提示信息
- 位掩码参数支持
数据网格视图
原始日志数据的表格视图允许用户浏览所有日志条目。
主要特点:
- 列标题自定义
- 行导航
- 单元格值格式
- 排序功能
控制面板
包含用于控制日志浏览体验的按钮和复选框。
关键组件:
- 图形控制按钮
- 地图切换
- 错误/警告显示选项
- 模式/事件可视化切换
日志分析功能
数据图表
该系统支持绘制具有可自定义选项的多个参数:
- 从树视图中选择参数
- 在左 Y 轴或右 Y 轴上绘图
- 清除和添加图表数据
- 导出图形数据
模式和事件可视化
日志浏览器可以可视化:
- 飞行模式改变(MODE消息)
- 系统事件(EV消息)
- 错误情况(ERR 消息)
- 参数更改(PARM 消息)
基于地图的分析
日志中的 GPS 数据可以在地图上可视化,以便分析:
- 飞行路线
- 定位精度
- 速度和高度变化
- 多个 GPS 源比较
数据处理工作流程
加载和解析过程
加载日志文件时,LogBrowse 系统执行以下步骤:
- 文件加载:打开日志文件并确定其是二进制还是文本格式
- 格式扫描:读取 FMT 消息以确定日志结构
- 索引:按类型创建索引以便快速访问消息
- 缓存:构建缓存以实现高效的数据访问
- 参数提取:提取参数值以供参考
- UI Population:使用可用参数填充树视图
高级功能
基于表达的分析
该系统支持自定义表达式进行高级分析,使用类似 Python 的脚本系统从日志数据中创建派生值。
数据导出选项
日志数据可以以多种格式导出:
- 用于电子表格分析的 CSV
- 用于科学分析的 MATLAB 格式
- 特定工具的自定义格式
日志时间同步
系统处理机载时间和 GPS 时间之间的时间同步,以在日志中提供准确的时间戳。
用户界面布局
LogBrowse 界面采用分割容器组织,允许用户根据需要调整不同面板的大小:
常见用例
- 飞行路径分析:在地图上查看航班的 GPS 轨迹
- 性能调整:分析控制面响应和姿态变化
- 电机和功率分析:检查功耗和电机输出
- 错误诊断:识别和理解系统错误和警告
- 参数验证:确认参数设置是否正确应用
加载指示器
LogBrowse 系统使用 Loading 类在日志加载和解析等长时间操作期间向用户提供反馈。
概括
Mission Planner 中的日志浏览系统提供了全面的工具,用于分析 ArduPilot 飞行器的飞行日志。通过其直观的界面,用户可以加载日志,通过图表和地图可视化数据,并进行详细分析以提升飞行性能并诊断问题。
该系统的模块化架构在性能和可用性之间取得平衡,能够高效处理文本和二进制日志格式,同时提供强大的可视化和分析功能。