ROS2開発環境をDockerで構築する
ROS2の勉強始めよっかな〜と思い立ったので ROS2ではじめよう 次世代ロボットプログラミングの第2章を参考にROS2環境をDockerで構築してみました。
セットアップ方法を見ていると「ROS1環境があるところにROS2をセットアップすると環境変数とか依存関係で大変なことになる場合があります」というようなことが書いてあり,そのままインストールするとあとで大変になりそうなのでDockerイメージとして構築してみます。
Dockerfileの作成とイメージのビルド
以下のようなDockerfileを作成します。
# docker build -t ros2:dashing . FROM ubuntu:18.04 ENV DEBIAN_FRONTEND noninteractive ENV ROS_DISTRO dashing # ロケールのセットアップ RUN apt-get update && apt-get install -y locales && \ dpkg-reconfigure locales && \ locale-gen ja_JP ja_JP.UTF-8 && \ update-locale LC_ALL=ja_JP.UTF-8 LANG=ja_JP.UTF-8 ENV LC_ALL ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 ENV LANGUAGE ja_JP.UTF-8 # APTソースリストの設定 RUN apt-get update && \ apt-get install -y curl gnupg2 lsb-release && \ curl http://repo.ros2.org/repos.key | apt-key add - && \ sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu \ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' && \ apt-get update # ROS2パッケージのインストール RUN export ROS_DISTRO=dashing && \ apt-get install -y ros-$ROS_DISTRO-desktop \ python3-colcon-common-extensions python3-rosdep python3-argcomplete && \ rosdep init && \ rosdep update ## 環境設定 RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc
Dockerfileを保存したディレクトリの中で以下を実行します。
$ docker build --rm -t ros2:dashing .
30分以上かかるので気長に待ちます。
動作確認
demo_nodes_cppに含まれるTalkerとListenerを使って動作確認してみます。
うまく行けばTalkerで出力された内容がListenerで受信されることを確認できます。
ターミナルを2つ開き,それぞれで以下のコマンドを実行してコンテナを起動します。
$ docker run --rm -it ros2:dashing
Listenerの起動
一方のターミナルで以下のコマンドを実行し,Listenerを起動します。
# ros2 run demo_nodes_cpp listener
Talkerの起動
もう一方のターミナルで以下のコマンドを実行し,Talkerを起動します。
# ros2 run demo_nodes_cpp talker
表示例
Talkerの表示例
Listenerの表示例
以上のようにTalkerの内容がListenerに反映されれば正常に動作しています。
あとは以下のような感じでROS2ノードを作って遊びましょう。