docker-compose upで立ち上がるROSのシミュレータと開発環境


はじめに

ROSには良くできたシミュレータが多数あるものの、公式パッケージになっておらず自分でコンパイルする必要があったり、apt-get installするだけではすんなりと動かなかったり、、、と、自宅学習や授業・セミナーなどで利用する際に、インストールとセットアップで時間を取られてしまうことが多かったと思います。

そこでdockerさえインストールしてあれば、docker-compose upコマンド一発でシミュレータと開発環境が立ち上がるようにしたのが本プロジェクトです。

以前からVSCodeのdevcontainerの仕組みを使って立ち上がる各種設定済みのROS開発環境を公開していたのですが、各種シミュレータも立ち上げられるようにしました。

レポジトリはこちら:
https://github.com/devrt/ros-devcontainer-vscode

使いかた

dockerのインストール

以下の各方法でdockerをインストールしてください。

Windowsの場合

正式リリースされた、WSL2版のDocker for Windowsをインストールするのがおすすめです。

WSLでは、デフォルトでは利用プロセッサ数が少ないので、コマンドプロンプトで以下のコマンドを入力し、

notepad %UserProfile%\.wslconfig

メモ帳が開いたら以下の内容をコピー・アンド・ペーストしてセーブしてください。

[wsl2]
processors=2
swap=0

processorsにはWSLに割り当てたいCPUコア数を指定します。大きめの値を設定するとシミュレーションが早くなります。

開発環境はリモートサーバ上で立ち上げてWindowsからアクセスすることもできます(快適に動くのでおすすめです)。
その場合は「Linuxの場合」を参照してください。

Macの場合

以下のURLからDocker DesktopのMac版をダウンロードしてインストールしましょう。
https://hub.docker.com/editions/community/docker-ce-desktop-mac/

Linuxの場合

以下のコマンドでdockerとdocker-composeをインストールしてください。
apt-getでインストールできるdockerとdocker-composeは古いので、必ず以下のコマンドでインストールされる最新版を利用してください(Ubuntu 20.04であればapt-getでインストールされるdockerとdocker-composeでも動くそうです thanks to @uytrewq12345さん)。

$ curl -fsSL https://get.docker.com/ | sh
$ compose_version=$(curl https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)
$ sudo curl -L https://github.com/docker/compose/releases/download/$compose_version/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

シミュレータの選択と立ち上げ

まずは、レポジトリをチェックアウトしてください:

$ git clone https://github.com/devrt/ros-devcontainer-vscode.git
$ cd ros-devcontainer-vscode

select-simulator.shスクリプトを起動するとシミュレータの選択画面が表示されます:

$ ./select-simulator.sh

選択が完了したらdocker-compose upで開発環境を立ち上げましょう:

$ docker-compose up

初回起動時はシミュレータと開発環境がダウンロードされるので、起動までにしばらく時間がかかります。
しばらく待って環境が立ち上がったら、以下の各URLを開いてみてください。

シミュレータ画面
http://localhost:3000

Web IDE
http://localhost:3001

Juypter notebook
http://localhost:3002

リモートサーバでdocker-compose upしている場合は、localhostの部分をサーバのIPアドレスで置き換えてください。

収録しているシミュレータ一覧

入門者向け

devrt/simulator-turtlesim

ROS入門者がまずは動かしてみるべきシミュレータです。
/cmd_velトピックにメッセージをpublishするとカメが動きます。TFの仕組みについても学習できます。

ライセンス: BSD
一次配布元URL: http://wiki.ros.org/turtlesim

devrt/simulator-rrbot

URDFファイルの作成や、ros_controllerの学習ができます。
はじめはアームがブラブラしていますが、コントローラを有効にすると、しゃっきり制御がかかります。

ライセンス: BSD
一次配布元URL: http://gazebosim.org/tutorials/?tut=ros_control

中級者向け

devrt/simulator-turtlebot-flatland

box2dを使った軽量な2Dシミュレータです。
ROSのナビゲーションスタック(AMCLとmove_base)の学習ができます。

ライセンス: BSD
一次配布元URL: https://github.com/avidbots/turtlebot_flatland
turtlebot-flatland
https://www.youtube.com/watch?v=X7ENwUDyxfY

devrt/simulator-panda-arm

Franka Emika社のPandaアームのシミュレータです。
Pandaアームは素直な自由度配置とトルク制御可能な関節を持っており、MoveIt!のチュートリアルで良く使われています。

ライセンス: BSD + Apache 2.0
一次配布元URL: http://docs.ros.org/melodic/api/moveit_tutorials/html/index.html

上級者向け

devrt/simulator-turtlebot3

TurtleBot3用のレーシングステージです。

ライセンス: Apache 2.0
一次配布元URL: https://github.com/ROBOTIS-GIT/turtlebot3
turtlebot3-autorace
https://www.youtube.com/watch?v=5fZmuPxMZz0

devrt/simulator-ariac

産業用ロボットを使ったシミュレーション競技会(ARIAC)のステージです。

ライセンス: Apache 2.0
一次配布元URL: http://gazebosim.org/ariac

https://vimeo.com/224134238

devrt/simulator-vrx

海洋ロボットを使ったシミュレーション競技会(Virtual RobotX)のステージです。

ライセンス: Apache 2.0
一次配布元URL: https://github.com/osrf/vrx
osrf-vrx
https://www.youtube.com/watch?v=0Q2ehhmSz0Q

devrt/simulator-uuv

無人潜水艇のシミュレータです。

ライセンス: Apache 2.0
一次配布元URL: https://uuvsimulator.github.io/
osrf-vrx
https://www.youtube.com/watch?v=6V_TR9i0k1Q

他のシミュレータを使いたい

以下のURLでパッケージ化のリクエストを受け付けています。
https://github.com/devrt/simulator-index/issues

Dockerfileの書き方がわかる人は、自分でパッケージ化にもチャレンジしてみてください。simulator-indexへのpull requestもお待ちしています。
https://github.com/devrt/simulator-template

うまく動かなかったら

こちらにissueを書いてください。開発者は日本人なので、日本語で大丈夫です。
https://github.com/devrt/ros-devcontainer-vscode/issues