LoginSignup
25
32

More than 5 years have passed since last update.

Windows版DockerでROSを動かしてみたメモ

Last updated at Posted at 2015-11-19

実質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

いい感じに通信できましたとさ

25
32
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
25
32