実質Ubuntuのみで動くROSをDockerから使えるようなので,Windows上で試してみたメモ
Tutorialが用意されているようなので,こいつをやってみる
https://hub.docker.com/_/ros/
##使用した環境
-
Windows 10 Education
-
Docker 1.9.0
http://docs.docker.com/engine/installation/windows/ に従ってDockerを入れ, ほかは何もしていない状態を仮定
##Dockerfileの準備
インストール時に出来たDocker Quickstart Terminalを開く.
VMが立ち上がったらとりあえず作業用フォルダを作成.
$ mkdir -p workspace/ros-tutorials
$ cd workspace/ros-tutorials
チュートリアルで使う最小限のROS構成をDockerで構成
$ vi Dockerfile
このファイルに下記の内容を記載.
FROM ros:indigo-ros-base
# install ros tutorials packages
RUN apt-get update && apt-get install -y \
ros-indigo-ros-tutorials \
ros-indigo-common-tutorials \
&& rm -rf /var/lib/apt/lists/
そしてこれをビルドする.apt-getなどをするので少し時間がかかる.
$ docker build --tag ros:ros-tutorials .
##ROSの通信をしてみる
###ネットワークの作成
まずは,ROSノードたちが通信するネットワークを作成する.
$ docker network create foo
###Masterの起動
次に,コンテナの作成とその中でのプロセス起動を行う.
2行目のコマンドは,もとは--publish-serviceだったけれど,今は--netを使うようになっているらしい.
(参考:https://github.com/docker/libnetwork/issues/662)
$ docker run -it --rm \
--net=foo \
--name master \
ros:ros-tutorials \
roscore
これでroscoreが起動する.
###パブリッシャーの起動
DockerはOne container one processらしいので,次のコンテナにプロセスを起動してみる.
新しくDocker Quickstart Terminalを開いて,下記を実行
$ docker run -it --rm \
--net=foo \
--env ROS_HOSTNAME=talker \
--env ROS_MASTER_URI=http://master:11311 \
--name talker \
ros:ros-tutorials \
rosrun roscpp_tutorials talker
これでパブリッシュするノードが動き始めた.
###サブスクライバーの起動
次にこれをサブスクライブしてみる.
Docker Quickstart Terminalを開いて,下記を実行
$ docker run -it --rm \
--net=foo \
--env ROS_HOSTNAME=listener \
--env ROS_MASTER_URI=http://master:11311 \
--name listener \
ros:ros-tutorials \
rosrun roscpp_tutorials listener
いい感じに通信できましたとさ