Docker + macでLittleSLAMを動かす

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



  1. https://www.xquartz.org/ からXQuartzをダウンロード→インストール

  2. インストール後、macからログアウト→ログイン


Enable X11


  1. XQuartzのメニュー→「環境設定」→「セキュリティ」タブ→「ネットワーク・クライアントからの接続を許可」にチェック

  2. XQuartzを終了→起動

  3. この後起動する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