Skip to content

Commit bae7981

Browse files
committed
Merge branch 'main' into yunlong/batchrender_example_mani
2 parents 2f43dcc + 8b65676 commit bae7981

File tree

253 files changed

+2464
-4778
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

253 files changed

+2464
-4778
lines changed

.github/workflows/generic.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ on:
44
pull_request:
55
branches:
66
- main
7+
release:
8+
branches:
9+
- main
10+
types: [published]
711

812
concurrency:
913
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
@@ -30,6 +34,7 @@ jobs:
3034
TI_ENABLE_VULKAN: "0"
3135

3236
runs-on: ${{ matrix.OS }}
37+
if: github.event_name != 'release'
3338

3439
steps:
3540
- name: Print system information (Windows)
@@ -117,3 +122,32 @@ jobs:
117122
# Note that it is necessary to create a new archive systematically for now:
118123
# See: https://github.com/actions/cache/issues/1594
119124
key: ${{ matrix.OS }}-${{ matrix.PYTHON_VERSION }}-${{ github.run_id }}-${{ github.run_attempt }}
125+
126+
publish-pypi:
127+
name: Publish on PyPI
128+
runs-on: ubuntu-24.04
129+
permissions:
130+
id-token: write
131+
environment:
132+
name: advance
133+
134+
if: github.event_name == 'release'
135+
136+
steps:
137+
- name: Checkout code
138+
uses: actions/checkout@v4
139+
with:
140+
fetch-depth: 1
141+
142+
- name: Build wheels
143+
run: |
144+
pip wheel --no-deps . -w wheelhouse
145+
146+
- name: Publish the wheels on PyPI
147+
uses: pypa/gh-action-pypi-publish@v1.12.4
148+
with:
149+
packages-dir: wheelhouse
150+
verify-metadata: true
151+
attestations: true
152+
print-hash: true
153+
skip-existing: true

.github/workflows/production.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ jobs:
2525
GENESIS_IMAGE_VER: "1_1"
2626
TIMEOUT_MINUTES: 180
2727
MADRONA_DISABLE_CUDA_HEAP_SIZE: "1"
28+
OMNI_KIT_ACCEPT_EULA: "yes"
29+
OMNI_KIT_ALLOW_ROOT: "1"
2830

2931
steps:
3032
- name: Checkout code
@@ -48,6 +50,9 @@ jobs:
4850
NODELIST="--nodelist=$IDLE_NODES"
4951
fi
5052
53+
# TODO: USD baking does not currently support Python 3.11 since
54+
# NVIDIA does not currently release `omniverse-kit==107.3` on PyPI.
55+
# See: https://github.com/Genesis-Embodied-AI/Genesis/pull/1300
5156
srun \
5257
--container-image="/mnt/data/images/genesis-v${GENESIS_IMAGE_VER}.sqsh" \
5358
--container-mounts=\
@@ -60,7 +65,8 @@ jobs:
6065
--partition=hpc-mid ${NODELIST} --nodes=1 --time="${TIMEOUT_MINUTES}" \
6166
--job-name=${SLURM_JOB_NAME} \
6267
bash -c "
63-
pip install -e '.[dev,render]' && \
68+
pip install --extra-index-url https://pypi.nvidia.com/ omniverse-kit && \
69+
pip install -e '.[dev,render,usd]' && \
6470
pytest -v --forked ./tests
6571
"
6672

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ coverage.xml
6969
*.py,cover
7070
.hypothesis/
7171
.pytest_cache/
72+
__snapshots__
7273

7374
# Translations
7475
*.mo

