OSX 10.11とDockerToolbox-1.8.3環境でROSの亀シミュレータを動かしてみたので手順をメモしておく。
Docker環境の構築
Dockerインストール
boot2dockerからdocker toolboxを使うようになったようなのでdocker toolboxを入れた。
※ Installation on Mac OS Xに以下のようにある。
Note: This release of Docker deprecates the Boot2Docker command line in favor of Docker Machine. Use the Docker Toolbox to install Docker Machine as well as the other Docker tools.
Docker Toolbox | dockerからpkgをダウンロードしてインストールした。
※ 試していないがDockerのインストール - 74thを見ると単体のツールをhomebrewでも入れられそう(アップデートが楽そう)。
proxyのための対応
構築環境がproxy環境下なので以下のページを参照して対応を行った。
how to set proxy in docker toolbox? #102
$ docker-machine rm default
$ docker-machine create -d virtualbox --engine-env HTTP_PROXY=http://example.com:8080 --engine-env HTTPS_PROXY=http://example.com:8080 default
# docker-machine env default で表示される内容を~/.bash_profileあたりに設定
# export no_proxy=$no_proxy,192.168.99.103 のような設定もする必要があった(192.168.99.103はDOKCER_HOST環境変数に設定されているIP)
ROSで亀シミュレータを動かす
以下の手順を参照してGUIを出すようにしてみた。
how to use -e DISPLAY flag on osx? #8710
以下の手順も試してみたがうまくいかなかった。
docker/Tutorials/GUI - ROS Wiki
dockerでGUIアプリを動かしてみた - Qiita
osx - ssh -X does not work on Yosemite - Ask Different
dockerイメージはここを参照して取得した。
osrf/docker_images
Docker Hub
最終的な手順
1) 出力ディスプレイの設定
# xquartzをインストールしてなかったらする
$ brew install socat
$ docker pull osrf/ros:indigo-desktop-full
$ open -a XQuartz
$ socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\”
2) 子コンテナ(ros-test)でroscoreを起動する
# roscoreの起動(他の端末で実行)
$ docker run --rm -e DISPLAY=192.168.99.1:0 -e http_proxy=http://example.com:8080 -e https_proxy=http://example.com:8080 --name ros-test osrf/ros:indigo-desktop-full roscore
3) ros-testでシミュレータ用ノードを起動
# 亀シミュレータの起動(他の端末で実行)
$ docker exec -it ros-test /bin/bash
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ rosrun turtlesim turtlesim_node
4) キーボード入力送信のための Teleoperation Node (teleop)を起動
# 亀シミュレータのキーボード操作用(他の端末で実行)
$ docker exec -it ros-test /bin/bash
$ rosrun turtlesim turtle_teleop_key