Genesis简要介绍与样例展示

Felix Christian Lv2

Introduction

Genesis 是一个物理平台,专为通用机器人/嵌入式人工智能/物理人工智能应用而设计。它同时是多种事物:

  • 从头开始重建的通用物理引擎,能够模拟各种材料和物理现象。
  • 一个轻量级、超快速、Pythonic 且用户友好的机器人仿真平台。
  • 强大且快速的逼真渲染系统。
  • 一种生成数据引擎,可将用户提示的自然语言描述转换为各种数据形式。

Examples

分别测试现有的examples中的场景,结果如下:

1. Simulation

FileResult
cloth_on_rigid.py2025-01-07-23-51-16
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代替,做了个简单的围墙:

image-20250108014803652

对其进行了10000iteration的训练:

image-20250108014904100

看看训练结果:

动画

Errors & Solutions

1. OpenGL.error.Error: Attempt to retrieve context when no valid context

WindowsWSL虚拟机中安装了Ubuntu系统,在直接运行测试样例时会出现如下的报错:

image-20241219162641596

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直接进行凸分解,但是发现凸分解之后偶尔会导致碰撞失效。 参数设置

不进行凸分解凸分解
image-20250107220338773image-20250107220752936

在genesis的Mesh类中,有两个参数与凸分解有关:

  • convexify: 此参数用于控制是否将Mesh直接进行凸包运算,即等同于mujoco中的默认算法,将Mesh求个凸包。实际碰撞的体积与渲染出来的实际形状会有差异。
  • decompose_nonconvex: 此参数仅在convexifyFalse时有效,表示是否使用CoACDMesh进行凸分解。

结果比对

不进行凸分解凸分解
2025-01-07-23-39-572025-01-07-23-36-50

在实际运行中,当对复杂模型进行凸分解(即decompose_nonconvex设为True),可能会导致穿模的情况。更换模型后,发现又成功了:

2025-01-07-23-29-24

Anyway,目前还不清楚问题出在CoACD还是genesis

2. MJCF Import Failure

genesis中导入mujoco的场景xml时,很容易出现消失的情况。在issue#603#287里有提到。

如果需要将xml成功导入,需要给geom设置conaffinitycontype参数为0。但是这样就避免了物体间的碰撞。

查阅genesis的源码,目前的推测是,genesis里的一个Entity是一个单独的单位,要对他进行materialtexture等的设置,所以默认避免了单个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 进行许可。
评论