2018/04/17
Docker で ROS を動かしてみる
このページでは Docker で ROS のチュートリアルを動かすまでをまとめています。
環境
- Docker 18.03.0-ce
Dockerfile の記述とコンテナイメージのビルド
まずは、Dockerfile を置くディレクトリをつくっておきましょう。
今回は ROS の Kinetic を動かすので以下のようにディレクトリをつくってみます。
$ mkdir -p docker_ws/ros/kinetic
それでは Dockerfile を記述しましょう。
$ cd docker_ws/ros/kinetic
$ vim Dockerfile
FROM ros:kinetic-ros-base
RUN apt-get update && apt-get install -y \
ros-kinetic-ros-tutorials \
ros-kinetic-common-tutorials \
&& rm -rf /var/lib/apt/lists \
つづいてコンテナイメージをビルドします。
$ docker build . --tag ros:ros-tutorials
ROS tutorial を動かす
まず通信用のネットワークを作ります。
$ docker network create ros
それでは、まず roscore を起動しましょう。
$ docker run -it --rm \
--net=ros \
--name master \
ros:ros-tutorials \
roscore
roscore が正しく立ち上がれば成功しています。
では、新しくターミナルを立ち上げてパブリッシャを起動してみましょう。
$ docker run -it --rm \
--net=ros \
--env ROS_HOSTNAME=talker \
--env ROS_MASTER_URI=http://master:11311 \
--name talker \
ros:ros-tutorials \
rosrun roscpp_tutorials talker
配信が始まれば成功しています。
つづいて配信を受け取るサブスクライバを起動してみましょう。
$ docker run -it --rm \
--net=ros \
--env ROS_HOSTNAME=listener \
--env ROS_MASTER_URI=http://master:11311 \
--name listener \
ros:ros-tutorial \
rosrun roscpp_tutorials listener
うまく受信できたでしょうか。この記事はこれで以上になります。
個人的に Docker と ROS はバージョン管理を簡単にし、とても相性がいいものだと考えています。積極的に使っていきたいです。