Genesis简要介绍与样例展示
Introduction
Genesis 是一个物理平台,专为通用机器人/嵌入式人工智能/物理人工智能应用而设计。它同时是多种事物:
- 从头开始重建的通用物理引擎,能够模拟各种材料和物理现象。
- 一个轻量级、超快速、Pythonic 且用户友好的机器人仿真平台。
- 强大且快速的逼真渲染系统。
- 一种生成数据引擎,可将用户提示的自然语言描述转换为各种数据形式。
Examples
分别测试现有的examples中的场景,结果如下:
1. Simulation
| File | Result |
|---|---|
| cloth_on_rigid.py | ![]() |
| cut_dragon.py | ![]() |
| flush_cubes.py | ![]() |
| grasp_soft_cube.py | ![]() |
| sand_wheel.py | ![]() |
| sph_mpm.py | ![]() |
| sph_rigid.py | ![]() |
| water_wheel.py | ![]() |
(目前就找到这些)
2. Training
(1). drone (hover)

(2). locomotion (go2)

(3). modified locomotion (go2)
本来尝试对go2_env增加一个mesh的障碍,但是训练中发现go2直接穿模了。于是用最简单的Box代替,做了个简单的围墙:

对其进行了10000个iteration的训练:

看看训练结果:

Errors & Solutions
1. OpenGL.error.Error: Attempt to retrieve context when no valid context
在Windows的WSL虚拟机中安装了Ubuntu系统,在直接运行测试样例时会出现如下的报错:

在Github上面有类似的问题和解决方案。
原因:Ubuntu 的最新版本已默认切换为使用 Wayland 图形协议(来自 Xorg)。目前,pyglet 不支持 Wayland。虽然单独使用 pyglet 仍然有效(感谢 xWayland),但使用 pyimgui-pyglet 会导致 PyOpenGL 选择不正确的图形后端。
解决方案:在运行前强制指定PyOpenGL使用Xorg:
1 | export PYOPENGL_PLATFORM='glx' |
Unsolved Problems
1. Decomposition deactivates collision
在genesis中导入的mesh,在导入时可以设置参数进行凸分解。底层还是调用的CoACD工具。试图在genesis对mesh直接进行凸分解,但是发现凸分解之后偶尔会导致碰撞失效。 参数设置:
| 不进行凸分解 | 凸分解 |
|---|---|
![]() | ![]() |
在genesis的Mesh类中,有两个参数与凸分解有关:
- convexify: 此参数用于控制是否将
Mesh直接进行凸包运算,即等同于mujoco中的默认算法,将Mesh求个凸包。实际碰撞的体积与渲染出来的实际形状会有差异。 - decompose_nonconvex: 此参数仅在
convexify为False时有效,表示是否使用CoACD对Mesh进行凸分解。
结果比对:
| 不进行凸分解 | 凸分解 |
|---|---|
![]() | ![]() |
在实际运行中,当对复杂模型进行凸分解(即decompose_nonconvex设为True),可能会导致穿模的情况。更换模型后,发现又成功了:

Anyway,目前还不清楚问题出在CoACD还是genesis。
2. MJCF Import Failure
genesis中导入mujoco的场景xml时,很容易出现消失的情况。在issue#603和#287里有提到。
如果需要将xml成功导入,需要给geom设置conaffinity和contype参数为0。但是这样就避免了物体间的碰撞。
查阅genesis的源码,目前的推测是,genesis里的一个Entity是一个单独的单位,要对他进行material和texture等的设置,所以默认避免了单个Entity导入多个物件。
- 标题: Genesis简要介绍与样例展示
- 作者: Felix Christian
- 创建于 : 2024-12-19 16:13:05
- 更新于 : 2025-01-20 15:28:22
- 链接: https://felixchristian.top/2024/12/19/12-GenesisIntroduction/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。











