如何顯示ORB_SLAM2生成的關鍵幀軌跡以及如何使用evo工具評估EuRoCDataset真實際位姿軌跡和ORB_SLAM2算法的估計位姿軌跡?

軌跡可視化

視覺SLAM十四講系列之軌跡可視化
把ORB_SLAM2生成軌跡拷貝過去執行就可以了。

安裝pip

pip 是官方推薦的標準庫管理工具是 Python 的標配。
pip 更新庫

pip install --upgrade 庫名
pip install -U <包名>

安裝庫

pip install 庫名
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
python -m pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple 

安裝 pip3

wget http://bootstrap.pypa.io/get-pip.py
sudo python3.5 get-pip.py
查看pip3安裝的位置
whereis pip3
pip3: /usr/local/bin/pip3.5 /usr/local/bin/pip3
就可以安裝了,但是前提是已經安裝了python3.5的版本
查看python 版本命令:
python -V
python3 -V

安裝 jupyter

Jupyter Notebook 快速入門(上)
Jupyter Notebook 快速入門(下)

Ubuntu 16.04 安裝 jupyter

sudo pip3 install jupyter
ERROR: jsonschema 3.0.1 has requirement six>=1.11.0, but you'll have six 1.10.0 which is incompatible.
sudo pip install six==1.11.0
sudo pip3 install jupyter
查看安裝位置
whereis jupyter
啓動 jupyter,想差看那個路徑下的文件就在那個路徑的終端下輸入如下命令
jupyter notebook

查看python和numpy的版本及版本更新和安裝位置

1、查看python版本
python -V
python -version  
2、查看python安裝位置
python -c "import sys; print sys.executable"
python -c "import os; print os.sys.executable"
python -c "import os; path = os.sys.executable;folder=path[0 : path.rfind(os.sep)]; print folder"
3、查看Numpy版本
python -c "import numpy; print numpy.version.version"
python -c "import numpy; print numpy.__version__"
4、查看Numpy安裝路徑
python -c "import numpy; print numpy.__file__"

安裝evo

下載 evo源代碼

https://github.com/MichaelGrupp/evo

安裝evo依賴

pip install --upgrade pip
sudo apt install python-pip
sudo apt-get install python-scipy

pip install numpy --upgrade --user
sudo apt-get install python-numpy
sudo apt-get install python-scipy
sudo apt-get install python-matplotlib
sudo apt-get install python-pandas
sudo apt-get install python-sklearn

源代碼目錄下編譯evo:

pip install --editable . --upgrade --no-binary evo

實踐詳細步驟

測試數據集

cd test/data
evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz

這是KITTI數據集ORB、SPTAM算法生成的軌跡和KITTI數據集真實軌跡的對比
在這裏插入圖片描述這是KITTI數據集ORB、SPTAM算法生成的軌跡的xyz視角和KITTI數據集真實軌跡的xyz視角對比
可以看到機器人在y軸上的運動變化
在這裏插入圖片描述這是KITTI數據集ORB、SPTAM算法生成的軌跡的rpy視角和KITTI數據集真實軌跡的rpy視角對比
在這裏插入圖片描述
將 EuRoC 數據集中 .csv 文件形式的 groundtruth 位姿軌跡轉換爲 TUM 形式的軌跡文件

evo_traj euroc data.csv --save_as_tum

在這裏插入圖片描述
TUM 形式的軌跡文件格式:每行8個數,用空格分隔,包含時間戳(單位:秒)、位置和旋轉(四元素表示)

timestamp x y z q_x q_y q_z q_w

在這裏插入圖片描述

多軌跡顯示(軌跡未對齊)
(a)上面將 EuRoC 數據集中 MH_04_difficult 序列的 groundtruth(.csv文件) 轉換爲 TUM 形式的軌跡文件,文件名爲 data.tum

在這裏插入圖片描述
(b)通過雙目 ORB_SLAM2 跑 MH_04_difficult 數據集得到 TUM 形式的軌跡文件,文件名爲 FrameTrajectory_TUM_Format.txt

cd /ORB_SLAM2
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/q/projects/ORB_SLAM2/EuRoC_Dataset/mav0/cam0/data /home/q/projects/ORB_SLAM2/EuRoC_Dataset/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH04.txt

在這裏插入圖片描述
將兩個 TUM 形式的軌跡文件放入同一個文件夾 (test_evo) 中

cd /test_evo
evo_traj tum CameraTrajectory.txt --ref=data.tum -p

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

計算絕對位姿誤差實踐詳細步驟

計算絕對位姿誤差(軌跡對齊)

evo_ape tum data.tum CameraTrajectory.txt -va --plot

在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

不同格式的軌跡文件及相互轉換:https://github.com/MichaelGrupp/evo/wiki/Formats
問題彙總:https://github.com/MichaelGrupp/evo/issues?q=is%3Aissue+is%3Aclosed

使用方法
evo_traj用於分析,繪製或導出一個或多個軌跡的工具
evo_ape軌跡誤差
evo_res用於比較evo_apeevo_rpe中的一個或多個結果文件的工具
evo_fig用於重新打開序列化圖的(實驗性)工具(使用–serialize_plot保存)
evo_config用於全局設置和配置文件操作的工具
tool工具執行參數參考:
evo_traj --help

軌跡誤差計算原理

可以先看一下這篇文章
視覺SLAM十四講系列之真實軌跡和估計軌跡均方根誤差

絕對軌跡誤差直接計算相機位姿的真實值與SLAM系統的估計值之間的差,
程序首先根據位姿的時間戳將真實值和估計值進行對齊,
然後計算每對位姿之間的差值, 並最終以圖表的形式輸出,
該標準非常適合於評估視覺 SLAM 系統的性能。

相對位姿誤差用於計算相同兩個時間戳上的位姿變化量的差, 同樣,
在用時間戳對齊之後, 真實位姿和估計位姿均每隔一段相同時間計算位姿的變化量,
然後對該變化量做差, 以獲得相對位姿誤差, 該標準適合於估計系統的漂移。

兩種突出的方法是絕對軌跡誤差(ATE)和相對姿態誤差(RPE)。
ATE適合評估視覺SLAM系統的性能。
相比之下,RPE適合評估視覺里程計的漂移量,例如每秒的漂移量。

evaluate_ate.py

絕對軌跡誤差腳本直接測量真實軌跡和估計軌跡的點之間的差異。

作爲預處理步驟,我們使用時間戳將估計的姿勢與地面真實姿勢相關聯。
基於此關聯,我們使用奇異值分解來對齊真實軌跡和估計軌跡。

最後,我們計算每對姿勢之間的差異,並輸出這些差異的均值/中值/標準差。
此外,腳本還可以將兩個軌跡繪製到png或pdf文件,這樣一來可以更加直觀的看到差異。

在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章