ORB-SLAM3與ORB-SLAM2軌跡對比
由于ORB_SLAM2/Examples/ROS/ORB_SLAM2/src下的ros_stereo.cc中有這兩句:
// Stop all threads
SLAM.Shutdown();
// Save camera trajectory
SLAM.SaveKeyFrameTrajectoryTUM("ORB-SLAM2-KeyFrameTrajectory.txt");
SLAM.SaveTrajectoryTUM("ORB-SLAM2-FrameTrajectory.txt");
SLAM.SaveTrajectoryKITTI("FrameTrajectory_KITTI_Format.txt");
說明ORB_SLAM2在ros運行結束后可以保存軌跡,而在github上下的ORB_SLAM3中對應/ROS/ORB_SLAM3/src下的ros_stereo_inertial.cc中卻沒有這幾句,因此需要自己碼進去:
// Stop all threads
SLAM.Shutdown();
// Save camera trajectory
SLAM.SaveKeyFrameTrajectoryTUM("ORB-SLAM3-KeyFrameTrajectory.txt");
// Save camera trajectory
SLAM.SaveTrajectoryTUM("ORB-SLAM3-FrameTrajectory.txt");
然后分別對ORB-SLAM3與ORB-SLAM2進行編譯:
chmod +x build.sh
./build.sh
打開一個終端運行ros:
roscore
分別在對應的檔案夾下運行ORB-SLAM2與ORB-SLAM3:
// 根據自己的路徑改一下啊!!!
rosrun ORB_SLAM3 Stereo_Inertial /home/ipsg/1295/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/ipsg/1295/ORB_SLAM3/Examples/Stereo-Inertial/EuRoC.yaml true
接著會出來黑框和白框,
然后代開下載好的EUROC資料集,在資料集對應的檔案夾下運行bag檔案:
// An highlighted block
rosbag play MH_03_medium.bag
此時就開始運行了,
運行結束后會生成剛才設定的軌跡檔案,
最后將軌跡檔案與groundth放在一個檔案夾進行對比(代碼生成的軌跡是txt格式,groundth是csv格式):
evo_ape euroc MH_03.csv ORB-SLAM3-FrameTrajectory.txt -a -p
evo_ape euroc MH_03.csv ORB-SLAM2-FrameTrajectory.txt -a -p
以上對比只是evo的一個功能,想詳細了解可以搜索evo,
上結果:
ORB-SLAM2:
max 0.662588
mean 0.194128
median 0.136796
min 0.042975
rmse 0.235405
sse 78.579196
std 0.133154
ORB-SLAM3:
max 0.093307
mean 0.042024
median 0.042101
min 0.003407
rmse 0.046062
sse 2.783682
std 0.018860
由于ORB-SLAM3帶了IMU因此更穩定,在MH_03資料集下ORB-SLAM2會有一部分軌跡丟失,而ORB-SLAM3非常穩定,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/233555.html
標籤:區塊鏈
上一篇:2020第二屆金融科技大會在滬成功召開, “大資料百強榜”重磅出爐!
下一篇:【paypal錯誤分析】PayPal API: Exception: 401 when accessing https://api.sandbox.paypal.com/v1/oauth2/token
