Closed1
Dockerで同一ホスト上でROSによる通信
概要
Docker 上に複数の ROS melodic のコンテナを用意し、それらが ROS で通信できるのか確認してみた
必要なもの
- Docker
- ROS
事前準備
- ROS-melodic のイメージを取得
$docker pull ros:melodic
手順
- 事前準備で取得したイメージから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}
- host-melodic と名前をつけたコンテナ内で roscore 起動
$roscore
- roscore 起動した際に表示される ROS_MASTER_URI をclient-melodic-1 と client-melodic-2 コンテナに設定ため、上記2つのコンテナ内部で以下を実行
$export ROS_MASTER_URI={ここに確認したURIを入力}
- client-melodic-1 と名前をつけたコンテナ内でトピックに文字列を配信する
$rostopic pub -r 10 /chatter std_msgs/String "this is ros:melodic"
- client-melodic-2 と名前をつけたコンテナ内でトピックを購読する。
$rostopic echo /chatter
以下のような出力がされていれば、通信できている。
data: "this is ros:melodic"
参考
このスクラップは2022/09/24にクローズされました