軌跡可視化
視覺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_ape
或evo_rpe
中的一個或多個結果文件的工具
evo_fig
用於重新打開序列化圖的(實驗性)工具(使用–serialize_plot保存)
evo_config
用於全局設置和配置文件操作的工具
tool
工具執行參數參考:
evo_traj --help
軌跡誤差計算原理
可以先看一下這篇文章
視覺SLAM十四講系列之真實軌跡和估計軌跡均方根誤差
絕對軌跡誤差直接計算相機位姿的真實值與SLAM系統的估計值之間的差,
程序首先根據位姿的時間戳將真實值和估計值進行對齊,
然後計算每對位姿之間的差值, 並最終以圖表的形式輸出,
該標準非常適合於評估視覺 SLAM 系統的性能。
相對位姿誤差用於計算相同兩個時間戳上的位姿變化量的差, 同樣,
在用時間戳對齊之後, 真實位姿和估計位姿均每隔一段相同時間計算位姿的變化量,
然後對該變化量做差, 以獲得相對位姿誤差, 該標準適合於估計系統的漂移。
兩種突出的方法是絕對軌跡誤差(ATE)和相對姿態誤差(RPE)。
ATE適合評估視覺SLAM系統的性能。
相比之下,RPE適合評估視覺里程計的漂移量,例如每秒的漂移量。
evaluate_ate.py
絕對軌跡誤差腳本直接測量真實軌跡和估計軌跡的點之間的差異。
作爲預處理步驟,我們使用時間戳將估計的姿勢與地面真實姿勢相關聯。
基於此關聯,我們使用奇異值分解來對齊真實軌跡和估計軌跡。
最後,我們計算每對姿勢之間的差異,並輸出這些差異的均值/中值/標準差。
此外,腳本還可以將兩個軌跡繪製到png或pdf文件,這樣一來可以更加直觀的看到差異。