ORBSLAM2はORBSLAMをステレオ、デプスカメラにも対応させ安定化させたリリース版として公開され、論文はIEEE TRANSACTION ON ROBOTICSに投稿されている。
Raul Mur-Artal, Juan D. Tardos
"ORB-SLAM2: An Open-Source SLAM System for Monocular, Stereo, and RGB-D Cameras"
IEEE Transactions on Robotics ( Volume: PP, Issue: 99 )
http://ieeexplore.ieee.org/document/7946260/
以前windowsに導入するために四苦八苦したが、有志によるORBSLAM2のWindowsサポート版が公開されていたので導入した。その際のログについて記載しておく。

基本的には、リンク先に書いてある通りに進めれば良い。
https://github.com/phdsky/ORBSLAM24Windows
◯必要なもの
・OpenCV3.1 (2.4.13以降)
・CMake
(インストールはここ参照)
・VisualStudio 2013
◯導入
1.ORBSLAM24Windowsのダウンロード
https://github.com/phdsky/ORBSLAM24Windows
2.DBoW2のコンパイル
/Thirdparty/DBoW2/以下をCMakeかける。
以下のように入力し、Configueを実行する。
次に、OpenCVのパスがエラー出るので、OpenCVのconfigファイルのあるパスを追加で入力する。
最後にGenerateを実行することでbuild以下に.slnファイルが生成される。

.slnファイルをVisualStudioで開き、バッチビルドすればよい。
3.DBoW2のコンパイル
/Thirdparty/g2o/以下をCMakeかける。
以下のように入力し、Configueを実行する。
次にGenerateを実行することでbuild以下に.slnファイルが生成される。

.slnファイルをVisualStudioで開き、バッチビルド。
途中、vasprintf識別子が見つかりませんでしたのエラーが出ることがあるが、気にしなくて良い。
4. pangorinのコンパイル
/Thirdparty/pangorin/以下も同様にCMake,コンパイル

ちょいちょいエラーが出るが問題ない。
5.ORBSLAM2のコンパイル
同様にORBSLAM2もコンパイルする。

6.実行する。
まず、ORBのデスクリプタを記述したファイルを展開しておく。
/Vocabulary/ORBvoc.txt.tar.gzを展開してORBvoc.txtを得ておく。
ここでは、車載カメラを利用した大規模データセットであるKITTIを使うものとする。
KITTIデータセットは以下からダウンロードしておく。http://www.cvlibs.net/datasets/kitti/eval_odometry.php
Download odometry data set (grayscale, 22 GB)
ORBSLAM2をVisualStudioで開く。
以下のように、stereo_kittiをスタートアッププロジェクトにしておく。

stereo_kittiのプロパティを開き、デバッグ項目に以下に入力する。

コマンド引数には、ORBの辞書 KITTIのパラメータファイル KITTIの画像フォルダの順で記載する。
以下に例を示す。
C:\lib\ORBSLAM24Windows-master\Vocabulary\ORBvoc.txt C:\lib\ORBSLAM24Windows-master\Examples\Stereo\KITTI00-02.yaml C:\dataset\KITTI\00
また、OpenCV3.1のdllのパスを通していない場合には、環境の項目にdllのフォルダを指定しておく。
以上でコンパイルすれば動作する。
コメント
コメント一覧 (1)
OBRSLAM24WIndowsのREADMEも読みながら、手順通りに進めているのですが、
PangolinをVisual Studioでビルドする際にエラーが出てしまい、ビルドできません。
(CMakeはConfigure/Generateできます)
エラーが出るのは以下のファイルです。
Thirdparty/Pangolin/include/pangolin/video/drivers/depthsense.h
Thirdparty/Pangolin/src/video/drivers/depthsense.cpp
depthsense.cppの、
GetDepthSenseVideo(size_t device_num, DepthSenseSensorType s1, DepthSenseSensorType s2, ImageDim dim1, ImageDim dim2, unsigned int fps1, unsigned int fps2, const Uri& uri)
に問題があるようです。
コードは触っていないし、CMakeでの参照値も変更していないので、原因がわかりません。
もし、解決方法の検討がつくようでしたら、アドバイスいただければと思います。
よろしくお願いいたします。