0
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?

WSLのConsommeネットワークモードがROS2を通すかも?

0
Posted at

はじめに

この記事は私の個人的な技術・検証のメモになります。
間違っている可能性や古い情報の可能性もあります。あらかじめご了承ください。

検証結果(現時点)

  • WSLホストがファイアウォールを許可していれば、WSL2<->LAN内マシンで相互に UDP ユニキャストが通った
    image.png
  • ROS2 への転用には課題がありそう

検証環境

WSL2 のバージョンについて

> wsl -V
WSL バージョン: 3.0.3.0
カーネル バージョン: 6.18.54.1-1
WSLg バージョン: 1.0.79
MSRDC バージョン: 1.2.7391
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26200.9711

WSL 設定

image.png

ネットワーク構成

image.png

検証内容

  • LAN内マシン(debian)とWSL内マシン(ubuntu)で相互に UDP パケットをブロードキャスト送信/受信した
    使用したコマンドは以下。

送信側

hostname -I # 自身の IP アドレスを確認
echo "Hello, UDP Broadcast!" | nc -u -b 192.168.xxx.255 7650 # 7650 ポートへ UDP ブロードキャスト

受信側

nc -l -u -p 7650 # 7650 ポートで UDP を listen

ROS2 転用への課題

  • 前提
    • 筆者は WSL2 上に Docker を立ち上げ、その中から LAN 内の ROS2 ロボットを操作しようとしている
    • ROS2 は LAN 内のロボットを探すために DDS (Data Distribution Service) で UDPユニキャスト発信を行う
    • Docker on WSL2 では、この UDP 通信が LAN 内に出られない。超えられない。

以前の状態

  • ネットワークモード: NAT では、WSL から外へ DDS パケットが出られず、LAN 内のロボットとの通信が確立出来なかった。
    image.png

現在の状態

  • consomme だと LAN 内に DDS が出られるが、ユニキャストの基準IPがコンテナ内のIPのため、LAN内のロボットに届かない
    image.png

今後試すこと

  • Docker の IP 空間を LAN の IP 空間と合わせる
  • コンテナ内の ros2 に、自認 IP を変えてもらう(私は 192.168.xxx.xxx)

いずれも IP 空間が LAN と衝突する懸念がある。
全ての LAN 内端末に固定 IP を配れば良いが、汎用的ではない。

0
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
0
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?