Skip to content

refactor!: unify env/scenes API across robots and restructure assets#283

Merged
juelg merged 99 commits intomasterfrom
feat/unified-env-config-and-assets-refactor
Apr 23, 2026
Merged

refactor!: unify env/scenes API across robots and restructure assets#283
juelg merged 99 commits intomasterfrom
feat/unified-env-config-and-assets-refactor

Conversation

@juelg
Copy link
Copy Markdown
Contributor

@juelg juelg commented Apr 22, 2026

Summary

This PR is a large refactor that brings the environment/scenes stack to a unified config + creator model across robots, updates examples/docs accordingly, and restructures the assets layout for cleaner composition and reuse.

What Changed

Core API and Architecture

  • Refactored env/scenes APIs toward stateless, config-driven creation.
  • Added/expanded new env modules:
    • python/rcs/envs/configs.py
    • python/rcs/envs/scenes.py
    • python/rcs/envs/sim.py
    • task helpers and task modules
  • Removed legacy creator path:
    • python/rcs/envs/creators.py (deleted)
  • Updated Python exports, typing stubs, and bindings to match new interfaces.

Robot Extensions

  • Added/updated per-robot config + creator integration for FR3, Panda, UR5e, XArm7, and SO101.
  • Updated hardware env creation flows to use the new RCSEnvCreator + config approach.
  • Cleaned up old default factories/creator utilities.

Simulation and Composer

  • Extended scene composer capabilities (objects, cameras, frame objects, offsets, gravcomp handling).
  • Added/fixed camera support and related sim-camera behavior (including memory leak fix via ring buffer).
  • Updated robot/gripper integration points and related C++/pybind surfaces.

Assets and Scene Layout

  • Major asset restructuring under robot/gripper/camera/object folders.
  • Added/updated multiple asset XMLs/meshes and scene references.
  • Removed legacy generated/duplicated scene-embedded assets.

Examples, Tests, and Docs

  • Updated FR3/UR5e/XArm7/SO101 and teleop examples to new API.
  • Updated tests for scene/env refactor.
  • Refreshed user docs/getting started/extension docs.
  • Final lint/format/mypy cleanup commits included.

Breaking Changes

  • Legacy env creator flow was removed/replaced (python/rcs/envs/creators.py).
  • Robot/sim configuration expectations changed (object-based robot types and updated scene/composer config model).
  • Task-specific object pathways include removals/replacements (e.g. ParallelPickTask path changes).

Notes for Review

  • This PR is broad (API + assets + examples/docs).
  • Best reviewed by area:
    1. python/rcs/envs/* and python/rcs/sim/composer.py
    2. extensions/rcs_*/*
    3. assets restructuring
    4. examples/docs/tests alignment

juelg added 30 commits April 12, 2026 12:57
- restructure assets: clearer structure and only contain absolute minimum for RCS examples
- updated actuators in so101
- reset ur5e, fr3 and panda to original menagerie xml
- added gravcomp script that can add and remove gravity compensation
- removed gravity compensation of all xmls as this will be done in the composer
- removed meta robot config due to limited extensibility
- moved q_home and joint_limits to robot config
- refactored robot type: now class based for python extensibility
- readded wrapper configs: home_on_reset for robot wrapper and binary from gripper wrapper, they need to be extra configs for composition and not part of the robot/gripper config
- added scenes api
- fixed quaternion bug in composer
- fixed bug in add prefix of sim robot config in attachment site
- kinematic file is no longer default urdf but mjcf
- added panda to robot type
- SimRobotConfig: added missing dof, joint_limits and q_home
- add gravity compensation for joints and bodies
- add gravity compensation in scene api
- fix: integrator implicit fast in scene xml
- added scene paths dict
- moved attachment site to add gripper in model composer
- simscene: moved mjcf composition to load_scene
- simscene: added option to load seperate robot mjcf different from robot config, this allows for example to have two arms which are represented in one model
- fix: action and observation space exposing in multi robot wrapper
- fix: sim camera config was missing copy and was returning base config when deepcopy
- feat: added camera adding to sim scene api
- example: added cameras to the scene.py fr3 empty world example
juelg added 2 commits April 22, 2026 18:19
- also fixed camera config in franka.py teleop script
@juelg juelg force-pushed the feat/unified-env-config-and-assets-refactor branch 6 times, most recently from 39c7d18 to 2b4898b Compare April 22, 2026 20:31
@juelg juelg force-pushed the feat/unified-env-config-and-assets-refactor branch from 2b4898b to 02497d2 Compare April 22, 2026 20:31
@juelg juelg force-pushed the feat/unified-env-config-and-assets-refactor branch from 330e711 to 9536298 Compare April 23, 2026 05:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants