グラフィックス環境のセットアップ¶
グラフィックス環境について¶
Choreonoidではロボットや環境のモデルを三次元コンピュータグラフィックス(3DCG)で描画するようになっています。これを行うため、使用するPCのグラフィックス環境は以下を満たしている必要があります。
三次元描画APIであるOpenGL(バージョン3.3以上)が利用可能であること
OpenGLについてGPUによるハードウェアアクセラレーションが利用可能であること
1については、 対応プラットフォーム であれば通常は利用可能となっています。Choreonoidが動作するためにまずはこれを満たしている必要があります。なお、Choreonoidの描画エンジンはOpenGL 3.3以降のAPIを使用するもので、GLSLというプログラマブルシェーダ言語を用いて描画機能を実装しています。
OpenGLはバージョン3.3以上であれば動作しますが、より新しいバージョンが利用可能な環境では、その機能も活用してより高度な描画を行うようになっています。特にOpenGL 4.5以降が利用可能な環境では、「反転深度バッファ(reversed depth buffer)」という手法が有効となり、奥行き方向の描画精度が大きく向上します。これにより、大きな物体と小さな物体が混在するシーンや、広い範囲におよぶ環境モデルを扱う場合でも、物体表面のちらつき(Zファイティング)等が生じにくくなります。最近のGPUとドライバの組み合わせであれば通常はOpenGL 4.6まで利用可能であり、この機能も自動で有効となります。OpenGL 4.5未満の環境では代わりに標準の深度バッファが使用され、起動時にメッセージビューにその旨の警告が表示されます。
その上で、快適に利用するためには2も満たしていることが望ましいです。そうでないと、3DCGの描画が極端に遅くなってしまうので、よほど簡単なモデルを利用するのでない限り、実用的ではなくなってしまいます。
WindowsであればPC購入時の状態で通常はOpenGLのハードウェアアクセラレーションが利用可能となっています。ただしWindowsを自前でインストールしたり、ビデオボードを交換したりした場合は、搭載されているGPU用のグラフィックスドライバを別途インストールしなければならないこともありますので、ご注意ください。
Linuxでもオープンソースのドライバが充実しており、多くのGPUではインストール直後からOpenGLのアクセラレーションが機能します。ただしNVIDIA製GPUについては、性能を発揮させるために別途プロプライエタリドライバをインストールする必要があります。GPUの種類ごとの状況については後述します。
仮想マシンで使用する場合は、OpenGLのハードウェアアクセラレーションが十分に機能しない場合が多いです。その場合、描画が遅かったり、うまく描画できなかったりします。これは仮想マシン側の不備になります。一般的に仮想マシンではそのような状況になることが多いので、あまり使用は推奨できませんし、使用するとしてもこのことを承知の上で使うようにしてください。Windows上のWSLについても同様の問題がありますので、これについては次節で説明します。
WSL上での使用について¶
Windows上でLinux環境を利用できるWSL(WSL2)上でChoreonoidを使用しようとする方も多いようですが、グラフィックス環境の観点から、WSLの使用は推奨できません。
WSL2のGUI機能(WSLg)はLinuxのGUIアプリケーションを表示することができ、OpenGLについてもMesaのD3D12バックエンドを介してGPUを利用する仕組みが一応用意されています。しかし実際には、多くの環境でこの仕組みは機能せず、OpenGLの描画はソフトウェアレンダリング(llvmpipe)となります。この場合ハードウェアアクセラレーションは全く効かないため、描画は非常に遅くなります。また、仮にD3D12バックエンドが有効になった場合でも、利用できるOpenGLの機能・バージョンには制約があり、描画が乱れる等の問題が生じることがあります。この状況は現在も根本的には改善されておらず、GPUやドライバの組み合わせによってはアクセラレーションが全く機能しないという報告が続いています。
WSL上でOpenGLの描画がどのように行われているかは、後述のglxinfoコマンドで確認できます。"OpenGL renderer string" の項目に "llvmpipe" と表示される場合は、ソフトウェアレンダリングとなっています。
このように、WSLについてはOpenGLのハードウェアアクセラレーションがまともに機能する環境が実質的に存在しないため、Choreonoidの動作環境としてはサポート対象外となります。WSL上で描画が遅い・乱れるといった問題が生じても、それはWSLのグラフィックス環境の制約によるものであり、Choreonoid側で対処できるものではありません。Windows上でChoreonoidを使用する場合はWindowsネイティブ版を使用してください。Linux版を使用したい場合は、実機にインストールしたUbuntu Linuxでの使用を推奨します。
GPUの種類¶
GPUの種類は大きく製造メーカーによって区別できます。以下ではGPUの種類ごとの状況について簡単にまとめておきます。
NVIDIA製のGPU (GeForce/RTX/Quadro等)
問題なく動作し、性能も申し分ないです。
最高の性能を求める場合は、現在のところNVIDIA製のハイエンドモデルが選択肢として有力です。
Ubuntuで使用する場合、本来の性能を発揮させるためには別途プロプライエタリドライバをインストールする必要があります。インストール方法は後述します。
AMD製のGPU (Radeon)
近年のモデルであれば問題なく動作します。
Linuxでは、Ubuntuに標準で含まれるオープンソースドライバ(Mesa)がAMD製GPUに正式対応しており、追加のドライバをインストールすることなくハードウェアアクセラレーションが機能します。ドライバの性能も近年は大きく向上しています。
かなり古い世代のモデル(GCNアーキテクチャより前のもの)では問題が生じる場合がありますので、使用を控えてください。
Intel製のGPU(CPU内蔵GPU、Arc)
Core iシリーズ等のCPUに内蔵されているGPU(HD Graphics、UHD Graphics、Iris Xe等)のほか、単体GPUのArcシリーズもあります。いずれも動作については問題ありません。
CPU内蔵GPUの描画速度は基本的に上記2メーカーの単体GPUほど速くはありませんが、比較的単純なモデルを使用する場合は問題ないかと思います。
Ubuntuに標準で含まれるオープンソースドライバで問題なく動作します。
ただしCPU内蔵GPUの古い型番のものだと影の描画がうまくいかない場合があります。そのような型番のものに対しては影の描画を無効化するようにしています。
NVIDIA製GPUは、これまでの実績と安定性、性能等総合的に考慮して、使用を推奨できます。AMD製のGPUも現在はドライバが安定しており、十分利用可能です。Intel製のCPU内蔵GPUは性能はそれほどではありませんが、安定して動作しますので、お持ちのPCに搭載されている場合、まずはそれで試してみるのがよいかと思います。
WindowsにおけるGPUドライバのインストール¶
Windowsでは適切なドライバが標準でインストールされていることが多いため、通常はあまり気にしなくても大丈夫です。Choreonoidで三次元モデルの描画がうまくいかない場合は、ドライバが正しくインストールされているか確認するようにしてください。
Ubuntu LinuxにおけるGPUドライバのインストール¶
Linuxの場合はGPUドライバを別途インストールしなければならない場合があります。以下ではその方法についてGPUのタイプごとに説明します。
NVIDIA製GPUの場合¶
NVIDIA製のGPUについては、NVIDIAが開発しているドライバ(Ubuntuのパッケージ管理上は「プロプライエタリドライバ」として扱われるもの)を使用する必要があります。こちらはメーカーが自ら開発しているだけあって機能や性能は申し分なく、GPUの能力を最大限に利用することが可能です。これをインストールしていない場合はオープンソース版の "Nouveau" というドライバが使用されますが、こちらは3D描画のハードウェアアクセラレーションが十分に機能しないため、使用は推奨できません。
なお、最近のUbuntuでは、OSのインストール時にNVIDIA製GPUが検出されると、NVIDIAのドライバをあわせてインストールする選択肢が用意されています(インストーラの「グラフィックスとWi-Fiハードウェア用のサードパーティ製ソフトウェアをインストールする」といった項目です)。これを有効にしてOSをインストールした場合は、最初からNVIDIAのドライバがインストールされた状態となっており、追加の作業は不要です。ドライバがインストール済みかどうかは、端末で nvidia-smi コマンドを実行してGPUの情報が表示されるかどうかで確認できます。
ドライバがインストールされていない場合は、Ubuntuが公式リポジトリで提供しているパッケージからインストールするのが確実です。端末から以下のコマンドを実行すると、使用中のGPUに対して推奨されるドライバが自動で選択されてインストールされます。
sudo ubuntu-drivers install
インストール可能なドライバの一覧は以下のコマンドで確認できます。
ubuntu-drivers devices
ここで "recommended" と表示されているものが推奨のドライバです。特定のバージョンを指定してインストールしたい場合は、
sudo apt install nvidia-driver-595
のようにパッケージ名を指定してインストールすることもできます。(595の部分はドライバのバージョン系列です。)
GUIで操作したい場合は、「ソフトウェアとアップデート」ツールの「追加のドライバー」タブからも同様のインストールを行うことができます。利用可能なドライバの一覧が表示されるので、なるべくバージョンの新しいものや、「検証済み」と記されているものを選択して、「変更の適用」を実行してください。
いずれの方法でも、インストール後はPCを再起動することでドライバが有効になります。
注釈
最近のNVIDIAドライバでは、従来のプロプライエタリ版カーネルモジュールに加えて、オープンソース版カーネルモジュールを使用するパッケージ(パッケージ名に "-open" が付くもの)も提供されており、比較的新しい世代のGPUではそちらが推奨となっています。 ubuntu-drivers install を使用すれば、GPUに応じて適切なものが自動で選択されます。
注釈
セキュアブートが有効なPCでは、ドライバのインストール時にモジュール署名用のパスワード設定(MOKの登録)を求められることがあります。その場合は画面の指示に従い、再起動時に表示される画面でパスワードを入力して登録を行なってください。
Intel製GPUの場合¶
Intel製のGPUは、Ubuntu Linuxでは標準のドライバが機能するようになっています。これはオープンソースのドライバになりますが、Intel自身も開発に関わっており、品質・性能とも問題ありません。Intel製GPUについては、別途ドライバをインストールする必要はありません。
AMD製GPUの場合¶
AMD製のGPUは、Ubuntu Linuxでは標準のオープンソースドライバ(Mesa)が機能するようになっており、通常は別途ドライバをインストールする必要はありません。性能面でも近年のMesaドライバは十分に高速です。
計算用途向けにAMD製のプロプライエタリドライバ(AMDGPU-PRO)も存在しますが、Choreonoidの描画用途では通常必要ありません。標準のドライバでうまく動作しない場合は、AMDの公式サイトなどで情報を取得してください。
OpenGLバージョンの確認方法¶
OpenGLのバージョンは、WindowsであればGPUメーカーの提供する設定用ツールなどを用いて確認することができます。
Ubuntuでは "glxinfo" というコマンドを用いて確認することができます。 このコマンドは
sudo apt install mesa-utils
を実行するとインストールされます。そして
glxinfo
を実行することでその環境で利用可能なOpenGLに関する情報が表示されます。この中に
OpenGL version string: 4.6.0 NVIDIA 595.71.05
といった表示があれば、OpenGLの4.6.0までサポートされていることになります。
あるいは、Choreonoid起動時に、 メッセージビュー に
OpenGL 4.6 (GLSL 4.60 NVIDIA) がシーンビューで利用可能です.
ドライバプロファイル: NVIDIA Corporation NVIDIA GeForce RTX 5090/PCIe/SSE2 4.6.0 NVIDIA 595.71.05.
といった情報が出力されますので、そちらで確認することもできます。ここでは使用しているGPUとドライバの情報も確認できます。
GPU性能の確認方法¶
シーンビュー の 設定ダイアログ にある「FPSテスト」というボタンを押すと、シーンを360度回転させるアニメーションを行なって、これにかかるフレームレートを表示します。この機能により描画速度が分かりますので、GPUやGPUドライバを変更した際などに、描画速度の変化を確認することができます。テストは何らかのモデルやプロジェクトを読み込んで、モデルが表示されている状態で行うとよいでしょう。