SLAM入門: ロボットの自己位置推定と地図構築の技術(友納 正裕) のサンプルコード、LittleSLAMをMacのDockerで動かす。
gnuplotを使っているので、ホストにXQuartzを用意してXを表示する。
Prepare files
Clone the repo
$ git clone --recursive https://github.com/furo-org/LittleSLAM.git
もしくは
$ git clone https://github.com/furo-org/LittleSLAM.git
$ cd LittleSLAM
$ git submodule init
$ git submodule update
Download the dataset
https://github.com/furo-org/LittleSLAM の通り、支持されたリンクからデータセットをダウンロードする。
LittleSLAM/dataset
ディレクトリに置くことにする。
$ cd /path/to/LittleSLAM
$ mkdir dataset
$ cd dataset
$ wget https://furo.org/software/little_slam/dataset.zip
$ unzip dataset.zip
path/to/LittleSLAM/dataset
以下に *.lsc
ファイルが置かれる。
Prepare X11
dockerコンテナ内からgnuplotで描画したのをホスト(Mac)のGUIで見れるよう、Xを準備する
参考: http://raphine.hatenablog.com/entry/2018/08/14/004634
Install XQuartz
- https://www.xquartz.org/ からXQuartzをダウンロード→インストール
- インストール後、macからログアウト→ログイン
Enable X11
- XQuartzのメニュー→「環境設定」→「セキュリティ」タブ→「ネットワーク・クライアントからの接続を許可」にチェック
- XQuartzを終了→起動
- この後起動するdockerコンテナからのXの接続を許可
$ xhost + 127.0.0.1
Run LittleSLAM in a docker container
Launch a docker container
$ docker run -it \
-e DISPLAY=docker.for.mac.localhost:0 \
-v /path/to/LittleSLAM:/workspace \
-w /workspace \
--name little-slam \
debian:stretch bash
-
-e DISPLAY=docker.for.mac.localhost:0
: Xの接続 -
/workspace
: コンテナ内の作業ディレクトリを指定。好きな場所を指定すればよい。 -
--name little-slam
: dockerコンテナの名前を指定。好きな名前を付ければよい。 -
debian:stretch
: この例ではdebian:stretch
イメージを利用。好きなイメージを使えばよい。
以下は、上記で起動したdockerコンテナ内での作業となる。
https://github.com/furo-org/LittleSLAM/blob/master/doc/install-linux.md の通りに進めていけばよい。
Build LittleSLAM
# apt update
# apt install build-essential cmake libboost-all-dev libeigen3-dev gnuplot gnuplot-x11
# mkdir build
# cd build
# cmake ..
# make
Run LittleSLAM
# cd /workspace/build/cui
# ./LittleSLAM ../../dataset/corridor.lsc