Closed1

Dockerで同一ホスト上でROSによる通信

TatsukiTatsuki

概要

Docker 上に複数の ROS melodic のコンテナを用意し、それらが ROS で通信できるのか確認してみた

必要なもの

  • Docker
  • ROS

事前準備

  1. ROS-melodic のイメージを取得
$docker pull ros:melodic

手順

  1. 事前準備で取得したイメージから3つコンテナを起動する(イメージIDは docker images で確認)。--network オプションで host に接続するよう指定。
$docker run --rm --name host-melodic --network=host -it {イメージID}
$docker run --rm --name client-melodic-1 --network=host -it {イメージID}
$docker run --rm --name client-melodic-2 --network=host -it {イメージID}
  1. host-melodic と名前をつけたコンテナ内で roscore 起動
$roscore
  1. roscore 起動した際に表示される ROS_MASTER_URI をclient-melodic-1 と client-melodic-2 コンテナに設定ため、上記2つのコンテナ内部で以下を実行
$export ROS_MASTER_URI={ここに確認したURIを入力}
  1. client-melodic-1 と名前をつけたコンテナ内でトピックに文字列を配信する
$rostopic pub -r 10 /chatter std_msgs/String "this is ros:melodic"
  1. client-melodic-2 と名前をつけたコンテナ内でトピックを購読する。
$rostopic echo /chatter

以下のような出力がされていれば、通信できている。

data: "this is ros:melodic"

参考

このスクラップは2022/09/24にクローズされました