evo軌跡評估工具

文章目錄

  • evo參數設置
  • evo_traj
  • 指標度量
    • evo_ape
    • evo_rpe
  • 結果比較

evo工具主要有如下六個常用命令:

  • evo_ape - 用于評估絕對位姿誤差;
  • evo_rpe- 用于評估相對位姿誤差;
  • evo_traj - 這個主要是用來畫軌跡、輸出軌跡文件、轉換數據格式等功能;
  • evo_res- 比較來自evo_ape或evo_rpe生成的一個或多個結果文件的工具;
  • evo_fig - (實驗)工具,用于重新打開序列化圖(使用–serialize_plot保存);
  • evo_config - 這個主要用于evo工具全局設置和配置文件操作。

evo參數設置

#改變背景為白色背景的網格
evo_config set plot_seaborn_style whitegrid
#設置字體類型和比例
evo_config set plot_fontfamily serif plot_fontscale 1.3
#設置軌跡線寬
evo_config set plot_linewidth 1.2
#改變參考軌跡的線條樣式:
evo_config set plot_reference_linestyle -
#設置參考線顏色為紅色
evo_config set plot_reference_color red
#使用 LaTeX 渲染器,因為我們使用 LaTeX 來寫論文,所以我們也想使用 LaTeX 來渲染圖中的字體:
evo_config set plot_usetex
#您可能需要將 plot texsystem 參數更改為機器上安裝的 LaTeX 系統,如果這在第一次嘗試時不起作用。
evo_config set plot_texsystem pdflatex
#設置畫圖的圖像大小為寬10 高9
evo_config set plot_figsize 10 9

evo_traj

evo_traj命令十分有用,它主要用于畫軌跡圖、表格,轉換數據格式等等操作。

讀取bag軌跡

evo_traj bag data.bag /odom /tf:map.base_link --ref /groundtruth

將bag格式的數據導出為tum格式

evo_traj bag .bag --all_topics --save_as_tum 

將所有軌跡畫到一個圖里并保存

evo_traj tum --sync  -p --plot_mode xy --save_plot SAVE_PLOT --ref REF traj_file ...
  • --sync
    associate trajectories via matching timestamps , requires --ref
  • --ref REF
    trajectory that will be marked/used as the reference
  • -p, --plot
    show plot window
  • --plot_mode {xy,xz,yx,yz,zx,zy,xyz}
    the axes for plot projection
  • --save_plot SAVE_PLOT
    path to save plo

指標度量

這些內置的命令行應用程序可以讓你根據參考(groundtruth)評估估計的軌跡

  • evo_ape
  • evo_rpe
command format reference-trajectory estimated-trajectory [options] 
  • command:
    • evo_ape
    • evo_rpe
  • format:
    • kitti
    • tum
    • euroc
    • bag
    • bag2

evo_ape

用于評估兩條軌跡的絕對位姿誤差

對于SLAM系統, 估計軌跡的全局一致性是重要度量,如何評估全局一致性? 就是通過比較被估計值和真值軌跡之間的絕對距離來得到。

首先將兩條軌跡對齊。記P1:nP_{1:n}P1:n?代表軌跡的估計,Q1:nQ_{1:n}Q1:n?代表真值軌跡,則時間戳iii處的絕對估計誤差為:
Fi=Qi?1SPiF_i=Q_i^{-1}SP_iFi?=Qi?1?SPi?
則針對所有時刻定義平移分量的 均方根誤差(RMSE)、和方差(SSE):
RMSE(F1:n):=(∑i=1n∥Trans(Fi)∥2)1/2SSE:=∑i=1n∥Trans(Fi)∥2\begin{gathered} RMSE(F_{1:n}) :=\left(\sum\limits_{i=1}^n\|{\rm Trans}(F_i)\|^2\right)^{1/2} \\ SSE :=\sum\limits_{i=1}^n\|{\rm Trans}(F_i)\|^2 \end{gathered} RMSE(F1:n?):=(i=1n?Trans(Fi?)2)1/2SSE:=i=1n?Trans(Fi?)2?

evo_ape tum -a -p --save_plot SAVE_PLOT --plot_mode xy  --save_results SAVE_RESULTS ref_file est_file
  • -a, --align
    alignment with Umeyama’s method (no scale)
  • -p, --plot
    show plot window
  • --plot_mode {xy,xz,yx,yz,zx,zy,xyz}
    the axes for plot projection
  • --save_plot SAVE_PLOT
    path to save plot
  • --save_results SAVE_RESULTS
    .zip file path to store results

evo_rpe

相對位姿誤差測量了軌跡在一個固定的時間區間 Δ\DeltaΔ內的局部準確度。 因此,相對位姿誤差對應軌跡的漂移。

