えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

rqt_graphはWindowsで映せたというはなし

 現在、自宅には4kのディスプレイ1台があります。しかし、UbuntuWindowsどちらを映すかでいつも悩みます…。

 開発においてUbuntuは便利ですし、オフィス系や多くのソフトを扱えるWindowsも使いたいところです。再起動したり、モニタ切り替えとかをするのも面倒なもので、だらしない自分としては1台のコンピュータですべてのタスクをこなしたいところではあります。

 そこで現在、Windows10ですべて開発を進めたいと思い、環境構築にチャレンジしています。確か、プログラム開発はリモートでもVSCodeで扱えたと思うので、sshでのプログラムはそんなに問題にならないし、ファイル転送についても、scpで何とかなるので解決(?)。あとは、リモート操作の最大の障壁といえるGUIです。

 私は、VNCを使ってデスクトップを映すという手が真っ先に浮かびましたが、いらないところまで映したくないなーと気になったり、ウィンドウサイズが小さいと映せる範囲も狭いので何かと不便です。そこで、コマンド実行後に対象ウィンドウのみを映す方法を模索することにしました。

とりあえず実行したこと

qiita.com

↑この手順に従ってX11 Forwardingを行ってみました。大まかな手順としては、

  1. Windows側にvcxsrv-64.1.20.9.0.installerをダウンロードする。
  2. インストーラーのデフォルトの設定でインストールを完了する。(設定はXLaunchで変更可能)
  3. TeraTermを開いて、設定->SSHポート転送 をクリックして「リモートのXアプリケーションをローカルのXサーバに表示する」にチェックを入れて、閉じる。
  4. 設定の保存をする。
  5. 再度Tera Termでログインする。

 私はJetson AGX Xavierと接続しました。

現時点での動作報告

 一応動作したみたいですが、SSH接続後に

Xlib:  extension "NV-GLX" missing on display "localhost:10.0".
Xlib:  extension "NV-GLX" missing on display "localhost:10.0".
Xlib:  extension "NV-GLX" missing on display "localhost:10.0".

というエラー表記が出て、GUIアプリの立ち上がり時に

libGL error: MESA-LOADER: failed to open swrast (search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: swrast

というエラーが出たことを確認しました。エラーの解消法は今のところ分かっていませんが…

 rviz2,rqt_graph,rqt_image_viewについて動作確認を行いました。

f:id:Ray_ar:20210314173047p:plain
実行結果

  • rviz2 : コアダンプ

  • rqt_graph : 正常に動作

  • rqt_image_view : 正常に動作せず(バッファが足りないというエラーがPublisher側で確認できた)

 結果、rqt_graphの動作は確認できました。OpenGLのエラーが解消すれば、もしかしたらRvizも動くかもしれませんが、今のところは動作を確認できませんでした。

 ちなみに、Chromium-browserも動かしてみました。これは、少し動作に遅れはありますが、動きました。アプリによって動作するものと動作しないものがあるのでしょうか…?


 Ubuntu用に記述しているGUIプログラムをWindowsでもリモート操作できるようになったので、とりあえず現時点ではOKということで。しかし、現在位置の確認とかをするのにRviz2は必要になってくるので、何か解決策が欲しいところです。


追記:Jetson特有の問題みたいです。Raspiやx86+Geforce環境では動作したみたいです。改善方法が欲しいー