3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

学校WifiでROS2の通信を通す

Posted at

はじめに

学校のWifiというのは、専らMulticastが通りません。セキュリティ上しかたないし、ネットワークが重くなるのを防ぐ為でもあるのか分かりませんが、取り敢えず通りません。

ですから、avahiは通りませんし、ROS2のノード発見も基本的に出来ません。しかしながら、自前のルータを使っているとインターネット接続ができませんし、Tailscale等VPNで外部からアクセスしたりする事も出来ない為色々と不便です。

ここで紹介する手法は学校Wifiに限らず、Multicastがブロックされている環境で有効だと思います。

Solution

Multicastが駄目ならUnicastを使えば良いだけの話です。ここで紹介するのが、Discovery Serverです。

Discovery Serverでは、Node同士が直接Multicastをせず、中央のサーバを経由して発見情報をやり取りし、全通信は基本的にUnicastで行われます。

詳しい情報は以下のリソースを参照して下さい。
https://docs.ros.org/en/humble/Tutorials/Advanced/Discovery-Server/Discovery-Server.html

実際の使い方

以下のコマンドをServer側のPC, Client側のPCのそれぞれで叩くだけです。Client側Nodeはいくつ接続しても問題ありません。(現実的な数字なら)

# Server側
$ fastdds discovery --server-id 0 
$ export ROS_DISCOVERY_SERVER=ip address(server):11811

# Client側
$ export ROS_DISCOVERY_SERVER=ip address(server):11811

両方のexportしている環境変数は全く同じです。ipアドレスはサーバー側のものを代入してください。

恐らくご存知かと思いますが、Server側のipアドレスは以下で確認できます。

# Server側で
$ hostname -I
# または
$ ip a

Dockerを使う場合

Linuxを使っている場合は、docket-compose.ymlnetwork_mode: hostを追加すれば、コンテナはホストと同じネットワーク空間に入るはずです。

ネットワークモードの設定と、環境変数さえ揃えてやれば、Dockerを使っていても通信が通るはずです。

以下例です。(雑ですみません)

services:
  ros2:
    build:
      context: .
      dockerfile: Dockerfile

    container_name: ros2_container
    tty: true
    privileged: true
    network_mode: host
    working_dir: /root/ros_ws

    environment:
      - ROS_DOMAIN_ID=0
      - DEBIAN_FRONTEND=noninteractive
      - ROS_DISCOVERY_SERVER=100.121.25.123:11811
    volumes:
      - ~/.ssh:/root/.ssh:ro
      - ./ros_ws:/root/ros_ws
      - ~/.ccache:/root/.ccache
    devices:
      - /dev:/dev

Windows/macOSを使っている場合は多少複雑になるのと、恐らくUbuntuを使っている方が多いと思うので割愛します。

おわりに

雑な説明にはなってしまいましたが、ROS2 Discovery Serverの紹介をしました。詳しくは公式Docsを読んで使ってみてください。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?