大家好,我是 同学小张,+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 一起交流💬,一起进步💪。
  • 微信公众号搜同学小张 🙏
Logo

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

更多推荐