15
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OSXのdocker環境でROSを動かしてみる

Last updated at Posted at 2015-10-16

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
15
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?