Hello, Genesis: 历时2年,华人团队力作,震撼开源生成式物理引擎Genesis,可模拟世界万物
历时2年,华人团队力作,震撼开源生成式物理引擎Genesis,可模拟世界万物。本文我们来将这个引擎跑起来!
大家好,我是 同学小张,+v: jasper_8017 一起交流,持续学习AI大模型应用实战案例,持续分享,欢迎大家点赞+关注,订阅我的大模型专栏,共同学习和进步。
历时2年,华人团队力作,震撼开源生成式物理引擎Genesis,可模拟世界万物。本文我们来将这个引擎跑起来!
0. 什么是Genesis
官方文档:https://genesis-world.readthedocs.io/zh-cn/latest/user_guide/overview/what_is_genesis.html
Genesis 是一个用于机器人、嵌入式 AI 和物理 AI 应用的综合物理平台。它包含以下核心功能:
- 通用物理引擎:从零开始构建,可模拟多种材料和物理现象
- 机器人仿真平台:轻量、高速、Python友好、易于使用
- 照片级渲染系统:高性能、真实感强
- 数据生成引擎:把自然语言描述转换成各类数据
Genesis 的核心是全新设计的物理引擎,整合了多个物理求解器到统一框架中。在此基础上,我们添加了生成代理系统,用于自动化数据生成,特别适合机器人等领域的应用。 目前开源的是基础物理引擎和仿真平台,生成框架即将发布。
Genesis 的发展目标:
- 让物理仿真更简单:让所有人都能进行机器人研究
- 统一各类物理求解器:用最新技术实现高度真实的物理世界模拟
- 自动化数据生成:减少人工数据收集工作,实现数据自动化
0. 环境
0.1 依赖
- Python: 3.9+
- 操作系统: Linux (推荐) / MacOS / Windows
0.2 安装
(1)安装pytorch
https://pytorch.org/get-started/locally/
进入官网,按需选择要安装的版本和系统,安装即可。
(2)安装genesis
pip install genesis-world
参考:https://genesis-world.readthedocs.io/zh-cn/latest/user_guide/overview/installation.html
1. Hello Genesis
1.1 示例代码
1.1.1 官方示例代码
import genesis as gs
gs.init(backend=gs.cpu)
scene = gs.Scene(show_viewer=True)
plane = scene.add_entity(gs.morphs.Plane())
franka = scene.add_entity(
gs.morphs.MJCF(file='xml/franka_emika_panda/panda.xml'),
)
scene.build()
for i in range(1000):
scene.step()
1.1.2 Mac下的示例代码
import argparse
import torch
import genesis as gs
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--vis", action="store_true", default=False)
args = parser.parse_args()
########################## init ##########################
gs.init(backend=gs.cpu)
########################## create a scene ##########################
scene = gs.Scene(
sim_options=gs.options.SimOptions(),
viewer_options=gs.options.ViewerOptions(
camera_pos=(3.5, 0.0, 2.5),
camera_lookat=(0.0, 0.0, 0.5),
camera_fov=40,
),
show_viewer=args.vis,
rigid_options=gs.options.RigidOptions(
dt=0.01,
gravity=(0.0, 0.0, -10.0),
),
)
########################## entities ##########################
plane = scene.add_entity(gs.morphs.Plane())
r0 = scene.add_entity(
gs.morphs.MJCF(file="xml/franka_emika_panda/panda.xml"),
)
########################## build ##########################
scene.build()
gs.tools.run_in_another_thread(fn=run_sim, args=(scene, args.vis))
if args.vis:
scene.viewer.start()
def run_sim(scene, enable_vis):
from time import time
t_prev = time()
i = 0
while True:
i += 1
scene.step()
t_now = time()
print(1 / (t_now - t_prev), "FPS")
t_prev = t_now
if i > 200:
break
if enable_vis:
scene.viewer.stop()
if __name__ == "__main__":
main()
1.2 运行
在mac系统下,应该在后面加一个 -v 参数,才能看到实际画面
python hello_genesis.py -v
运行结果如下:
1.3 踩坑
(1)NameError: name ‘trimesh’ is not defined 或者 [Error]: No ffmpeg exe could be found. Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.
pip3 install trimesh
pip3 install pyrender
brew install ffmpeg
(2)加了 -v 参数也无法显示,报错
brew install ffmpeg
pip install -U PyOpenGL
pip uninstall pygel3d
https://github.com/Genesis-Embodied-AI/Genesis/issues/11
如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~
- 大家好,我是 同学小张,持续学习C++进阶、OpenGL、WebGL知识和AI大模型应用实战案例
- 欢迎 点赞 + 关注 👏,持续学习,持续干货输出。
- +v: jasper_8017 一起交流💬,一起进步💪。
- 微信公众号搜【同学小张】 🙏

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)