はじめに
この記事は私の個人的な技術・検証のメモになります。
間違っている可能性や古い情報の可能性もあります。あらかじめご了承ください。
検証結果(現時点)
検証環境
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 設定
ネットワーク構成
検証内容
- 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 内に出られない。超えられない。
以前の状態
現在の状態
今後試すこと
- Docker の IP 空間を LAN の IP 空間と合わせる
- コンテナ内の ros2 に、自認 IP を変えてもらう(私は 192.168.xxx.xxx)
いずれも IP 空間が LAN と衝突する懸念がある。
全ての LAN 内端末に固定 IP を配れば良いが、汎用的ではない。




