2022/07/21更新
WSL2 で Linux GUI を直接実行できるようになりました。!!Xserver(XLaunch)などのインストールはもう必要ありません!!!
Microsoft の公式チュートリアルを参照してください: Linux 用 Windows サブシステムでの Linux GUI アプリケーションの実行
ただし、以前にで Xserver の表示コマンドを設定している場合は、それをキャンセルする必要があることに注意してください。たった今:.bashrc
#export DISPLAY=xxx.xx.x.xx:0.0
#export LIBGL_ALWAYS_INDIRECT=
#export LIBGL_ALWASY_SOFTWARE=1
gedit
それ以外の場合は、Microsoft の公式チュートリアルに従うと、プログラムを実行しても応答しないことがわかります。!!
問題の背景
システム: Ros システムは、 Microsoft サブシステム WSL の Ubuntu 20.04
にインストールされています。WSL でグラフィカル プログラムを実行するために、Xserver がインストールされています。ROS のテスト中にエラーが発生しました。主な理由は、この記事
を参照することです。
問題の説明
前回の記事 を参照してコマンドを実行するとrosrun turtlesim turtlesim_node
、エラーが発生しました。
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are:...
解決
この問題の原因は、ROS プログラムがグラフィカル インターフェイスに接続できないことです。問題は次のコードにあります。
export DISPLAY=:0.0
export LIBGL_ALWAYS_INDIRECT=
export LIBGL_ALWASY_SOFTWARE=1
この文には問題がありますexport DISPLAY=:0.0
(おそらく作者は問題なく実行できるでしょうが、私のコンピュータで実行するとエラーが報告されます)。ここで独自の WSL IP アドレスを追加する必要があります。WSL IP を確認する方法は次のとおりです。コマンド ライン ( ) を開くには、「It will display」cmd
と入力します。つまり、次のように記述する必要があります。また、XLaunch によって設定された表示番号と一致する必要があります。デフォルトは -1 (0 に等しい) です。1など他の数値に設定されている場合は、上記の設定を変更する必要があります。さらに、下図の3番目の項目を確認する必要がありますipconfig
export DISPLAY=xxx.xx.xx.xx(IP):0.0
:0.0
export DISPLAY=xxx.xx.xx.xx(IP):1.0
参考
[1] WSL (Ubuntu 18.04 LTS) は ROS をインストールし、Rviz と Gazebo を実行できます