WSLでxeyesやRvizでエラーが出たのでその原因と解決策


はじめに

WSL2(Ubuntu 18.04)でROS1(ROS-Melodic)を使おうと設定を進める中でGUI関連のエラーに悩まされたので、それらの記録です。

環境

WSL2導入までは(1)、WSL2導入後からGUI設定までは(2)のサイトを参考にしていた
自分の環境はWSL2だが、WSL1でも参考になると思われる

生じたエラー

xeyesなどのx11系アプリのGUIすら表示されない

WSLの設定を進める中で、xeyes等を実行してもXサーバが起動しない

エラーメッセージ

Error: Can't open display: ~IPアドレス~ :0.0

原因

Windows Defender ファイヤウォールその他セキュリティソフトによってXserverの通信がブロックされている

自分の環境ではESETが原因でした

解決策

Windows Defender ファイヤウォールやESETのネットワーク保護を解除する

Windows Defender ファイヤウォールを直接編集できる場合

ESETが入っている場合

Windows Defender ファイヤウォールを直接編集できないため、
ESETを起動 -> 設定 -> ネットワーク保護 -> トラブルシューティングウィザード -> VcXsrv windows xserver を「ブロック解除」
を行う

その他セキュリティソフトが入っている場合

上記を参考に、どこかで通信がブロックされていないかチェックする


Rvizが起動直後に落ちる

xeyesなどは起動するが、ROSインストール後にrvizを実行すると一瞬起動画面が表示されてすぐに落ちる

エラーメッセージ

segmentation fault (core dumped) rviz

原因

.bashrc に設定していた LIBGL_ALWAYS_INDIRECT=1 が悪さをしていた

解決策

~/.bashrc
LIBGL_ALWAYS_INDIRECT=

として数値を指定しない

参考

まとめ

セキュリティソフトと環境変数には気をつけろ!という教訓を得ました
(初投稿です。ありがとうございました。)