No project description provided
Project description
UniEnv Genesis Lab
This repository contains the implementation of the adaptor that connects the Genesis simulation engine to the UniEnv's node system interface. It is designed as a full simulation framework in the spirit of mjlab and IsaacLab, bringing the same modular, composable scene-building philosophy to Genesis.
Node System
mjlab (MuJoCo's Python interface) and IsaacLab (NVIDIA's GPU-accelerated RL framework for Omniverse) both share a common idea: a simulation environment should be assembled from independent, reusable building blocks — robots, sensors, scene elements — each responsible for its own lifecycle. genesis_adaptor mirrors this philosophy for the Genesis engine, providing:
- A node-based scene description system that lets you compose robots, sensors, and scene geometry declaratively.
- A priority-ordered lifecycle that guarantees correct initialisation order without manual dependency management.
- Pluggable controllers that decouple the physics entity from the control law, just as IsaacLab separates actuator models from robot assets.
- Transparent batching so that the same node code runs identically on a single environment or thousands of parallelised GPU environments.
Lifecycle Phases & Priorities
Each lifecycle phase is executed by sorting all registered nodes by their declared priority for that phase and calling them in descending order. A higher priority number runs first.
| Phase | Purpose |
|---|---|
reload |
Destroy the old scene; add geometry / entities to the new one. |
after_reload |
Scene is compiled. Initialise controllers, cache entity handles. |
reset |
Move entities back to their starting poses; clear queued actions. |
after_reset |
Populate the first observation cache after reset. |
pre_environment_step |
Apply the pending action to the physics engine. |
post_environment_step |
Read back state and refresh the observation cache. |
Typical priority assignments:
| Priority Range | Node Catgories |
|---|---|
[80, 100) |
static scene geometry (planes, tables) |
[50, 80) |
robots and articulated entities |
(-20, 0] |
controllers and sensors that depend on entities |
| $\mathbb{Z}$ | Task control logic can declare any priority to ensure it runs after all the necessary state has been updated by the controllers and sensors. |
This means a floor plane is always added to the scene before a robot, and a camera that is attached to a robot link is always attached after the robot entity exists.
Composing a Scene
world = GenesisWorld()
plane = PlaneBuilder(world, name="floor")
table = TableBuilder(world, name="table", pos=(0, 0, 0.6))
franka = FrankaFR3WithHand(world, name="franka", pos=(-0.7, 0, 0.6))
camera = CameraSensorNode(world, name="camera", ...)
env = WorldEnv(world, [plane, table, franka, camera])
context, obs, info = env.reset(seed=0, reload=True)
# obs = {
# "franka": {"joint_position": ..., "eef_position": ..., ...},
# "camera": {"rgb": ..., "depth": ...},
# }
WorldEnv calls each node's lifecycle methods in the correct priority order automatically. You do not manage dependencies by hand.
Installation
You can install the adaptor locally (not published on PyPI yet):
git clone https://github.com/UniEnvOrg/genesis_adaptor/
cd genesis_adaptor
pip install -e .
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file unienv_genesis-0.0.1a1.tar.gz.
File metadata
- Download URL: unienv_genesis-0.0.1a1.tar.gz
- Upload date:
- Size: 17.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69f09525f64081214cfdb7256c5b5442f37d69e6621f659da0edee8925fb8c23
|
|
| MD5 |
9933d5ae4820cf047f374d7796e0a2fb
|
|
| BLAKE2b-256 |
3e0161388dd0f68f3fd3955b80f0942f5eb4f08d754e0045ed91dff00d15c1fc
|
File details
Details for the file unienv_genesis-0.0.1a1-py3-none-any.whl.
File metadata
- Download URL: unienv_genesis-0.0.1a1-py3-none-any.whl
- Upload date:
- Size: 17.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca0935fde0d10b21f2acb79f6df9979bd8fd0bcb20157f631aa19dff278bbecd
|
|
| MD5 |
c40ad7b785972968c903e05f830245e2
|
|
| BLAKE2b-256 |
867806db2ef2da1908c5c6473a00d8a0b7df8f382047e3b64fb840ff4563328d
|