MissionPlanner架構梳理之(十四)日志瀏覽

概述和目的

Mission Planner 中的日志瀏覽系統提供了加載、查看、分析和解讀 ArduPilot 驅動的飛行器生成的飛行日志的工具。飛行日志包含飛行操作期間記錄的關鍵遙測數據,使用戶能夠查看飛行性能、診斷問題并從過去的飛行中獲取見解。

本頁記錄了日志瀏覽系統的架構、組件和功能。有關生成或下載飛行日志的信息,請參閱數據分析。

日志瀏覽架構

日志瀏覽系統由幾個相互連接的組件組成,負責加載、解析和可視化飛行日志數據。

日志文件格式和結構

Mission Planner 支持兩種主要日志格式:

  1. 文本日志(.log):以逗號分隔的值,可供人類閱讀的文本日志
  2. 二進制日志(.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 系統執行以下步驟:

  1. 文件加載:打開日志文件并確定其是二進制還是文本格式
  2. 格式掃描:讀取 FMT 消息以確定日志結構
  3. 索引:按類型創建索引以便快速訪問消息
  4. 緩存:構建緩存以實現高效的數據訪問
  5. 參數提取:提取參數值以供參考
  6. UI Population:使用可用參數填充樹視圖

高級功能

基于表達的分析

該系統支持自定義表達式進行高級分析,使用類似 Python 的腳本系統從日志數據中創建派生值。

數據導出選項

日志數據可以以多種格式導出:

  • 用于電子表格分析的 CSV
  • 用于科學分析的 MATLAB 格式
  • 特定工具的自定義格式

日志時間同步

系統處理機載時間和 GPS 時間之間的時間同步,以在日志中提供準確的時間戳。

用戶界面布局

LogBrowse 界面采用分割容器組織,允許用戶根據需要調整不同面板的大小:

常見用例

  1. 飛行路徑分析:在地圖上查看航班的 GPS 軌跡
  2. 性能調整:分析控制面響應和姿態變化
  3. 電機和功率分析:檢查功耗和電機輸出
  4. 錯誤診斷:識別和理解系統錯誤和警告
  5. 參數驗證:確認參數設置是否正確應用

加載指示器

LogBrowse 系統使用 Loading 類在日志加載和解析等長時間操作期間向用戶提供反饋。

概括

Mission Planner 中的日志瀏覽系統提供了全面的工具,用于分析 ArduPilot 飛行器的飛行日志。通過其直觀的界面,用戶可以加載日志,通過圖表和地圖可視化數據,并進行詳細分析以提升飛行性能并診斷問題。

該系統的模塊化架構在性能和可用性之間取得平衡,能夠高效處理文本和二進制日志格式,同時提供強大的可視化和分析功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/100369.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/100369.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/100369.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習shap分析案例

在進行數據分析和機器學習時經常用到shap,本文對shap相關的操作進行演示。波士頓數據集鏈接在這里。 SHAP Analysis Guide Set up 導入必要包 import pandas as pd import numpy as np import lightgbm as lgb import matplotlib import matplotlib.pyplot as p…

網絡編程相關函數

1. 套接字操作相關1.1 socketint socket(int domain, int type, int protocol);參數說明int domain協議族,常用 AF_INET(IPv4)、AF_INET6(IPv6)int type套接字類型,SOCK_DGRAM(UDP)、…

ESLint 自定義 Processor(處理器)

ESLint 自定義 Processor(處理器) 🔹 什么是 Processor? 在 ESLint 中,Processor(處理器)是一種擴展機制,允許處理非標準 JavaScript/TypeScript 文件。默認情況下,ESLin…

C++語法 | static靜態|單例模式

這里寫目錄標題static 關鍵字靜態局部變量 vs 局部變量靜態全局變量 vs 全局變量靜態成員變量 vs 成員變量靜態成員函數單例模式static 關鍵字 在此之前, 先了解一下 static 關鍵字 靜態局部變量 vs 局部變量 在靜態局部變量中,變量不會在函數調用結束后銷毀&…

KEDA/HPA/VPA 三件套:ABP 后臺作業的事件驅動伸縮

🚀 KEDA/HPA/VPA 三件套:ABP 后臺作業的事件驅動伸縮 📚 目錄🚀 KEDA/HPA/VPA 三件套:ABP 后臺作業的事件驅動伸縮0. TL;DR ?1. 背景與目標 🎯2. 架構與協作機制 🧩2.1 系統總覽(組…

webRTc 為何深受直播實現的青睞?

WebRTC(Web Real-Time Communication)之所以在直播場景中備受青睞,核心原因在于它天然契合了現代直播對低延遲、實時互動、跨平臺兼容性的核心需求,同時大幅降低了實時音視頻開發的門檻。具體來說,其優勢體現在以下幾個方面: 1. 超低延遲,滿足實時互動需求 傳統直播協…

HarmonyOS迷宮游戲鴻蒙應用開發實戰:從零構建隨機迷宮游戲(初版)

在鴻蒙應用開發中,游戲類應用能很好地鍛煉 UI 布局、狀態管理與邏輯交互能力。本文將以一個隨機迷宮游戲為例,詳細拆解從首頁設計到迷宮生成、角色控制、通關判定的完整開發流程,帶你掌握 ArkUI 框架的核心應用技巧。一、項目整體架構本次開發…

石頭科技出海升級:全球電商業財一體化與OMS實踐

石頭科技作為智能清潔設備領域的獨角獸,2023 年海外收入占比超過 60%,產品銷往全球 60 多個國家。然而,智能硬件出海的復雜性,讓企業在業財管理上面臨前所未有的挑戰。智能硬件業財痛點 產品生命周期管理:研發、生產到…

《URP管線中后處理效果的創新應用與優化實踐》

硬件性能的飛速提升與玩家對畫面品質的高要求形成了相互推動的態勢,而渲染效果作為游戲視覺體驗的核心載體,直接決定了玩家對游戲的第一印象與沉浸感。后處理效果作為URP管線的“點睛之筆”,通過在渲染流程末尾對最終圖像進行二次加工,能夠模擬真實世界的光學現象(如光線散…

【Java 底層】JVM 垃圾回收機制深度剖析:從對象生死判定到收集器實戰

【Java 底層】JVM 垃圾回收機制深度剖析:從對象生死判定到收集器實戰 【Java 底層】JVM 垃圾回收機制深度剖析:從對象生死判定到收集器實戰 Java 之所以被稱為 “開發效率利器”,很大程度上得益于其自動內存管理機制 —— 開發者無需手動分配…

網絡問題排查

網絡連通性測試:ping ip持續性監測:ping -t ipnetstat 可以查看網絡連接狀態,可以看到顯示系統的網絡連接,路由表,接口等信息。netstat -nult 回車-t:顯示的是tcp的連接-u:顯示udp的連接-l:只顯示監聽狀態的端口-n:顯示…

tuple/dict/list 這三個數據類型在取值時候的區別

tuple(元組)、dict(字典)、list(列表)在取值時的區別。 1. list(列表) 👉 列表就是“一串有順序的東西”,像排隊的人。 取值方式:用 下標&#xf…

深度解析大模型服務性能評測:AI Ping平臺助力開發者精準選型MaaS服務

深度解析大模型服務性能評測:AI Ping平臺助力開發者精準選型MaaS服務 🌟 Hello,我是摘星! 🌈 在彩虹般絢爛的技術棧中,我是那個永不停歇的色彩收集者。 🦋 每一個優化都是我培育的花朵&#xff…

OpenCV物體跟蹤:從理論到實戰的全面解析

? 一、引言? 在計算機視覺的廣闊領域中,物體跟蹤技術宛如一顆璀璨的明星,散發著獨特的魅力與價值,發揮著舉足輕重的作用。它致力于在連續的圖像幀或視頻序列里,精準識別并持續定位特定的目標物體,這一過程看似簡單…

【Python】OS模塊操作目錄

1、概述os模塊是一個Python內置的操作目錄和查看系統基礎信息的模塊,可用于讓我們對目錄進行批量操作,其中包括:查看系統信息(環境變量、分隔符、換行符等),對目錄進行創建、刪除、重命名、查看目錄內容等&…

JavaScript中 i++ 與 ++i

在 JavaScript 編程中,i(前置自增)和i(后置自增)是兩個常用但極易混淆的運算符。它們看似都能實現變量自增 1 的功能,但其執行時機和返回值的差異,常常導致開發者在實際編碼中出現邏輯錯誤。本文…

fastapi 中間件的使用

1. 中間件基礎結構from starlette.middleware.base import BaseHTTPMiddlewareclass RequestLoggerMiddleware(BaseHTTPMiddleware):async def dispatch(self, request: Request, call_next):# 1. 請求處理前邏輯# 2. 調用后續處理response await call_next(request)# 3. 響應…

網絡白菜包子手動安裝 Arch Linux

大家好!我是大聰明-PLUS!針對初學者的 Arch Linux 安裝詳細教程。我曾經花了不少時間才搞清楚安裝過程。本文旨在提供一種“捷徑”,讓每個人都能輕松上手,無論他們是否有 Linux 使用經驗。Arch 的主要特點是極其靈活的系統配置&am…

Linux學習筆記(五)--Linux基礎開發工具使用

在Linux中軟件包通常是指一個包含了軟件程序、元數據、依賴關系信息和安裝腳本的壓縮文件??。因為在Linux上如果沒有軟件包管理器,那么想要下載軟件會非常麻煩,不僅需要自己去手動編譯和安裝,而且難以卸載和管理,所以軟件包的出現解決了這些問題.軟件包一般是由程序文件(編譯…

數據結構(陳越,何欽銘) 第十講 排序(下)

10.1 快速排序 10.1.1 算法概述10.1.2 選主元10.1.3 子集劃分10.1.4 算法實現10.2 表排序 10.2.1 算法概述10.2.2 物理排序10.3 基數排序 10.3.1 桶排序10.3.2 基數排序10.3.3 多關鍵字的排序10.4 排序算法的比較