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

「WSL2のROS2ノード」と「外部PCのROS2ノード」を通信する方法

Last updated at Posted at 2024-04-19

お疲れ様です。秋並です。

最近、WSL2のアップデートでミラーモードが追加され、「WSL2のROS2ノード」と「外部PCのROS2ノード」で通信できるようになったので、今回はその手順について解説します。

image.png

前提条件

  • WSL2がインストールされている
  • WSL2にROS2がインストールされている
  • 外部PCのOSはubuntu
  • 外部PCにROS2がインストールされている

wslのアップデート

コマンドプロンプトを起動し、以下コマンドでWSLをアップデートします。

wsl --update
wsl --update --pre-release

ネットワークの設定

windowsのC:\Users\<ユーザ名>\内の.wslconfigに以下を記載し、ネットワークモードをミラーモードに設定してください。

[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

よくあるミスとして、新規作成した「.wslconfig」に拡張子がつき、「.wslconfig.txt」となってしまい、設定が正しく反映されないことがあります。

そのため、下画像のように「ファイル拡張子」と「隠しファイル」を表示するようにし、不要な拡張子がついていないことを確認してください。

image.png


ファイルを保存したら、WSLを再起動します。

wsl --shutdown

ファイアウォールにルールを追加する

上記でWSL側の設定は完了しましたが、このままだとファイアウォールの影響で外部PCとの通信が出来ません。

ファイアウォールを無効化すれば通信できますが、それだとセキュリティ的に不安なので、ここでは「外部PCとのみ通信可能とする」ファイアウォールの規則を追加します。

以下の手順がセキュリティ的に最適であるかは保証できないので、自己責任で実施してください。

1.「コントロールパネル」を起動します。
image.png

2. 画面左の「詳細設定」をクリックします。
image.png


3.画面左の「受信の規則」をクリックし、画面右の「新しい規則」をクリックします。
image.png


4.「カスタム」を選択し、「次へ」をクリックします。
image.png


5.「すべてのプログラム」を選択し、「次へ」をクリックします。
image.png


6.ROS2はUDPで通信を行っているため、「プロトコルの種類」を「UDP」に設定し、「次へ」をクリックします。
image.png


7.規則を適用するローカルIPアドレスに「windows側のIPアドレス」、リモートIPアドレスに「外部PC側のIPアドレス」を設定し、「次へ」をクリックします。
image.png


8.「接続を許可する」を選択し、「次へ」をクリックします。
image.png


9.プロファイルの項目はデフォルトのままでよいので、そのまま「次へ」をクリックします。

10. 「名前」に適当な規則名を入力し、「完了」をクリックします。
image.png

外部PCとの通信テスト

設定が完了したら、実際に「WSL2のROS2ノード」↔「外部PCのROS2ノード」で通信が出来るか確認しましょう。

WSL2側で、パブリッシャーのデモノードを起動します。

ros2 run demo_nodes_py talker

次に、外部PC側でサブスクライバのデモノードを起動します。

ros2 run demo_nodes_py listener

以下のように、外部PC側でメッセージをサブスクライブできればOKです。

[INFO] [1713533822.642729403] [listener]: I heard: [Hello World: 0]
[INFO] [1713533823.588779235] [listener]: I heard: [Hello World: 1]
[INFO] [1713533824.589133316] [listener]: I heard: [Hello World: 2]
[INFO] [1713533825.589290284] [listener]: I heard: [Hello World: 3]
[INFO] [1713533826.589316555] [listener]: I heard: [Hello World: 4]
[INFO] [1713533827.588612880] [listener]: I heard: [Hello World: 5]
[INFO] [1713533828.589711246] [listener]: I heard: [Hello World: 6]

さいごに

今回は、
「WSL2のROS2ノード」と「外部PCのROS2ノード」を通信する方法
について解説しました。

今までは、「外部PCのROS2ノード」と通信する時だけバーチャルボックスを使うなどしていましたが、今回のミラーモードの登場でWSL2でROS2を使用する際の不満点はほとんどなくなったかなと思ってます。

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