Skip to the content.

Docker+マルチホストでROS通信(セキュリティがあれなのでローカルネットワーク以外では非推奨)

環境構築の手間を省いて複数マシン間で通信するための方法.
(商用で大規模なネットワークを構築するときなどはk8sやDockerSwarmなどでコンテナオーケストレーションなるものを行う?らしいが,ローカル環境でROSの実験をしたいときの手抜きのDocker+マルチホストです.)

docker networkのネットワークの中からhostを選択し,以下のように実行

docker run -it --rm --net host ros:melodic

--net hostというオプションによってホスト側のネットワークを利用する.
その前にホストPCに/etc/hostsにローカルネットワーク内の他PCのホスト名と対応IPを記述しておく. /etc/hostsを設定しておかないと,ホスト間のトピックのリストを見ることはできるが,トピックの中身を見ることができなかったので設定しておく必要がある.
dockerのshellを起動し,ROS_MASTER_URIとROS_IPを変更する.

それによってROS通信が実行可能になる.

参考