首頁 > 科技週邊 > 人工智慧 > 創世紀物理引擎:設置創世紀的分步指南

創世紀物理引擎:設置創世紀的分步指南

Christopher Nolan
發布: 2025-03-01 09:54:09
原創
333 人瀏覽過

去年,Genesis是一種令人興奮的新工具,用於創建現實的物理模擬,Interactive 4D Worlds等。我渴望嘗試,但是讓它上班並不容易。我必須承認,在設置過程中,我面臨很多挑戰。 

>在本教程中,我將簡要分享我遇到的問題,並展示我最終如何使用Google Colab和幾個技巧來運行它。 >

如果您只想概述Genesis,請查看我以前的文章《 Genesis Physics Engine:一個帶有示例的指南》。

我最初的創世紀的設置經驗

>當我剛開始使用Genesis時,我遵循文檔中的安裝步驟。馬上,我遇到了依賴性問題。 Genesis需要一個名為Taichi(1.7.x)的模塊的特定版本,但我的MacOS不支持它。作為參考,我的Mac已8歲…。

> 經過一番研究,我意識到,即使使用更好的計算機,其他用戶也遇到了相同的問題。經過數小時的努力,發現Genesis僅適用於某些Python版本,我終於安裝了它。

>但新問題彈出了。它不會渲染任何東西,我在OpenGL上遇到了幾個問題。即使我嘗試從他們的github運行示例文件時,我也面臨更多的錯誤和衝突。

> 然後,當我以為我已經整理出來時,我開始遇到諸如“統一找不到”之類的錯誤,這意味著某些渲染設置缺失了。

> 在此過程中,我在網上進行了研究,以查看其他人是否遇到了同樣的問題。事實證明,我不是唯一的人 - 許多人面臨著同樣的困難,許多人似乎找不到解決方案來使他們的腳本正常工作。

我如何使創世紀起作用:Google Colab進行救援

最初的挫敗感後,我決定嘗試使用一個Pro帳戶的Google Colab,事實證明這正是我所需要的。使用COLAB的GPU資源,我能夠:

安裝所有必需的依賴項,沒有任何問題。

>

使用GPU後端實現出色的性能和現實渲染。

最後,運行基本示例並探索創世紀的潛力。

我選擇了NVIDIA A100-SXM4-40GB,事實證明,它足夠強大,可以有效地處理創世紀模擬。 
  • >設置了Google Colab環境並安裝了Genesis,我嘗試從文檔中運行最簡單的示例:
  • 這個示例應使用CPU後端初始化創世紀並顯示基本場景。但是,我立即遇到以下錯誤:
  • >
錯誤消息表明Genesis正在嘗試創建一個圖形窗口來渲染場景,但是Google COLAB不支持實時可視化。 COLAB在無法訪問本地顯示的遠程環境中運行,因此show_viewer = gs.scene()初始化中的true參數不起作用。

>

>正如錯誤消息所建議的那樣,我修改了代碼以禁用查看器:>

import genesis as gs
gs.init(backend=gs.cpu)
scene = gs.Scene(show_viewer=True)
登入後複製
登入後複製
>這使腳本可以執行而不會崩潰。但是,這種方法意味著無法直接可視化結果。

>

在網上查看後,我發現其他人遇到了同樣的問題。許多提出的解決方案涉及配置遠程OpenGL環境或使用XVFB創建虛擬顯示。不幸的是,我無法獲得這些方法可以在COLAB中可靠地工作,這可能是由於依賴性衝突和環境的局限性。 在這一點上,我需要更實用的解決方法!

>

>由於COLAB不是實時渲染,因此我決定按框架作為圖像保存渲染的輸出。有了這些想法,我能夠生成一系列圖像,這些圖像後來可以合併為動畫。

>實現和輸出

在本節中,我將引導您完成代碼的實現和我獲得的輸出。

設置GPU環境

首先,我安裝了創世紀:>

然後,我用CUDA後端初始化了GPU加速度的Genesis。

這是我得到的輸出:

>
GenesisException: No display detected. Use show_viewer=False for headless mode.
登入後複製
登入後複製

創建和構建場景

scene = gs.Scene(show_viewer=False)
登入後複製
登入後複製
創建一個目錄以保存結果

我需要的第一件事是一個文件夾,創世紀可以保存其呈現的圖像。 

pip install genesis-world
登入後複製
登入後複製
os.makedirs()函數在指定路徑中創建一個稱為simulation_frames的文件夾,並且eSTEN_OK = true參數可確保如果文件夾已經存在,則不會引起錯誤。

以這種方式,我有一個專門的位置來保存模擬中的所有幀和輸出。

初始化場景

接下來,我需要創建一個可以添加對象並與它們進行交互的場景。

>
import genesis as gs
gs.init(backend=gs.cuda)
登入後複製

gs.scene()初始化了一個新的仿真空間,而show_viewer = false disable dis time實時可視化。在這一點上,我準備了一個空的場景來開始建造。

添加一個平面和一個盒子

>

>準備好場景後,我開始添加對象。我首先添加了一架飛機,該飛機充當地面。

