Skip to main content

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


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.1a1.tar.gz (17.0 MB 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.1a1-py3-none-any.whl (17.2 MB view details)

Uploaded Python 3

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

Hashes for unienv_genesis-0.0.1a1.tar.gz
Algorithm Hash digest
SHA256 69f09525f64081214cfdb7256c5b5442f37d69e6621f659da0edee8925fb8c23
MD5 9933d5ae4820cf047f374d7796e0a2fb
BLAKE2b-256 3e0161388dd0f68f3fd3955b80f0942f5eb4f08d754e0045ed91dff00d15c1fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for unienv_genesis-0.0.1a1-py3-none-any.whl
Algorithm Hash digest
SHA256 ca0935fde0d10b21f2acb79f6df9979bd8fd0bcb20157f631aa19dff278bbecd
MD5 c40ad7b785972968c903e05f830245e2
BLAKE2b-256 867806db2ef2da1908c5c6473a00d8a0b7df8f382047e3b64fb840ff4563328d

See more details on using hashes here.

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