Skip to main content

Genesis simulation backend for the UniEnv framework: composable scenes, robots, sensors, controllers, and reference policies

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unienv_genesis-0.0.1b1.tar.gz (328.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

unienv_genesis-0.0.1b1-py3-none-any.whl (313.4 kB view details)

Uploaded Python 3

File details

Details for the file unienv_genesis-0.0.1b1.tar.gz.

File metadata

  • Download URL: unienv_genesis-0.0.1b1.tar.gz
  • Upload date:
  • Size: 328.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for unienv_genesis-0.0.1b1.tar.gz
Algorithm Hash digest
SHA256 5a6552e4731357029bdf432e5bd55e3e6ee4da2b795a331b9eb76bb7d5ed1b02
MD5 5f054e43c3cb7d5c25cf48e07713c535
BLAKE2b-256 cd9f1366deb94042fb423abc0681bc7066db46ce318b1bd42a1f7f044fbc7a17

See more details on using hashes here.

Provenance

The following attestation bundles were made for unienv_genesis-0.0.1b1.tar.gz:

Publisher: python-publish.yml on UniEnvOrg/genesis_adaptor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file unienv_genesis-0.0.1b1-py3-none-any.whl.

File metadata

File hashes

Hashes for unienv_genesis-0.0.1b1-py3-none-any.whl
Algorithm Hash digest
SHA256 4c173bfd39dfad8919f9db1bfd9a90bc0f8809139cb07a6b1cb4b0c0c523944a
MD5 c995dd79c3043126b6222233efa5a7ae
BLAKE2b-256 adf99950e61df8f16e1eed0f1c70f1b8ca79cf16187b24f77a6bbee842469e5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for unienv_genesis-0.0.1b1-py3-none-any.whl:

Publisher: python-publish.yml on UniEnvOrg/genesis_adaptor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page