MANIFEST.in

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,4 @@ include LICENSE
33
recursive-include genesis/assets *
44
recursive-include genesis/ext/pyrender/fonts *
55
recursive-include genesis/ext/pyrender/shaders *
6-
include genesis/ext/VolumeSampling
7-
include genesis/ext/fast_simplification/*.h
6+
include genesis/ext/VolumeSampling

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
# Genesis
1919

2020
## 🔥 News
21+
- [2025-08-05] Released v0.3.0 🎊 🎉
2122
- [2025-07-02] The development of Genesis is now officially supported by [Genesis AI](https://genesis-ai.company/).
2223
- [2025-01-09] We released a [detailed performance benchmarking and comparison report](https://github.com/zhouxian/genesis-speed-benchmark) on Genesis, together with all the test scripts.
2324
- [2025-01-08] Released v0.2.1 🎊 🎉
@@ -68,7 +69,6 @@ Project Page: <https://genesis-embodied-ai.github.io/>
6869
- **Compatibility with various robots**: Robotic arms, legged robots, drones, *soft robots*, and support for loading `MJCF (.xml)`, `URDF`, `.obj`, `.glb`, `.ply`, `.stl`, and more.
6970
- **Photo-realistic rendering**: Native ray-tracing-based rendering.
7071
- **Differentiability**: Genesis is designed to be fully differentiable. Currently, our MPM solver and Tool Solver support differentiability, with other solvers planned for future versions (starting with rigid & articulated body solver).
71-
- **Physics-based tactile simulation**: Differentiable [tactile sensor simulation](https://github.com/Genesis-Embodied-AI/DiffTactile) coming soon (expected in version 0.3.0).
7272
- **User-friendliness**: Designed for simplicity, with intuitive installation and APIs.
7373

7474
## Quick Installation

README_CN.md

Lines changed: 62 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@
1717

1818
# Genesis 通用物理引擎
1919

20+
## 🔥 最新消息
21+
22+
- [2025-08-05] 发布 v0.3.0 🎊 🎉
23+
- [2025-07-02] Genesis 的开发工作现已获得 [Genesis AI](https://genesis-ai.company/) 的官方支持。
24+
- [2025-01-09] 我们发布了一份关于 Genesis 的[详细性能基准测试和比较报告](https://github.com/zhouxian/genesis-speed-benchmark),并附上所有测试脚本。
25+
- [2025-01-08] 发布 v0.2.1 🎊 🎉
26+
- [2025-01-08] 创建了 [Discord](https://discord.gg/nukCuhB47p)[微信](https://drive.google.com/uc?export=view&id=1ZS9nnbQ-t1IwkzJlENBYqYIIOOZhXuBZ) 社区群。
27+
- [2024-12-25] 添加了支持光线追踪渲染器的 [docker](https://www.google.com/search?q=%23docker)
28+
- [2024-12-24] 添加了[为 Genesis 做贡献](https://github.com/Genesis-Embodied-AI/Genesis/blob/main/.github/CONTRIBUTING.md)的指南。
29+
2030
## 目录
2131

2232
1. [概述](#概述)
@@ -54,31 +64,47 @@ Genesis 是专为 *机器人/嵌入式 AI/物理 AI* 应用设计的通用物理
5464
- **支持广泛的机器人**:机器人手臂、腿式机器人、无人机、*软体机器人*等,并广泛支持加载不同文件类型:`MJCF (.xml)``URDF``.obj``.glb``.ply``.stl` 等。
5565
- **照片级真实感和高性能光线追踪器**:Genesis 支持基于光线追踪的原生渲染。
5666
- **可微分性**:Genesis 设计为完全兼容可微分模拟。目前,我们的 MPM 求解器和工具求解器是可微分的,其他求解器的可微分性将很快添加(从刚体模拟开始)。
57-
- **基于物理的触觉传感器**:Genesis 包含一个基于物理的可微分 [触觉传感器模拟模块](https://github.com/Genesis-Embodied-AI/DiffTactile)。这将很快集成到公共版本中(预计在 0.3.0 版本中)。
5867
- **用户友好性**:Genesis 设计为尽可能简化模拟的使用。从安装到 API 设计,如果有任何您觉得不直观或难以使用的地方,请 [告诉我们](https://github.com/Genesis-Embodied-AI/Genesis/issues)
5968

60-
## 快速入门
6169

62-
### 安装
63-
首先按照[官方指南](https://pytorch.org/get-started/locally/)安装 PyTorch。
70+
## 快速安装
71+
72+
首先,请根据[官方指南](https://pytorch.org/get-started/locally/)安装 **PyTorch**
73+
74+
然后,通过 PyPI 安装 Genesis:
6475

65-
然后可通过 PyPI 安装Genesis:
6676
```bash
67-
pip install genesis-world # 需要 Python >=3.9
77+
pip install genesis-world # 要求 Python>=3.10,<3.14;
6878
```
6979

70-
### Docker 支持
80+
要安装最新的版本,请先通过 `pip install --upgrade pip` 命令确保 `pip` 是最新版本,然后运行以下命令:
7181

72-
如果您想通过 Docker 使用 Genesis,您可以首先构建 Docker 镜像,命令如下:
82+
```bash
83+
pip install git+https://github.com/Genesis-Embodied-AI/Genesis.git
84+
```
85+
86+
请注意,您仍需手动更新此软件包以与主分支保持同步。
87+
88+
如果用户希望编辑 Genesis 的源代码,我们鼓励以可编辑模式安装。首先,请确保已卸载 `genesis-world`,然后克隆代码仓库并在本地安装:
89+
90+
```bash
91+
git clone https://github.com/Genesis-Embodied-AI/Genesis.git
92+
cd Genesis
93+
pip install -e ".[dev]"
94+
```
95+
96+
## Docker
97+
98+
如果您希望通过 Docker 使用 Genesis,可以先像这样构建 Docker 镜像:
7399

74100
```bash
75101
docker build -t genesis -f docker/Dockerfile docker
76102
```
77103

78-
然后,您可以在 Docker 镜像内运行示例代码(挂载到 `/workspace/examples`):
104+
然后您可以在 Docker 镜像中运行示例(示例文件挂载于 `/workspace/examples`):
79105

80106
```bash
81-
xhost +local:root # 允许容器访问显示器
107+
xhost +local:root # 允许容器访问显示设备
82108

83109
docker run --gpus all --rm -it \
84110
-e DISPLAY=$DISPLAY \
@@ -88,6 +114,32 @@ docker run --gpus all --rm -it \
88114
genesis
89115
```
90116

117+
### AMD 用户
118+
119+
AMD 用户可以使用 `docker/Dockerfile.amdgpu` 文件来使用 Genesis,该文件可通过运行以下命令构建:
120+
121+
```
122+
docker build -t genesis-amd -f docker/Dockerfile.amdgpu docker
123+
```
124+
125+
然后通过运行以下命令来使用:
126+
127+
```xhost +local:docker \
128+
docker run -it --network=host \
129+
--device=/dev/kfd \
130+
--device=/dev/dri \
131+
--group-add=video \
132+
--ipc=host \
133+
--cap-add=SYS_PTRACE \
134+
--security-opt seccomp=unconfined \
135+
--shm-size 8G \
136+
-v $PWD:/workspace \
137+
-e DISPLAY=$DISPLAY \
138+
genesis-amd
139+
```
140+
141+
示例文件将可以在 `/workspace/examples` 目录下找到。注意:AMD 用户应使用 Vulkan 后端。这意味着您需要调用 `gs.init(vulkan)` 来初始化 Genesis。
142+
91143
### 文档
92144

93145
- [英文文档](https://genesis-world.readthedocs.io/en/latest/user_guide/index.html)

README_FR.md

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,13 @@
1919

2020
## 🔥 Nouveautés
2121

22-
- [2024-12-25] Ajout d’un [docker](#docker) incluant la prise en charge du moteur de rendu par ray-tracing.
23-
- [2024-12-24] Ajout de directives pour [contribuer à Genesis](https://github.com/Genesis-Embodied-AI/Genesis/blob/main/.github/CONTRIBUTING.md).
22+
- [2025-08-05] Sortie de la v0.3.0 🎊 🎉
23+
- [2025-07-02] Le développement de Genesis est désormais officiellement soutenu par [Genesis AI](https://genesis-ai.company/).
24+
- [2025-01-09] Nous avons publié un [rapport détaillé d'analyse comparative des performances](https://github.com/zhouxian/genesis-speed-benchmark) de Genesis, accompagné de tous les scripts de test.
25+
- [2025-01-08] Sortie de la v0.2.1 🎊 🎉
26+
- [2025-01-08] Création des groupes [Discord](https://discord.gg/nukCuhB47p) et [Wechat](https://drive.google.com/uc?export=view&id=1ZS9nnbQ-t1IwkzJlENBYqYIIOOZhXuBZ).
27+
- [2024-12-25] Ajout d’un [docker](https://www.google.com/search?q=%23docker) incluant la prise en charge du moteur de rendu par lancer de rayon (ray-tracing).
28+
- [2024-12-24] Ajout de directives pour [contribuer à Genesis](https://github.com/Genesis-Embodied-AI/Genesis/blob/main/.github/CONTRIBUTING.md).
2429

2530
## Table des Matières
2631

@@ -61,26 +66,28 @@ Page du projet : <https://genesis-embodied-ai.github.io/>
6166
- **Compatibilité avec divers robots** : Bras robotiques, robots à pattes, drones, *robots mous*, et support pour charger `MJCF (.xml)`, `URDF`, `.obj`, `.glb`, `.ply`, `.stl`, et plus encore.
6267
- **Rendu photo-réaliste** : Rendu natif basé sur le lancer de rayons.
6368
- **Différentiabilité** : Genesis est conçu pour être entièrement différentiable. Actuellement, notre solveur MPM et Tool Solver prennent en charge la différentiabilité, avec d'autres solveurs prévus dans les prochaines versions (à commencer par le solveur de corps rigides et articulés).
64-
- **Simulation tactile basée sur la physique** : Simulation de capteur tactile différentiable [en cours de développement](https://github.com/Genesis-Embodied-AI/DiffTactile) (prévue pour la version 0.3.0).
6569
- **Facilité d'utilisation** : Conçu pour être simple, avec une installation intuitive et des API conviviales.
6670

6771
## Installation Rapide
6872

69-
Genesis est disponible via PyPI :
73+
Installez d'abord **PyTorch** en suivant les [instructions officielles](https://pytorch.org/get-started/locally/).
74+
75+
Ensuite, installez Genesis via PyPI :
7076

7177
```bash
7278
pip install genesis-world # Nécessite Python>=3.10,<3.14;
7379
```
7480

75-
Vous devez également installer **PyTorch** en suivant [les instructions officielles](https://pytorch.org/get-started/locally/).
81+
Pour obtenir la version la plus récente, assurez-vous que `pip` est à jour via `pip install --upgrade pip`, puis exécutez la commande :
7682

77-
Pour la dernière version disponible à ce jour, assurez-vous que `pip` is à jour via `pip install --upgrade pip`, puis executez la commande:
7883
```bash
7984
pip install git+https://github.com/Genesis-Embodied-AI/Genesis.git
8085
```
81-
A noter que le module doit malgré tout être mis à jour manuellement pour rester synchroniser avec la branche principale.
8286

83-
Les utilisateur souhaitant éditer le code source de Genesis sont encouragés à l'installer en mode developpeur/éditable. Assurez vous que `genesis-world` est bien désinstallée, puis clonez le dépôt et installez localement :
87+
Notez que le paquet doit toujours être mis à jour manuellement pour se synchroniser avec la branche principale (main).
88+
89+
Les utilisateurs souhaitant modifier le code source de Genesis sont encouragés à l'installer en mode éditable. D'abord, assurez-vous que `genesis-world` a été désinstallé, puis clonez le dépôt et installez-le localement :
90+
8491
```bash
8592
git clone https://github.com/Genesis-Embodied-AI/Genesis.git
8693
cd Genesis
@@ -89,13 +96,13 @@ pip install -e ".[dev]"
8996

9097
## Docker
9198

92-
Si vous souhaitez utiliser Genesis avec Docker, vous pouvez d'abord construire l'image Docker comme suit :
99+
Si vous souhaitez utiliser Genesis depuis Docker, vous pouvez d'abord construire l'image Docker comme suit :
93100

94101
```bash
95102
docker build -t genesis -f docker/Dockerfile docker
96103
```
97104

98-
Ensuite, vous pouvez exécuter les exemples à l'intérieur de l'image Docker (montés sur `/workspace/examples`) :
105+
Vous pouvez ensuite exécuter les exemples à l'intérieur de l'image Docker (montés dans `/workspace/examples`) :
99106

100107
```bash
101108
xhost +local:root # Autoriser le conteneur à accéder à l'affichage
@@ -106,9 +113,34 @@ docker run --gpus all --rm -it \
106113
-v /tmp/.X11-unix/:/tmp/.X11-unix \
107114
-v $PWD:/workspace \
108115
genesis
116+
```
117+
118+
### Utilisateurs AMD
109119

120+
Les utilisateurs AMD peuvent utiliser Genesis avec le fichier `docker/Dockerfile.amdgpu`, qui se construit en exécutant :
121+
122+
```
123+
docker build -t genesis-amd -f docker/Dockerfile.amdgpu docker
110124
```
111125

126+
et peut ensuite être utilisé en exécutant :
127+
128+
```xhost +local:docker \
129+
docker run -it --network=host \
130+
--device=/dev/kfd \
131+
--device=/dev/dri \
132+
--group-add=video \
133+
--ipc=host \
134+
--cap-add=SYS_PTRACE \
135+
--security-opt seccomp=unconfined \
136+
--shm-size 8G \
137+
-v $PWD:/workspace \
138+
-e DISPLAY=$DISPLAY \
139+
genesis-amd
140+
```
141+
142+
Les exemples seront accessibles depuis `/workspace/examples`. Note : Les utilisateurs AMD doivent utiliser le backend Vulkan. Cela signifie que vous devrez appeler `gs.init(vulkan)` pour initialiser Genesis.
143+
112144
## Documentation
113145

114146
Une documentation complète est disponible en [Anglais](https://genesis-world.readthedocs.io/en/latest/user_guide/index.html) et en [Chinois](https://genesis-world.readthedocs.io/zh-cn/latest/user_guide/index.html). Cela inclut des étapes d'installation détaillées, des tutoriels et des références API.

0 commit comments

Comments
 (0)