Ei:=(Qi?1Qi+Δ)?1(Pi?1Pi+Δ)E_i:=(Q_i^{-1}Q_{i+\Delta})^{-1}(P_i^{-1}P_{i+\Delta})Ei?:=(Qi?1?Qi+Δ?)?1(Pi?1?Pi+Δ?)

根據上式,對于一個有n個相機位姿的序列中,我們獲得m=n?Δm=n?\Deltam=n?Δ 個獨立的沿著序列的相對位姿誤差。則可以定義平移分量的的所有時刻的均方根誤差RMSE:
RMSE(E1:n,Δ):=(1m∑i=1m∥Trans(Ei)∥2)1/2RMSE(E_{1:n},\Delta):=\bigg(\frac{1}{m}\sum\limits_{i=1}^{m}\|\rm Trans(E_i)\|^2\bigg)^{1/2} RMSE(E1:n?,Δ):=(m1?i=1m?Trans(Ei?)2)1/2
上式中的 (Pi?1Pi+Δ)(P_i^{-1}P_{i+\Delta})(Pi?1?Pi+Δ?) 是估計的(Qi?1Qi+Δ)(Q_i^{-1}Q_{i+\Delta})(Qi?1?Qi+Δ?),計算 (Qi?1Qi+Δ)?1(Pi?1Pi+Δ)(Q_i^{-1}Q_{i+\Delta})^{-1} (P_i^{-1}P_{i+\Delta})(Qi?1?Qi+Δ?)?1(Pi?1?Pi+Δ?) 可以直觀的得到兩條軌跡的差值;

此處計算的是EiE_iEi?的平移分量,旋轉誤差也可以被估計,但一般平移誤差就足夠了(因為旋轉誤差會隨著平移誤差的上升而增加)。時間參數 Δ\DeltaΔ對于幀速較快的相同,如30Hz的傳感器,可選擇Δ=30\Delta=30Δ=30以得到每秒的漂移。

結果比較

evo_res  --use_rel_time --use_filenames -p --save_plot SAVE_PLOT --save_table SAVE_TABLE result_files [result_files ...]
  • --use_rel_time
    use relative timestamps if available
  • --use_filenames
    use the filenames to label the data
  • -p, --plot
    show plot window
  • --save_plot SAVE_PLOT
    path to save plot
  • --save_table SAVE_TABLE
    path to a file to save the results in a table

參考鏈接
github wiki

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

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

相關文章

Django+DRF 實戰:自定義異常處理流程

文章目錄一、DRF 異常處理流程DRF 默認異常處理流程源碼二、實戰DRF 自定義異常處理流程應用自定義異常處理流程一、DRF 異常處理流程 DRF 默認異常處理流程 DRF默認的異常處理流程如下: 當異常發生時,會自動調用rest_framework.views.exception_hand…

Spring MVC 1

什么是Spring Web MVC 官方對Spring MVC的描述是這樣的:Spring Web MVC 是基于Severlet API構建的原始Web框架,從一開始就包含在Spring框架中。它的正式名稱“Spring Web MVC”來自其源模塊的名稱(Spring-webmvc),但它…

一個基于若依(ruoyi-vue3)的小項目部署記錄

一、背景 收到朋友的求助,他拿到了一個項目的源代碼,說需要我幫助部署。部署要求是需要域名訪問。 因為沒有文檔和其他資料以及幫助,我先清理了源收到的資料: 1.后端:是java代碼,一看就是若依框架。心里大大…

【實戰總結】WMIC在HW行動中的4類關鍵應用

WMIC命令完全指南:網絡安全運維工程師的深度實踐手冊 關鍵詞:WMIC命令、Windows管理、網絡安全運維、系統信息收集、進程分析、自動化審計 【實戰總結】WMIC在HW行動中的4類關鍵應用 1. 前言 在Windows環境下的網絡安全運維中,WMIC&#x…

LKT4304穩定可靠高兼容性國產安全加密芯片

隨著 IOT 的飛速發展,智能家居,智能汽車,智能工控等物聯網設備和云服務的安全問題成為IOT普及的關鍵障礙。在設計之初就為物聯網產品配備正確的安全解決方案,是幫助預防措施的關鍵所在。LKT4304是凌科芯安專為物聯網應用場景而推出…

Android 網絡開發核心知識點

Android 網絡開發核心知識點 一、基礎網絡通信 1. HTTP/HTTPS 協議 HTTP方法:GET、POST、PUT、DELETE等狀態碼:200(成功)、404(未找到)、500(服務器錯誤)等HTTPS加密:SSL/TLS握手過程報文結構:請求頭/響應頭、請求體/響應體 2. 網…

DVWA靶場通關筆記-弱會話IDs(Weak Session IDs Medium級別)

目錄 一、Session ID 二、代碼審計(Medium級別) 1、配置security為Medium級別 2、源碼分析 (1)index.php (2)Medium.php (3)對比分析 (4)滲透思路 三…

