ROS x Docker x ネットワーク のお勉強
やりたいこと
dockerコンテナとホストPCでros messageの通信を行いたい
ROS
ROBOT PCでroscoreを起動
HOST PC
export ROS_IP = (HOST PCのIP)
export ROS_MASTER_URI=http://(ROBOTのIP):11311
- 正確にはroscoreが立ち上がっているPCのIP
ROBOT PC
export ROS_IP = (ROBOT PCのIP)
exprot ROS_MASTER_URI=http://(ROBOTのIP):11311
確認方法
ROBOT_PC
- $ rostopic pub -r 10 /topic_name std_msgs/String hello
HOST_PC
- $ rostopic echo /topic_name
参考:
ja/ROS/Tutorials/MultipleMachines - ROS Wiki
複数 PC に分散したノードの ROS を使った通信 - Daily Tech Blog
ROS 複数のPCを使ってノードを走らせる場合。: マイコン漬け
ROS x Docker
上記と基本的には同じ。
下記のように
docker inspect -f "{{.NetworkSettings.IPAddress}}" CONTAINER
でIPを調べてROS_IPにセットする。
docker-compose で立ち上げたコンテナの IP アドレスを調べる - Qiita
TODO: --net hostの時の設定について調べる
コンテナのIP固定の方法
Public accessible IP in container (like bridge network in VirtualBox) - DockerEngine - Docker Forums
参考:
Docker + ROS(kinetic)でチュートリアル - Qiita
Exposing ROS Containers to Host Machine - ROS Answers: Open Source Q&A Forum
Small ROS Network Example · GitHub
Challenges with running ROS on Kubernetes | Service Engineering (ICCLab & SPLab)
Docker v1.9のマルチホストネットワーク機能を使ったROS通信が可能か検証してみた - Qiita
Docker単体
参考:
Docker の基本学習 ~ コンテナ間のリンク - Qiita
マルチホストでのDocker Container間通信 第1回: Dockerネットワークの基礎 - UZABASE Tech Blog
Dockerのマルチホストネットワークで複数ホスト間を繋ぐ仮想ネットワークを作る(Dockerの最新機能を使ってみよう:第1回) | さくらのナレッジ