WSL2にROS2(jazzy)をインストールしてみた

昨年、WSL2にROS2をインストールしてみたら外部のROS2と通信できずに使用を断念した。あれから時間が経ったのでもう一度検索してみたら「@akinami」さんのサイトにやり方が載っていたのでやってみた。

WSL2をインストールする

WSL2のインストールは、@zakoken(zako ken)さんのサイトの通り実行した。但し、インストールされたubuntuのバージョンは異なる。

os-releaseファイルを表示してUbuntu のバージョンを調べてみる。

cat /etc/os-releaseの結果
os-releaseファイルの内容

ROS 2 Jazzyをインストールする

WSL2のインストールは、加藤祐介さんのサイトの通り実行した。上記のWSL2のインストールが済んでいればこのサイトのスタートである「Ubuntu 24.04 LTSがインストールされたPC」の状態になっている。
違いといえば「turtlesimで動作確認」の亀を動かすときに矢印キーを使うことくらいである。

turtlesimので動作確認する
ターミナルを2つ起動し、それぞれ次のコマンドを入力する。亀は矢印キーを使って動かす。

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

WSL2にミラーモードを設定する

@akinami」さんのサイトにしたがってWSL2にミラーモードを設定してみる。
.wslconfigの設定から動作確認まで、このサイトの通りに実行できた。
.wslconfigの設定は WSL2の.wslconfigを作成するときはUTF-8 BOMなしで行う。設定内容はサイトのまま以下の通りにする。

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

ファイルを保存したら、WSLを再起動する。再起動はよく使う。

wsl --shutdown

接続確認

ros2 run demo_nodes_py talker
ros2 run demo_nodes_py listener

$HOME/.bashrcにexport ROS_DOMAIN_ID=1の設定を忘れないようにする。

新たな接続先が増えたらファイアウォールの「リモートIPアドレス」に追加する。
 次の順にクリックしてダイアログを表示する。
  コントロール パネル > システムとセキュリティ > Windows Defender ファイアウォール >
  詳細設定 > 受信の規則 > ros2upd > スコープ[タブ]
 または、Win+R でファイル名を指定して実行を開いてwf.mscを入力してOKを押す。
 開いた画面で受信の規則 > ros2upd > スコープ[タブ]

gazeboをインストールする

WSL2のインストールは、@akinamiさんのサイトの通り実行した。このサイトの通りの操作で問題なくインストールできた。

rviz2も起動する

この状態でrviz2も問題なく起動する。

WindowsとWLS2のファイル相互参照

WSL2からWindowsのドキュメントを参照する方法

ls /mnt/c/Users/Windowsユーザー名/Documents

WindowsからWSL2のドキュメントを参照する方法

dir \\wsl.localhost\Ubuntu\home\ubuntuユーザー名

からのドキュメントを参照する方法

トラブルシューティング

亀を起動[ros2 run turtlesim turtlesim_node]するとエラーメッセージが出る。

MESA: error: ZINK: failed to choose pdev
glx: failed to create drisw screen
^C[INFO] [1735267455.877908547] [rclcpp]: signal_handler(signum=2)

このサイトに従って以下の処理を行う。

sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt upgrade


トピックのコマンドを使い、状態を確認してみると通るようになる。

ros2 topic list -t
ros2 topic echo /turtle1/cmd_vel

参考

Ubuntu 24.04LTSの初期設定 on WSL2