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通信が実行可能になる.