昨年、Genesisは、現実的な物理シミュレーション、インタラクティブ4Dワールドなどを作成するためのエキサイティングな新しいツールとしてリリースされました。私はそれを試してみたいと思っていましたが、それを機能させるのは簡単ではありませんでした。セットアップ中に多くの課題に直面したことを認めなければなりません。
このチュートリアルでは、私が遭遇した問題を簡単に共有し、Google Colabといくつかのトリックを使用して最終的に実行した方法を示します。
Genesisの概要のみが必要な場合は、以前の記事「Genesis Physics Engine:Guide with Examples」をご覧ください。創世記
での私の最初のセットアップエクスペリエンス私が最初にGenesisで作業を始めたとき、私はドキュメントのインストール手順に従いました。すぐに、依存関係に問題が発生しました。 Genesisには、Taichi(1.7.x)と呼ばれるモジュールの特定のバージョンが必要ですが、私のmacosはそれをサポートしていませんでした。参照のために、私のMacは8歳です…。
それから、私がそれを整理したと思ったとき、私は「ユニフォームではない」などのエラーが発生し始めました。 このプロセスを通して、私はオンラインで調査して、他の誰かが同じ問題に遭遇したかどうかを確認しました。それは私だけではなかったことが判明しました。多くの人が同じ困難に直面し、多くの人がスクリプトを機能させる解決策を見つけることができなかったようです。
私がどのようにして創世記を作ったか:Google Colab to the Rescue 最初のフラストレーションの後、私はProアカウントでGoogle Colabを試すことにしましたが、それはまさに自分が必要としているものであることが判明しました。 ColabのGPUリソースを使用して、:ができました必要なすべての依存関係をインストールすることはまったくありません
GPUバックエンドを使用して、優れたパフォーマンスとリアルなレンダリングを実現します。
最後に、基本的な例を実行し、創世記の可能性を調べます。
Google Colab環境をセットアップしてGenesisをインストールしたら、ドキュメントから最も簡単な例を実行しようとしました。
import genesis as gs gs.init(backend=gs.cpu) scene = gs.Scene(show_viewer=True)
オンラインで見た後、他の人が同じ問題に直面していることを発見しました。多くの提案されたソリューションには、リモートOpenGL環境の構成またはXVFBを使用して仮想ディスプレイを作成することが含まれていました。残念ながら、おそらく環境の依存の競合と制限のために、これらの方法をColabで確実に動作させることができませんでした。 この時点で、より実用的な回避策が必要でした!
リアルタイムのレンダリングはColabでは選択肢ではなかったため、フレームごとにフレームごとに画像として保存することにしました。これらのアイデアを使用して、後でアニメーションに組み合わせることができる一連の画像を生成することができました。
実装と出力このセクションでは、コードと私が得た出力の実装について説明します。
GPU環境のセットアップまず、Genesis:
それから、GPU加速のためのCUDAバックエンドで創世記を初期化しました。
これは私が得た出力です:
GenesisException: No display detected. Use show_viewer=False for headless mode.
シーンの作成と構築
scene = gs.Scene(show_viewer=False)
最初に必要なのは、ジェネシスがレンダリングした画像を保存できるフォルダーでした。
pip install genesis-world
gs.scene()新しいシミュレーション空間を初期化し、show_viewer = falseをリアルタイムの視覚化を無効にします。この時点で、私は空のシーンを構築し始める準備ができていました。
import genesis as gs gs.init(backend=gs.cuda)
シーンの準備ができたら、オブジェクトを追加し始めました。最初に地面として機能する飛行機を追加しました。
[Genesis] [INFO] Running on [NVIDIA A100-SXM4-40GB] with backend gs.cuda. Device memory: 39.56 GB. [Genesis] [INFO] ? Genesis initialized. Version: 0.2.1, Seed: None, Precision: 32.
今、私は簡単なセットアップを持っていました:地面としての飛行機とその上に置かれた箱。
カメラを追加import genesis as gs gs.init(backend=gs.cpu) scene = gs.Scene(show_viewer=True)
画像解像度を320x240ピクセルに設定し、テストに実用的な選択肢を設定し、カメラを(3.5、2.0、2.5)に配置しました。ボックスが焦点を合わせたままであることを確認するために、ボックスの中央のすぐ上のカメラを(0、0、0.5)狙いました。 30度の視野(FOV)を備えたカメラは、シーンの狭く焦点を絞った視点を捉えました。
次のステップは、シミュレーションとレンダリングのためにシーンを作成するためのシーンを構築することでした。
GenesisはJust-in-Time(JIT)コンピレーションを使用してシミュレーションを最適化するため、このステップは重要です。シーンを構築したとき、創世記:GenesisException: No display detected. Use show_viewer=False for headless mode.
シーン内のオブジェクトにメモリが割り当てられたメモリ。
レンダリングおよび物理的計算のためにGPUカーネルを準備しました。レンダリングプロセス中に、最初の数フレームが迅速にレンダリングされたこと(最大2,297 fps)になったが、シミュレーションが進むにつれてパフォーマンスが低下することを観察しました。 FPSは最終的にフレーム25によって約0.33 fpsに低下しました。これは、シミュレーションの計算の複雑さの増加、またはより大きなシーンのGPUリソースの制約の増加による可能性があります。
これは私が得た出力です:これらは私が得た画像です:
scene = gs.Scene(show_viewer=False)
pip install genesis-world
各画像は、カメラを通して見られるように、時間の経過とともに飛行機に関連してボックスがどのように動くかを示しています。シミュレーションはステップで実行され、各ステップでは、ボックスの位置が変更され、ボックスが動いているように見えます。
Genesisを使用すると、さまざまなオブジェクトやモーフを追加することで、複雑なシーンを作成できます。オブジェクトは、飛行機、箱、球体などの単純なプリミティブから、ロボットや地形などのより複雑なエンティティまでさまざまです。
形状プリミティブ:
Genesisの重要な強みの1つは、高度なカメラ機能を使用して詳細な視覚出力を作成できることです。カメラは「ヘッドレスモード」で動作します。つまり、ディスプレイ画面を必要とせずに画像を生成できることを意味します。通常のカラー画像(RGB)、オブジェクトがどれだけ遠いかを示す深度マップ、シーンのさまざまな部分にラベルを付けるセグメンテーションマスク、表面の詳細を表す通常のマップなど、さまざまなタイプのビジュアルを作成できます。
カメラにシミュレーションの各フレームを自動的に記録できるようにすることで、ビデオを作成できます。録音中にカメラを移動して、ビデオをよりダイナミックで没入させることもできます。 たとえば、
カメラを構成して、フレームをキャプチャしながら、シーンの周りの円形のパスに移動するように構成できます。 cam.start_recording()関数は録音を開始し、シミュレーションの各ステップでカメラの位置が更新されます。すべてのフレームがキャプチャされたら、cam.stop_recording()はビデオを「video.mp4」として保存します。ロボット工学とAIトレーニング用のさまざまな種類の地形を作成することもできます。 gs.morphs.terrainを使用してカスタム高さマップを提供することにより、組み込みの地形オプションを使用したり、独自のデザインを使用したりできます。これらの地形は、ロボットがどのように動くかをテストしてトレーニングするのに最適であり、ジェネシスはロボット研究のための優れたツールになります。
拡張性
シミュレーションをいくつかの方法でカスタマイズすることもできます。オブジェクトに現実的なテクスチャを追加して、よりリアルに見えるようにすることができます。また、モデルをインポートするための多くのファイル形式をサポートしており、フォーマットがサポートされていない場合は、追加することを要求できます。さらに、パーソナライズされたファイルと設定を使用して、独自のカスタムオブジェクトシェイプ(モーフと呼ばれる)を作成できます。
このチュートリアルは、創世記を始めるのに役立つ簡単な例を提供しました。この強力な物理エンジンの仕組みを示すために、シーンの作成、オブジェクトの追加、出力のレンダリングなど、基本をカバーしました。
しかし、これは創世記ができることの始まりに過ぎません。強力なGPUや十分なメモリのような適切なハードウェアを使用すると、非常に多くの可能性があります。複雑なロボットシミュレーションや、AIトレーニング用の高品質のデータセットの作成に使用できます。セットアップは難しい場合がありますが、間違いなく大きな可能性を秘めたツールです!以上がGenesis Physics Engine:Genesisを設定するための段階的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。