編輯器Vim的快速入門

如大家所了解的,Vim是一個很古老的編輯器,但是并沒有隨著時間的流逝消失在編輯器/IDE 的競爭中,Vim 獨創的模式機制和 hjkl 移動光標方式使得使用者在編輯文件時可以雙手不離開鍵盤,極大地提升了工作效率。由于 Vim 學習曲線極為陡…

深度學習核心:從基礎到前沿的全面解析

🧠 深度學習核心:從基礎到前沿的全面解析 🚀 探索深度學習的核心技術棧,從神經網絡基礎到最新的Transformer架構 📋 目錄 🔬 神經網絡基礎:從感知機到多層網絡🖼? 卷積神經網絡&am…

MySQL索引:數據庫的超級目錄

MySQL索引:數據庫的「超級目錄」 想象你有一本1000頁的百科全書,要快速找到某個知識點(如“光合作用”): ? 無索引:逐頁翻找 → 全表掃描(慢!)? 有索引:直接…

景觀橋 涵洞 城門等遮擋物對汽車安全性的影響數學建模和計算方法,需要收集那些數據

對高速公路景觀橋影響行車視距的安全問題進行數學建模,需要將物理幾何、動力學、概率統計和交通流理論結合起來。以下是分步驟的建模思路和關鍵模型:一、 核心建模目標 量化視距(Sight Distance, SD):計算實際可用視距…

Git 用戶名和郵箱配置指南:全局與項目級設置

查看全局配置 git config --global user.name # 查看全局name配置 git config --global user.email # 查看全局email配置 git config --global --list # 查看所有全局配置查看當前項目配置 git config user.name # 查看當前項目name配置 git config user.email # 查看當前項目…

視頻序列和射頻信號多模態融合算法Fusion-Vital解讀

視頻序列和射頻信號多模態融合算法Fusion-Vital解讀概述模型整體流程視頻幀時間差分歸一化TSM模塊視頻序列特征融合模塊跨模態特征融合模塊概述 最近看了Fusion-Vital的視頻-射頻(RGB-RF)融合Transformer模型。記錄一下,對于實際項目中的多模…

frp內網穿透下創建FTP(解決FTP“服務器回應不可路由的地址。使用服務器地址替代”錯誤)

使用寶塔面板,點擊FTP,下載Pure-FTPd插件 點擊Pure-FTPd插件,修改配置文件,找到PassivePortRange, 修改ftp被動端口范圍為39000 39003,我們只需要4個被動端口即可,多了不好在內網穿透frp的配置文件中增加…

STM32控制四自由度機械臂(SG90舵機)(硬件篇)(簡單易復刻)

1.前期硬件準備 2s鋰電池一個(用于供電),stm32f103c8t6最小系統板一個(主控板),兩個搖桿(用于搖桿模式),四個電位器(用于示教器模式)&#xff0c…

華為OD機試_2025 B卷_最差產品獎(Python,100分)(附詳細解題思路)

題目描述 A公司準備對他下面的N個產品評選最差獎, 評選的方式是首先對每個產品進行評分,然后根據評分區間計算相鄰幾個產品中最差的產品。 評選的標準是依次找到從當前產品開始前M個產品中最差的產品,請給出最差產品的評分序列。 輸入描述 第…

飛算JavaAI:重塑Java開發效率的智能引擎

飛算JavaAI:重塑Java開發效率的智能引擎 一、飛算JavaAI核心價值 飛算JavaAI是全球首款專注Java語言的智能開發助手,由飛算數智科技(深圳)有限公司研發。它通過AI大模型技術實現: 全流程自動化:從需求分析→軟件設計→代碼生成一氣呵成工程級代碼輸出:生成包含配置類、…

Java和Go各方面對比:現代編程語言的深度分析

Java和Go各方面對比:現代編程語言的深度分析 引言 在當今的軟件開發領域,選擇合適的編程語言對項目的成功至關重要。Java作為一門成熟的面向對象語言,已經在企業級開發中占據主導地位超過25年。而Go(Golang)作為Google…

CloudCanal:一款企業級實時數據同步、遷移工具

CloudCanal 是一款可視化的數據同步、遷移工具,可以幫助企業構建高質量數據管道,具備實時高效、精確互聯、穩定可拓展、一站式、混合部署、復雜數據轉換等優點。 應用場景 CloudCanal 可以幫助企業實現以下數據應用場景: 數據同步&#xff…

如何發現 Redis 中的 BigKey?

如何發現 Redis 中的 BigKey? Redis 因其出色的性能,常被用作緩存、消息隊列和會話存儲。然而,在 Redis 的使用過程中,BigKey 是一個不容忽視的問題。BigKey 指的是存儲了大量數據或包含大量成員的鍵。它們不僅會占用大量內存&…