首先聲明:
我是想通過這個來實現save and load 功能。
感謝原作者與poine所做的貢獻。
poine版本的請參考該鏈接下載:http://recherche.enac.fr/~drouin/slam/orbslam2/poine_orbslam2_04_07_16.tgz
原版請參考該鏈接下載:https://github.com/raulmur/ORB_SLAM2
我使用的計算機配置是ubuntu 14.04, ROS indigo ,i5-7300HQ,8G內存,機械硬盤(大體上是這個樣子)
不說的太複雜,只說一下我遇到的一些問題:
1.編譯
編譯呢,要把各個build文件全部刪掉(爲了不出問題,全都刪了吧),然後重新那個啥,都懂。。。
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
make的過程,在我的電腦上不可以使用make -j,會卡死,,,諸君不介意可以嘗試一下,,,據說有的是沒問題的。各種依賴的庫請參考原作者的github:https://github.com/raulmur/ORB_SLAM2
2.運行
請參考原作者github文章;
我使用的是xTion攝像頭,運行的Mono沒什麼太大問題,但是 Example/Monocular/TUM1.yaml 的內容要小小改一下,我記得似乎是加入圖像的長寬,,,似乎。
ros訂閱的topic當然要改。
然後跑RGBD相機的時候會出現閃退,如果深度或者RGB信號中,有一個特徵點丟失,那麼,就導致slam系統崩潰,似乎是opencv中一個矩陣的問題,我也沒弄明白,難道是我的版本不對?我用的是3.3.
mono的運動劇烈之後會lost,改nFeature會好一點,治標不治本。
3.save and load
作者的代碼中有save的函數,但是不知道爲什麼沒有去調用。save 的部分好像在map.cc中,load和save在一起。這些都是作者寫好的。
我的save過程進行的比較順利,直接在system.cc中調用了這個函數,在一個107鍵鍵盤範圍內的slam大約生成了十幾兆的文件,保存在運行rosrun ORBSLAM2命令的目錄下。
load過程,出現segmentation fault(core dumped),網上查閱資料說,這個問題可能存在的原因比較多,gdb定位,發現是
unique_lock<mutex> lock(mpMap->mMutexPointCreation);
這一句出的問題。後來發現屬於我調用函數的時候傳入參數的問題,mpMap是空的。
這篇博客寫的很敷衍,很不走心,湊活着看看吧,,,以上。。。