該平面是模擬的平坦基礎。默認情況下,它是無限的,沿x-y軸平坦。
[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.
登入後複製
>

接下來,我在場景中添加了一個盒子:

>我將盒子設置為(0、0、0),就在場景的中心,然後將其調整為0.5個單位寬,高且深,使其小於默認值。 >>>>>>

現在,我有一個簡單的設置:一架平面作為地面,一個放在其頂部的盒子。

import os
save_dir = "/content/simulation_frames"
os.makedirs(save_dir, exist_ok=True)
登入後複製
添加一個攝像頭

為了捕獲場景中發生的事情,我添加了一個相機。

>

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),攝像機捕捉了場景的狹窄而專注的視角。 

構建場景

下一步是構建場景以準備模擬和渲染。

>
GenesisException: No display detected. Use show_viewer=False for headless mode.
登入後複製
登入後複製

此步驟至關重要,因為創世紀使用了即時(JIT)彙編來優化仿真。當我構建場景時,創世紀:

  • >為場景中的對象分配內存。
  • 準備用於渲染和物理計算的GPU內核。
  • 設置所有必要的數據結構,以使模擬平穩運行。
現在一切都準備就緒 - 我的飛機,盒子和相機已經建立了,場景是建造的。

>渲染和保存輸出

為了可視化模擬,我呈現並逐幀保存了輸出。每個幀都作為圖像存儲在Simulation_Frames目錄中。 

在渲染過程中,我觀察到前幾個幀迅速呈現(最高2297 fps),但是隨著模擬的進行,性能下降。 FPS最終按照幀25降至0.33 fps。這可能是由於模擬的計算複雜性增加或較大場景的GPU資源約束。

這是我得到的輸出:

scene = gs.Scene(show_viewer=False)
登入後複製
登入後複製

這些是我得到的圖像:

pip install genesis-world
登入後複製
登入後複製

創世紀物理引擎:設置創世紀的分步指南

創世紀物理引擎:設置創世紀的分步指南

創世紀物理引擎:設置創世紀的分步指南

創世紀物理引擎:設置創世紀的分步指南>如通過相機所示,盒子如何隨著時間的推移而與平面相關。模擬以步驟運行,每個步驟都會改變框的位置,使其看起來像框在移動。

這個示例強調了創世紀如何模擬和顯示簡單的物理相互作用。儘管此設置是基本的,但它很好地了解了對像在場景中的行為方式。但是,您可以通過創世紀完全創建更複雜和現實的場景!我們將在下一部分中探索其中的一些功能。 創世紀物理引擎:設置創世紀的分步指南>

探索創世紀:功能和功能

對象和場景創建

創世紀使您可以通過添加各種對象和變形來創建複雜的場景。物體的範圍可以從平面,盒子和球等簡單的原始範圍到機器人和地形等更複雜的實體。

形狀原語:

    gs.morphs.plane
  • gs.morphs.box
  • gs.morphs.cylinder
  • gs.morphs.sphere
>外部文件支持:

    mjcf:gs.morphs.mjcf for Mujoco XML機器人配置。
  • urdf:gs.morphs.urdf for Unified機器人說明格式文件。
  • 網格:gs.morphs.messss,用於3D資產,例如.obj,.ply,.stl,.glb和.gltf。
  • Genesis使用了一個稱為“變形”的統一概念,封裝了幾何圖形和姿勢信息。這種面向對象的設計允許使用其方法直接與實體進行交互。
  • 渲染和可視化
Genesis的關鍵優勢之一是它使用高級相機功能創建詳細的視覺輸出的能力。相機以“無頭模式”工作,這意味著它們可以生成圖像而無需顯示屏幕。它們可以產生各種類型的視覺效果,包括常規顏色圖像(RGB),深度圖顯示了對像有多遠,標記場景不同部分的分割掩模以及代表表面細節的正常地圖。

錄製視頻

>您可以通過讓攝像頭自動記錄模擬的每個幀來創建視頻。您甚至可以在錄製過程中移動相機,以使視頻更具動態性和沈浸式。 例如,您可以在捕獲幀時配置相機以在場景周圍的圓形路徑中移動。 CAM.START_RECORDING()函數開始錄製,在模擬的每個步驟中,相機的位置都會更新。捕獲所有幀後,CAM.STOP_RECORDING()將視頻保存為“ video.mp4”。

最終視頻提供了模擬的平滑視圖,顯示了對像如何相互作用和隨時間移動。

運動任務的地形生成

>您還可以為機器人技術和AI培訓創建不同類型的地形。您可以使用其內置的地形選項,或者通過使用gs.morphs.terrain提供自定義高度圖來設計自己的地形。這些地形非常適合測試和訓練機器人如何移動,使創世紀成為機器人研究的絕佳工具。

可擴展性

>您還可以通過多種方式自定義模擬。您可以向對象添加逼真的紋理,從而使它們看起來更加栩栩如生。它還支持許多用於導入模型的文件格式,如果不支持格式,則可以要求將其添加。此外,您可以使用個性化文件和設置來創建自己的自定義對象形狀(稱為morphs)。

結論

本教程提供了一個簡單的示例,可以幫助您開始創世紀。我們介紹了基礎知識,例如創建場景,添加對象和渲染輸出,以說明這種功能強大的物理引擎如何工作。 但是,這只是創世紀可以做的事情的開始。有了正確的硬件,例如強大的GPU和足夠的內存,就有很多可能性。您可以將其用於復雜的機器人模擬或創建用於AI培訓的高質量數據集。儘管設置它可能很棘手,但它絕對是一種具有巨大潛力的工具!

>

以上是創世紀物理引擎:設置創世紀的分步指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板