-
Boost
Boostをダウンロードして、適当なフォルダに解凍します。
LiitleSLAMでは、Boostのヘッダファイルだけを使用するので、ビルドは必要ありません。 -
Eigen3
Eigenを ダウンロードして、適当なフォルダに解凍します。
Eigenはヘッダファイルだけで使用するライブラリなので、ビルドは必要ありません。 -
gnuplot
gnuplotをダウンロードしてインストールします。 LittleSLAMからは、APIではなく、実行コマンドで呼び出すので、 Windowsの環境変数Pathにgnuplotのパスを設定しておきます。
たとえば、gnuplotをフォルダC:\gnuplotにインストールした場合、"Path=... ;C:\gnuplot\bin; ..."とします。
(インストーラが自動で設定してくれることもあります) -
CMake
CMakeをダウンロードしてインストールします。 -
git
gitをダウンロードしてインストールします。 -
p2o
p2o-v1のGithubサイトを開きます。 以下のどちらかの方法でp2oをダウンロードします。
(A) Github画面の"Clone or download"ボタンを押して、"Download ZIP"を選択し、 p2o-p2o_v1.zipをダウンロードします。zipファイルの展開方法は後述します。
(B) gitを使って、LittleSLAMのサブモジュールとしてリポジトリをcloneします(下記参照)。 -
nanoflann
nanoflannのGithub画面の"Clone or download"ボタンを押して、 "Download ZIP"を選択し、nanoflann-master.zipをダウンロードします。 zipファイルの展開方法は後述します。
- LittleSLAMの展開
LittleSLAMのGithubサイトを開きます。 以下のどちらかの方法でLittleSLAMをダウンロードします。
(A) Github画面の"Clone or download"ボタンを押して、"Download ZIP"を選択し、 LittleSLAM-master.zipをダウンロードします。 そして、このzipファイルを適当なフォルダに展開します。 ここでは、たとえば、"C:\abc\LittleSLAM"に展開するとします。 "abc"はユーザが決める任意のフォルダです。 LittleSLAM-master.zipの中の"LittleSLAM-master"フォルダの下の p2o以外の4個のフォルダと3個のファイルを"C:\abc\LittleSLAM"の下にコピーします。
(B) gitでrecursiveオプションをつけてリポジトリをcloneします。
git clone --recursive https://github.com/furo-org/LittleSLAM.git
-
p2oの展開(上記(A)の場合のみ)
"C:\abc\LittleSLAM"フォルダの下に"p2o"フォルダを作成します。そして、 前述のp2o-p2o_v1.zipを解凍して、"p2o-p2o_v1"フォルダの下のファイル"p2o.h"を"C:\abc\LittleSLAM\p2o"フォルダの下にコピーします。 -
nanoflannの展開(上記(A)(B)両方)
"C:\abc\LittleSLAM"フォルダの下に"nanoflann"フォルダを作成します。そして、 前述のnanoflann-master.zipを解凍して、"nanoflann-master\include"フォルダの下の ファイル"nanoflann.h"を"C:\abc\LittleSLAM\nanoflann"フォルダの下にコピーします。 -
buildフォルダの作成
"C:\abc\LittleSLAM"の下にbuildフォルダを作成します。
ここまでのフォルダ構成は以下のようになります。
- CMakeの実行
CMake(GUI)を実行して、LittleSLAM.slnを生成します。
まず、"Where is the source code"欄および"Where to buid the binaries"欄に下図のフォルダを指定します。
次に、 Configureボタンを押します。
LittleSLAMに対して初めてCMakeを実行する場合、下図のようにC++コンパイラを聞かれるので、 使用しているC++コンパイラを指定し、"Use default native compliers"を選択して、Finishボタンを押します。
そして、もう一度、Configureボタンを押し、最後にGenerateボタンを押します。
- Eigen3の指定
もし、CMakeがEigen3の場所(EIGEN3_INCLUDE_DIR)を見つけられずにエラーが出た場合は、 次のいずれかを行って、CMakeを再起動してConfigureとGenerateをやり直してください。
(A) Windowsのシステム環境変数にEIGEN3_ROOT_DIRを追加して、 そこにEigen3を展開したフォルダを設定します。
すると、下図のように、"C:\abc\LittleSLAM"下のcui, framework, hookの各CMakeLists.txtの中で、 EIGEN3_ROOT_DIRで指定されたフォルダがEIGEN3_INCLUDE_DIRに設定されます。
(B) 各CMakeLists.txtのEigen3のフォルダを手で設定します。 たとえば、Eigen3を"C:\eigen"に展開した場合は、下図の $ENV{EIGEN3_ROOT_DIR}の部分をC:\eigenに書き換えます。
-- CMakeLists.txtより抜粋 --
find_package(Eigen3)
IF(NOT EIGEN3_INCLUDE_DIR) # Eigen3のパスが見つからない
set(EIGEN3_INCLUDE_DIR $ENV{EIGEN3_ROOT_DIR})
ENDIF()
-
Visual studioの起動
CMakeを実行すると"C:\abc\LittleSLAM\build"の下にLittleSLAM.slnができるので、 それをダブルクリックすると、Visual studioが起動します。 -
ビルド
下図のように、Visual studioで、Release, x64(64ビットの場合)を指定し、Buildメニューから「ソリューションのビルド」を実行します。
ビルドが成功すると、"build\cui\Release"フォルダに、実行ファイルLittleSLAM.exeが生成されます。
Windowsコマンドプロンプトから以下のコマンドにより、LittleSLAMを実行します。
LittleSLAM [-so] データファイル名 [開始スキャン番号]
-sオプションを指定すると、スキャンを1個ずつ描画します。各スキャン形状を確認したい場合に
使います。
-oオプションを指定すると、スキャンをオドメトリデータで並べた地図
(SLAMによる地図ではない)を生成します。
オプション指定がなければ、SLAMを実行します。
開始スキャン番号を指定すると、その番号までスキャンを読み飛ばしてから実行します。
例として、以下のコマンドでSLAMを実行します。
この例では"C:\abc\dataset"フォルダに"corridor.lsc"というデータファイルが置かれています。
C:\abc\LittleSLAM\build\cui\Release> LittleSLAM C:\abc\dataset\corridor.lsc
コマンドを実行すると、LittleSLAMはファイルからデータを読み込んで地図を少しずつ
構築していきます。その様子がgnuplotに描画されます。
最終的に、下図のような地図が生成されます。
処理が終わっても、プログラムは終了せず、地図はそのまま表示されています。
プログラムを終了するにはCtrl-Cを押してください。