前言
在ORB-SLAM2的學(xué)習(xí)過程中,不可避免的會用到這些數(shù)據(jù)集來運行程序,并且還會將運行軌跡與相機真實軌跡作對比,下面就介紹使用evo工具分析SLAM常用TUM,KITTI,EuRoC數(shù)據(jù)集。SLAM數(shù)據(jù)集TUM,KITTI,EuRoC數(shù)據(jù)集的下載地址與真實軌跡文件的查找總結(jié)的博客鏈接。
一、evo工具的安裝
可以使用evo工具將.csv文件形式的軌跡文件轉(zhuǎn)換為TUM形式的軌跡文件。
evo_traj euroc data.csv --save_as_tum
evo工具安裝(參考鏈接),打開終端輸入
pip install evo --upgrade --no-binary evo
二、運行TUM數(shù)據(jù)集
TUM數(shù)據(jù)集官網(wǎng)下載地址,TUM數(shù)據(jù)集里面有深度圖像和RGB圖像。當(dāng)使用單目模式時,僅用到rgb
文件夾里的圖片;當(dāng)使用RGB-D模式時,需要用到depth
和rgb
兩個文件夾里的圖片,而且需要associate.py
腳本文件關(guān)聯(lián) RGB 圖像和深度圖像(下面會說到)。
下面以rgbd_dataset_freiburg3_long_office_household
數(shù)據(jù)集為例
1.TUM單目數(shù)據(jù)集
執(zhí)行這個命令:./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
。將TUMX.yaml
改為TUM1.yaml
,TUM2.yaml
或TUM3.yaml
,分別用于freiburg1
,freiburg2
和freiburg3
序列。將PATH_TO_SEQUENCE_FOLDER
改為解壓好的數(shù)據(jù)集文件夾路徑。簡單來說命令分為四個部分:1.TUM單目模式執(zhí)行文件 2.訓(xùn)練好的詞袋 3.參數(shù)文件 4.解壓好的數(shù)據(jù)集路徑
切換到 ORB_SLAM2/ 下,在終端里輸入(對應(yīng)路徑改成自己的)
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM3.yaml /home/d/文檔/數(shù)據(jù)集/TUM數(shù)據(jù)集/rgbd_dataset_freiburg3_long_office_household
2.TUM RGB-D數(shù)據(jù)集
在這步中我們需要使用RGB 圖像和深度圖像的關(guān)聯(lián)文件,ORB-SLAM2的作者在examples/RGB-D/associations/
路徑下提供了某些序列的關(guān)聯(lián)文件。
我們也可以使用 python 腳本associate.py
(associate.py下載地址)關(guān)聯(lián) RGB 圖像和深度圖像。
將associate.py
腳本放到下載并且解壓好的rgbd_dataset_freiburg3_long_office_household/
路徑下,執(zhí)行以下命令
python associate.py rgb.txt depth.txt > associations.txt
接下來執(zhí)行這個命令:./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
。將TUMX.yaml
改為TUM1.yaml
,TUM2.yaml
或TUM3.yaml
,分別用于freiburg1
,freiburg2
和freiburg3
序列。將PATH_TO_SEQUENCE_FOLDER
改為解壓好的數(shù)據(jù)集文件夾路徑。將ASSOCIATIONS_FILE
改為相應(yīng)關(guān)聯(lián)文件的路徑。簡單來說命令分為五個部分:1.TUM RGB-D執(zhí)行文件 2.訓(xùn)練好的詞袋 3.參數(shù)文件 4.解壓好的數(shù)據(jù)集路徑 5.關(guān)聯(lián)文件路徑
切換到 ORB_SLAM2/ 下,在終端里輸入(對應(yīng)路徑改成自己的)
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml /home/d/文檔/數(shù)據(jù)集/TUM數(shù)據(jù)集/rgbd_dataset_freiburg3_long_office_household /home/d/文檔/數(shù)據(jù)集/TUM數(shù)據(jù)集/rgbd_dataset_freiburg3_long_office_household/associations.txt
三、運行KITTI數(shù)據(jù)集
KITTI數(shù)據(jù)集官網(wǎng)下載地址,使用灰度圖像的KITTI數(shù)據(jù)集,里面有左目圖像(image_0)和右目圖像(image_1)。當(dāng)使用單目模式時,僅用到image_0
文件夾里的左目圖片;當(dāng)使用雙目模式時,需要用到image_0
和image_1
兩個文件夾里的圖片。
下面以00
數(shù)據(jù)集為例
1.KITTI單目數(shù)據(jù)集
執(zhí)行這個命令:./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
。將KITTIX.yaml
改為KITTI00-02.yaml
,KITTI03.yaml
或KITTI04-12.yaml
,分別用于序列0到2
,序列3
和序列4到12
。將PATH_TO_DATASET_FOLDER
改為解壓好的數(shù)據(jù)集文件夾路徑。將SEQUENCE_NUMBER
改為00、01、02,…, 11 簡單來說命令分為四個部分:1.KITTI單目模式執(zhí)行文件 2.訓(xùn)練好的詞袋 3.參數(shù)文件 4.解壓好的數(shù)據(jù)集路徑
切換到 ORB_SLAM2/ 下,在終端里輸入(對應(yīng)路徑改成自己的)
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml /home/d/文檔/數(shù)據(jù)集/Kitti數(shù)據(jù)集/00
2.KITTI雙目數(shù)據(jù)集
執(zhí)行這個命令:./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
。將KITTIX.yaml
改為KITTI00-02.yaml
,KITTI03.yaml
或KITTI04-12.yaml
,分別用于序列0到2
,序列3
和序列4到12
。將PATH_TO_DATASET_FOLDER
改為解壓好的數(shù)據(jù)集文件夾路徑。將SEQUENCE_NUMBER
改為00、01、02,…, 11 簡單來說命令分為四個部分:1.KITTI單目模式執(zhí)行文件 2.訓(xùn)練好的詞袋 3.參數(shù)文件 4.解壓好的數(shù)據(jù)集路徑
切換到 ORB_SLAM2/ 下,在終端里輸入(對應(yīng)路徑改成自己的)
./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTI00-02.yaml /home/d/文檔/數(shù)據(jù)集/Kitti數(shù)據(jù)集/00
四、運行EuRoC數(shù)據(jù)集
EuRoC數(shù)據(jù)集官網(wǎng)下載地址,EuRoC數(shù)據(jù)集里面有左目圖像(cam0)和右目圖像(cam1)。當(dāng)使用單目模式時,僅用到cam0
文件夾里的左目圖片;當(dāng)使用雙目模式時,需要用到cam0
和cam1
兩個文件夾里的圖片。
下面以MH_01_easy
數(shù)據(jù)集為例
1.EuRoC單目數(shù)據(jù)集
對 V1 和 V2 序列執(zhí)行以下第一個命令,或?qū)?MH 序列執(zhí)行第二個命令。根據(jù)要運行的數(shù)據(jù)集更改PATH_TO_SEQUENCE_FOLDER
和序列。
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH_TO_SEQUENCE/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/SEQUENCE.txt
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH_TO_SEQUENCE/cam0/data Examples/Monocular/EuRoC_TimeStamps/SEQUENCE.txt
將PATH_TO_SEQUENCE
改為解壓好的數(shù)據(jù)集文件夾路徑。將SEQUENCE
改為對應(yīng)數(shù)據(jù)集的序列文件 **簡單來說命令分為五個部分:1.EuRoC單目模式執(zhí)行文件 2.訓(xùn)練好的詞袋 3.參數(shù)文件 4.解壓好的數(shù)據(jù)集左目圖像路徑 5.對應(yīng)的序列文件 **
切換到 ORB_SLAM2/ 下,在終端里輸入(對應(yīng)路徑改成自己的)
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml /home/d/文檔/數(shù)據(jù)集/EuRoc數(shù)據(jù)集/MH_01_easy/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/MH01.txt
2.EuRoC雙目數(shù)據(jù)集
對 V1 和 V2 序列執(zhí)行以下第一個命令,或?qū)?MH 序列執(zhí)行第二個命令。根據(jù)要運行的數(shù)據(jù)集更改PATH_TO_SEQUENCE_FOLDER
和SEQUENCE
。
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/mav0/cam0/data PATH_TO_SEQUENCE/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/cam0/data PATH_TO_SEQUENCE/cam1/data Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
將PATH_TO_SEQUENCE
改為解壓好的數(shù)據(jù)集文件夾路徑。將SEQUENCE
改為對應(yīng)數(shù)據(jù)集的序列文件 **簡單來說命令分為六個部分:1.EuRoC單目模式執(zhí)行文件 2.訓(xùn)練好的詞袋 3.參數(shù)文件 4.解壓好的數(shù)據(jù)集左目圖像路徑 5.解壓好的數(shù)據(jù)集右目圖像路徑 6.對應(yīng)的序列文件 **
切換到 ORB_SLAM2/ 下,在終端里輸入(對應(yīng)路徑改成自己的)
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/d/文檔/數(shù)據(jù)集/EuRoc數(shù)據(jù)集/MH_01_easy/mav0/cam0/data /home/d/文檔/數(shù)據(jù)集/EuRoc數(shù)據(jù)集/MH_01_easy/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH01.txt
五、使用evo工具分析
1.常用指令
以TUM
數(shù)據(jù)集的rgbd_dataset_freiburg3_long_office_household
為例介紹
繪制單個軌跡
evo_traj tum groundtruth.txt -p
繪制多個軌跡
evo_traj tum CameraTrajectory_TUM.txt groundtruth.txt -p
上面的軌跡在旋轉(zhuǎn)和平移上不對齊,可以通過--ref
參數(shù)指定參考軌跡,并且添加參數(shù)-a
來對其軌跡
evo_traj tum CameraTrajectory_TUM.txt --ref=groundtruth.txt -p -a
由于單目相機會存在尺度的不確定性,所以在僅使用-a
不夠
evo_traj tum KeyFrameTrajectory_TUM.txt --ref=groundtruth.txt -p -a
還需要添加一個參數(shù)-s
進(jìn)行尺度上面的對齊
evo_traj tum KeyFrameTrajectory_TUM.txt --ref=groundtruth.txt -p -a -s
或者直接使用參數(shù)-as
同時使用旋轉(zhuǎn)和平移以及尺度上面的對齊
evo_traj tum KeyFrameTrajectory_TUM.txt --ref=groundtruth.txt -p -as
通過觀察,上面的軌跡在Z軸上面變化不大,可以添加參數(shù)--plot_mode=xy
將軌跡壓縮在xy
平面上
evo_traj tum CameraTrajectory_TUM.txt --ref=groundtruth.txt -p --plot_mode=xy -as
通過上面的過程,我們 常用的畫軌跡指令 是
evo_traj tum XXX.txt --ref=XXX.txt -p -as
evo_traj tum XXX.txt --ref=XXX.txt -p --plot_mode=xy -as
計算絕對位姿誤差
大多數(shù)中論文的指標(biāo)為測量絕對誤差, 在進(jìn)行評估時,若經(jīng)過了縮放,在命令行中應(yīng)將真實軌跡(參考軌跡)放在估計軌跡(計算軌跡)前方,避免在縮放時參考軌跡錯誤而造成誤差被錯誤縮放。
evo_ape tum groundtruth.txt CameraTrajectory_TUM.txt -p --plot_mode=xy -as
max
:表示最大誤差;mean
:平均誤差;median
:誤差中位數(shù);min
:最小誤差;rmse
:均方根誤差;sse
:和方差、誤差平方和;std
:標(biāo)準(zhǔn)差。
evo_rpe
指令是計算相對位姿誤差,參數(shù)與上面的計算絕對位姿誤差一致,因為不常用,就不介紹了
2.用evo工具分析TUM
畫軌跡
evo_traj tum CameraTrajectory_TUM.txt --ref=groundtruth.txt -p --plot_mode=xy -as
計算絕對位姿誤差
在進(jìn)行評估時,若經(jīng)過了縮放,在命令行中應(yīng)將真實軌跡(參考軌跡)放在估計軌跡(計算軌跡)前方,避免在縮放時參考軌跡錯誤而造成誤差被錯誤縮放。文章來源:http://www.zghlxwxcb.cn/news/detail-841941.html
evo_ape tum groundtruth.txt CameraTrajectory_TUM.txt -p --plot_mode=xy -as
max
:表示最大誤差;mean
:平均誤差;median
:誤差中位數(shù);min
:最小誤差;rmse
:均方根誤差;sse
:和方差、誤差平方和;std
:標(biāo)準(zhǔn)差。
3.用evo工具分析KITTI
ORB-SLAM2以單目模式運行KITTI數(shù)據(jù)集保存的軌跡文件格式是TUM格式的,使用evo工具不能將KITTI格式的軌跡轉(zhuǎn)換成TUM格式的軌跡,但是能將TUM格式的軌跡轉(zhuǎn)換成KITTI格式的軌跡(參考鏈接)
使用下面的命令將TUM格式的軌跡轉(zhuǎn)化成KITTI格式的
evo_traj tum KeyFrameTrajectory_TUM.txt --save_as_kitti
畫軌跡
evo_traj kitti CameraTrajectory_KITTI.txt --ref=00.txt -p --plot_mode=xz -as
計算絕對位姿誤差
在進(jìn)行評估時,若經(jīng)過了縮放,在命令行中應(yīng)將真實軌跡(參考軌跡)放在估計軌跡(計算軌跡)前方,避免在縮放時參考軌跡錯誤而造成誤差被錯誤縮放。
evo_ape kitti 00.txt CameraTrajectory_KITTI.txt -p --plot_mode=xz -as
max
:表示最大誤差;mean
:平均誤差;median
:誤差中位數(shù);min
:最小誤差;rmse
:均方根誤差;sse
:和方差、誤差平方和;std
:標(biāo)準(zhǔn)差。
4.用evo工具分析EuRoC
ORB-SLAM2運行EuRoC數(shù)據(jù)集保存的軌跡文件格式是TUM格式的,使用evo工具能將EuRoC格式的軌跡轉(zhuǎn)換成TUM格式的軌跡,(參考鏈接)
使用下面的命令將EuRoC格式的軌跡轉(zhuǎn)化成TUM格式的
evo_traj euroc data.csv --save_as_tum
畫軌跡
evo_traj tum CameraTrajectory_TUM.txt --ref=data.tum -p -as
計算絕對位姿誤差
在進(jìn)行評估時,若經(jīng)過了縮放,在命令行中應(yīng)將真實軌跡(參考軌跡)放在估計軌跡(計算軌跡)前方,避免在縮放時參考軌跡錯誤而造成誤差被錯誤縮放。
evo_ape tum data.tum CameraTrajectory_TUM.txt -p -as
max
:表示最大誤差;mean
:平均誤差;median
:誤差中位數(shù);min
:最小誤差;rmse
:均方根誤差;sse
:和方差、誤差平方和;std
:標(biāo)準(zhǔn)差。文章來源地址http://www.zghlxwxcb.cn/news/detail-841941.html
到了這里,關(guān)于用evo工具分析ORB-SLAM2運行TUM,KITTI,EuRoC數(shù)據(jù)集軌跡的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!