Genesis:一個革命性的物理學和具身人工智能平臺

最近一個新的AI框架橫空出世,可以結合物理現象與人工智能生成更真實的視覺效果。在這篇文章中,將對 Genesis 進行概述。
Genesis 是一個前沿的物理平臺,旨在推動通用機器人、具身人工智能和物理人工智能應用的進步。作為一個多功能工具集,包含:
- 通用物理引擎:一款從頭開始精心重新設計的最先進物理引擎,用于模擬多種材料和復雜的物理現象。
- 機器人仿真平臺:一個輕量級、超快速、Pythonic 和用戶友好的界面,旨在實現無縫的機器人仿真。
- 照片真實感渲染系統:一個強大且快速的渲染系統,能夠提供高質量的視覺效果。
- 生成數據引擎:一個變革性工具,將自然語言提示轉換為各種數據模式。
在其核心,Genesis 將多個先進的物理求解器集成到一個統一的框架中,提供無與倫比的仿真能力。這一強大的基礎得到了一個生成代理框架的補充,旨在自動化數據生成,推動機器人研究及其他領域的邊界。
主要特點
- 統一物理模擬:基于通用物理引擎,Genesis 匯集了最先進的求解器,以卓越的準確性和保真度模擬各種物理場景。
- 生成框架:生成代理框架作為一個模塊化系統運作,結合了各種生成模塊以處理多樣的數據模式。這些模塊由一個高級代理進行路由, seamlessly 整合現有研究和正在進行的開發。
- 開源無障礙:物理引擎和模擬平臺是開源的,允許研究人員和開發者自由探索、實驗和創新。生成特性將逐步推出以便更廣泛的訪問。
- 照片級真實感渲染:Genesis 結合了超快速的渲染能力和視覺上令人驚嘆的結果,使模擬更加身臨其境和真實。
使命
Genesis 受到一套遠見卓識的目標的指導:
- 可及性:降低物理模擬的障礙,民主化機器人研究,促進創新的包容性環境。
- 統一:在一個統一的框架內整合多種物理求解器,以虛擬方式復制物理世界,具有無與倫比的物理、視覺和感官真實感。
- 自動化:最小化人類在數據生成中的努力,促進機器人和其他領域的自主和自我維持的數據生態系統。
安裝
先決條件
- Python:
3.9+ - Pytorch
各個系統支持的功能如下:

pip install genesis-world
代碼示例
import genesis as gs
gs.init(backend=gs.cpu)
后端設備
Genesis 本質上是跨平臺的,支持各種后端設備。默認情況下,它使用 gs.cpu,如果需要 GPU 加速的并行仿真,可以切換到其他后端,例如:
gs.cuda:支持 CUDA 的 NVIDIA GPU。gs.vulkan:基于 Vulkan 的后端gs.metal:針對蘋果硅設備進行了優化。gs.gpu:一個方便的快捷方式,Genesis 為系統選擇最佳后端(例如,如果可用則為gs.cuda,或對于 Apple Silicon 則為gs.metal)。
精度等級
Genesis 默認為 f32 精度。對于需要更高精度的應用,可以通過在設置中指定 precision='64' 來選擇 f64。
日志級別
一旦初始化,Genesis 將在終端中提供日志輸出,分享詳細的系統信息和與 Genesis 相關的更新,例如其當前版本。可以控制此輸出的詳細程度:
Default:詳細日志Reduced output:將logging_level='warning'設置為抑制詳細日志,僅顯示警告和錯誤。
配色方案
Genesis 的日志記錄器支持可自定義的顏色主題,以適應不同的終端環境:
dark:默認主題,針對深色背景終端進行了優化。light:適用于明亮背景的終端的較淺色調。dumb:適合喜歡簡約風格用戶的黑白輸出。
通過這些靈活的選項,Genesis 確保在多樣化的環境和工作流程中提供無縫且個性化的用戶體驗。
scene = gs.Scene()
場景是一個封裝兩個關鍵組件的包裝器:
模擬器對象 Simulator Object:處理所有底層物理求解器以管理物理模擬。可視化對象 Visualizer Object:管理與可視化相關的概念和渲染。
在設置場景時,可以配置各種物理求解器參數以自定義模擬。以下是一個演示更復雜配置的示例:
scene = gs.Scene(
sim_options=gs.options.SimOptions(
dt=0.01,
gravity=(0, 0, -10.0),
),
show_viewer=True,
viewer_options=gs.options.ViewerOptions(
camera_pos=(3.5, 0.0, 2.5),
camera_lookat=(0.0, 0.0, 0.5),
camera_fov=40,
),
)
plane = scene.add_entity(gs.morphs.Plane())
franka = scene.add_entity(
gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
)
在 Genesis 中,所有對象和機器人都被表示為實體。Genesis 是完全面向對象的,允許通過這些實體對象的方法直接與它們交互,而無需依賴句柄或全局分配的 ID。
add_entity 的第一個參數是 morph。在 Genesis 中,morph 是一個混合概念,封裝了實體的幾何形狀和姿態信息。通過使用不同的 morph,可以從形狀原語、網格、URDF、MJCF、地形或軟機器人描述文件創建 Genesis 實體。
franka = scene.add_entity(
gs.morphs.MJCF(
file = 'xml/franka_emika_panda/panda.xml'
pos = (0, 0, 0),
euler = (0, 0, 90), # we follow scipy's extrinsic x-y-z rotation convention, in degrees,
# quat = (1.0, 0.0, 0.0, 0.0), # we use w-x-y-z convention for quaternions,
scale = 1.0,
),
)
scene.build()
for i in range(1000):
scene.step()
一旦所有內容都添加完畢,就可以開始模擬。在運行之前,需要通過調用 scene.build() 來構建場景。此步驟至關重要,因為 Genesis 使用即時編譯 (JIT) 技術動態編譯每次模擬運行的 GPU 內核。 scene.build() 過程通過以下方式初始化這一點:
- 將所有組件放到位。
- 分配設備內存。
- 創建模擬所需的數據字段。
構建場景后,將啟動一個交互式查看器以可視化模擬。查看器提供各種鍵盤快捷鍵以增強可用性,包括以下選項:
- Video recording 視頻錄制。
- Taking screenshots 截屏。
- 在不同的可視化模式之間切換。
在不同的可視化模式之間切換。
Genesis 代表著一個不斷發展的生態系統。雖然基礎物理引擎和仿真平臺已經作為開源工具可用。請繼續關注創世紀的發展,以塑造物理仿真和機器人技術的未來。