Repository navigation
V0.3.1
EmbodiChain v0.3.1 Release Notes
EmbodiChain v0.3.1 expands rendering control, motion generation, and reproducible data collection on top of v0.3.0. It adds scoped DLSS/OptiX/NRD configuration, NoRender locomotion training, portable whole-scene USD export, stronger Atomic Skills, and independent physical-objective evaluation. It also adds offline dataset validation, recovery and isolated LeRobot export, preserves overall task and semantic subtask language throughout expert recording, and automatically avoids native rendering for eligible headless tasks. Dataset action semantics, replay, configuration loading, Task Program execution, and simulation state publication receive focused correctness improvements. This release also updates DexSim to 0.5.1rc1 and includes the compatibility changes listed below.
Breaking Changes
- Removed
embodichain.lab.gym.envs.action_bank, its legacyEmbodiedEnventry points, and Action Bank-only helpers; migrate integrations to supported ActionManager or Atomic Action APIs by @yuecideng in #694 - Replaced
DLSSCfg.dlss_enabledandupscale_enabledwithDenoisingCfg.windowandoffscreenmodes (off,optix,dlss,nrd); updated native configuration to requiredexsim_engine==0.5.1rc1by @yuecideng in #666 - Changed state publication and editing helpers to avoid advancing physics;
register_info_to_envnow defaults tosim_update=False, and legacy 100-step settling requires explicitsim_update=Truewith all environment rows by @yuecideng in #735 - Renamed official end-effector control groups from
handtoeefand fromleft_hand/right_handtoleft_eef/right_eef; update affected Panda, Aloha Mini, Tianji Marvin, and UR5 embodiment bindings and overrides. Custom names remain valid without automatic aliases; URDF identifiers are unchanged by @yuecideng in #758 - Changed newly recorded action-contract datasets and fragments to expose segment language through
sample["subtask"]whilesample["task"]retains the overall goal; update segment-conditioning consumers and hard-coded segment boundaries. Existing datasets are not migrated by @yuecideng in #743
New Features
- Added Tianji Marvin robot configuration and assets by @matafela in #686
- Added validated planner selection and typed options to Task Program execution policies, retaining TOPPRA as the default by @yuecideng in #728
- Added held-object pose waypoints, transfer-only handover, coordinated release/retreat, scene-relative pose goals, and absolute prismatic slide targets by @yuecideng in #733
- Added
PickUpOptions.grasp_variantto require the original or mirrored feasible grasp while retainingclosestas the default by @yuecideng in #738 - Added
enable_sensor: falseand--disable-sensorto skip sensor acquisition and dependent allocations or functors by @yuecideng in #697 - Added official packaged environment, embodiment, scene, and Task Program component resolution for deployments outside the SDK checkout by @yuecideng in #742
- Added
RenderCfg.min_bouncesandmax_bouncesfor ray-tracing path budgets, retaining defaults of 4 and 8 by @yuecideng in #736 - Added asset download-source overrides through EMBODICHAIN_DOWNLOAD_PREFIX by @liyifreddy in #704
- Added
embodichain dataset validate|split|recover, file-based diagnostics, lineage-aware split manifests, fsynced commit journals, and conservative sidecar repair by @yuecideng in #744 - Added independently packaged
embodichain-lerobot-exportfor Python >=3.12 and LeRobot 0.6.1, preserving source recordings while exporting persistent language and metre-based depth by @yuecideng in #744 - Added task/program-owned instructions, frozen per-episode semantic snapshots, and online task/subtask IDs with text lookup through
resolve_language(batch)by @yuecideng in #743 - Added demand-aware automatic NoRender selection for headless tasks, respecting enabled cameras, recording, Viser, Trainer events, and explicit renderer settings by @yuecideng in #746
Improvements
- Defined explicit joint/EEF dataset action contracts with requested commands, measured FK observations, and executed controller positions by @yuecideng in #680
- Introduced stable versioned locomotion action contracts while keeping legacy pretrained policy bundles loadable by @yuecideng in #698
- Unified ordinary and Expansion collection around
collection.target_episodes, with partial final batches, deterministic recipe selection, and committed/rejected/attempt accounting by @yuecideng in #727 - Added optional bounded
AsyncLeRobotRecorderqueues, producer backpressure metrics, and lossless PNG compression levels by @yuecideng in #730 - Recorded effective environment seeds in demonstration metadata by @yuecideng in #740
- Pinned
torchcodec>=0.5,<0.6for compatibility with the supported Torch 2.7 ABI by @yuecideng in #681 - Added configurable rendering benchmark sweeps with quality, timing, and memory reports by @yuecideng in #731
- Added UR5 motion-generation benchmark evaluation by @yangchen73 in #734
- Routed Press approach, press, and retract goals through one MotionGenerator request and aligned planning/evaluation start states by @yangchen73 in #696
- Batched articulation reads and reset writes, captured contact updates in CUDA Graphs, and reduced locomotion observation and rollout overhead by @acrlw in #721
- Added geometry presets with 80 mm Panda, 100 mm CobotMagic, and 95 mm Tianji Marvin openings; changed Franka grasp defaults to 20,000 samples, a 10 mm opening margin, and support-plane filtering while preserving explicit task overrides by @yuecideng in #752
- Calibrated CobotMagic per-axis drives and PourWater motion at 100 Hz, with retained joint holds and checksum-verified public assets by @yuecideng in #747
- Added configurable Default/Newton G1 PPO benchmarks with timing, throughput, memory, checkpoint, and CUDA partial-reset/resume verification by @acrlw in #710
- Aligned locomotion renderer overrides and backend capacity reservations; set G1/MicroDuck Default PPO to 2,048 environments while retaining 4,096 for Newton by @yuecideng in #746
Bug Fixes
- Fixed robot link-physics default merging and centralized Franka fingertip defaults by @yuecideng in #693
- Separated policy requests from processed and executed controller actions, preserving complete
[qpos, qvel]expert recordings by @yuecideng in #695 - Fixed dynamic replay of position-velocity expert actions by @yuecideng in #699
- Corrected PyTorch IK TCP pose inversion and unified TCP transforms across solvers by @matafela in #686
- Fixed arena-frame camera pose randomization and mode validation by @yuecideng in #711
- Added warnings for camera randomization ranges ignored by the selected mode by @liyifreddy in #706
- Fixed batched joint indexing and pose broadcasting in register_info_to_env by @liyifreddy in #718
- Preferred DexSim joint descriptors with a legacy compatibility fallback by @yuecideng in #707
- Repacked projective UV buffers to preserve mesh coordinates through the pinned DexSim 0.5.1rc1 binding by @yuecideng in #739
- Preserved explicit boolean
env.ignore_terminationssettings when loading YAML, JSON, or configuration dictionaries by @yuecideng in #741 - Fixed resumed-training throughput accounting, partial camera resets, camera device handling, and recorded-frame memory ownership by @acrlw in #721
- Froze compiled acceptance parameters, preserved stable environment IDs in expansion records, and safely cancelled observer/clock failures without aborting active runs on reentrant calls by @yuecideng in #756
- Removed repeated sequential analysis and execution-history copying while preserving per-call grounding and independent result evidence by @yuecideng in #756
- Exposed
trajectory.spatial.dedup_tolerance, forwarded it to augmentation coverage, and rejected enabled spatial amplitudes at or below the deduplication tolerance; corrected repeated-pick/place and drawer defaults by @matafela in #764 - Prevented idle-arm sag and bottle slipping, corrected PourWater mouth clearance and release/settling behavior, and drained deferred benchmark cleanup by @yuecideng in #747
- Updated Architecture Explorer source-map-js from 1.2.1 to 1.2.2 with the security patch by @yuecideng in #753
Documentation
- Expanded Tianji Marvin documentation and consolidated the supported robot catalog by @yuecideng in #722
- Refreshed UR robot renders and added an Aloha Mini 2 Pro image by @yuecideng in #691
- Fixed Git checkout trust for versioned release documentation builds by @yuecideng in #690
- Documented denoising modes, DLSS migration, NRD tuning, and the updated rendering configuration API by @yuecideng in #666
- Documented physical-objective evaluation, expert replay contracts, and separate execution, physical, acceptance, and persistence outcomes by @yuecideng in #657
- Documented external deployment component resolution and updated Gym/Task Program configuration guidance by @yuecideng in #742
- Documented task-language ownership, precedence, semantic segmentation, LeRobot task/subtask readback, and online language lookup by @yuecideng in #743
- Documented offline dataset diagnostics, grouped splitting, recovery evidence, and the isolated LeRobot export workflow by @yuecideng in #744
- Documented official end-effector naming and migration while preserving arbitrary custom control-part names by @yuecideng in #758
- Documented augmentation amplitude/deduplication pairing and corrected example output paths and preflight checks by @matafela in #764
- Documented renderer demand detection, process-lifetime reuse constraints, and backend capacity behavior by @yuecideng in #746
All Commits Since v0.3.0
-
Fixed Git checkout trust for versioned release documentation builds by @yuecideng in #690
-
Refreshed UR robot renders and added an Aloha Mini 2 Pro image by @yuecideng in #691
-
Fixed robot link-physics default merging and centralized Franka fingertip defaults by @yuecideng in #693
-
Defined joint and end-effector dataset action contracts with measured and executed traces by @yuecideng in #680
-
Added deployment and launcher controls to disable sensor acquisition by @yuecideng in #697
-
Separated requested, processed, and executed action traces in rollouts and recordings by @yuecideng in #695
-
Added portable whole-scene USD export and native or Viser preview by @MuziWong in #589
-
Fixed dynamic replay of position-velocity expert actions by @yuecideng in #699
-
Added independent physical-objective evaluation and expert replay validation by @yuecideng in #657
-
Removed the legacy Gym Action Bank subsystem and its environment entry points by @yuecideng in #694
-
Added asset download-source overrides through EMBODICHAIN_DOWNLOAD_PREFIX by @liyifreddy in #704
-
Added warnings for camera randomization ranges ignored by the selected mode by @liyifreddy in #706
-
Preferred DexSim joint descriptors with a legacy compatibility fallback by @yuecideng in #707
-
Added Tianji Marvin robot support and corrected solver TCP pose inversion by @matafela in #686
-
Fixed arena-frame camera pose randomization and mode validation by @yuecideng in #711
-
Added versioned locomotion action contracts and preserved legacy policy-bundle loading by @yuecideng in #698
-
Fixed batched joint indexing and pose broadcasting in register_info_to_env by @liyifreddy in #718
-
Added MotionGenerator support for Press and consistent atomic benchmark start states by @yangchen73 in #696
-
Expanded Tianji Marvin documentation and consolidated the supported robot catalog by @yuecideng in #722
-
Added source-neutral motion-generation contracts, adapters, and Affordance provenance by @yuecideng in #681
-
Unified collection episode targets, recipe selection, and committed-episode accounting by @yuecideng in #727
-
Added Task Program planner selection through execution policies by @yuecideng in #728
-
Added bounded asynchronous LeRobot queues, backpressure metrics, and PNG compression controls by @yuecideng in #730
-
Added scoped denoising configuration and upgraded DexSim to 0.5.1rc1 by @yuecideng in #666
-
Extended held-object motion, handover coordination, dual-arm release, and slide targets by @yuecideng in #733
-
Removed implicit physics stepping from state publication and scene-edit helpers by @yuecideng in #735
-
Added configurable ray-tracing minimum and maximum bounce limits by @yuecideng in #736
-
Added configurable rendering benchmark sweeps with quality, timing, and memory reports by @yuecideng in #731
-
Added explicit original or mirrored pickup grasp selection by @yuecideng in #738
-
Fixed projective UV buffer layout for the DexSim Python binding by @yuecideng in #739
-
Recorded effective environment seeds in demonstration metadata by @yuecideng in #740
-
Fixed loading of configured ignore_terminations values by @yuecideng in #741
-
Resolved packaged SDK components from external deployment configurations by @yuecideng in #742
-
Added UR5 motion-generation benchmark evaluation by @yangchen73 in #734
-
Added NoRender locomotion training, batched state access, and lower-overhead rollouts by @acrlw in #721
-
Stabilized PourWater grasps, retained robot drive targets, and added verified hosted assets by @yuecideng in #747
-
Unified overall task and semantic subtask language across expert recording and online batches by @yuecideng in #743
-
Updated Architecture Explorer source-map-js from 1.2.1 to 1.2.2 with the security patch by @yuecideng in #753
-
Added calibrated GraspKit defaults for Franka Panda, CobotMagic, and Tianji Marvin by @yuecideng in #752
-
Added offline expert dataset validation, grouped splitting, conservative recovery, and isolated LeRobot export by @yuecideng in #744
-
Fixed Task Program compilation, runtime failure handling, expansion attribution, and execution-history ownership by @yuecideng in #756
-
Added G1 PPO benchmarking and locomotion CUDA inference, reset, and checkpoint-resume tests by @acrlw in #710
-
Standardized official end-effector control groups on eef, left_eef, and right_eef by @yuecideng in #758
-
Fixed configured trajectory augmentation silently discarding all spatial variants by @matafela in #764
-
Added automatic NoRender selection for headless task environments without native render consumers by @yuecideng in #746
-
Bumped package and bundled runtime versions to 0.3.1 by @yuecideng in #769
Contributors
Thanks to @acrlw, @liyifreddy, @matafela, @MuziWong, @yangchen73, @yuecideng for the 46 merged pull requests included in this release.
Full Changelog: v0.3.0...v0.3.1
Compatibility Notes
- Updated the SDK dependency to
dexsim_engine==0.5.1rc1, a DexSim release candidate, and migrated rendering configuration to its mode-based API by @yuecideng in #666 - Constrained TorchCodec to
>=0.5,<0.6for the supported Torch 2.7 ABI by @yuecideng in #681 - Kept the SDK on Python >=3.10 and LeRobot 0.4.x; the independent
tools/lerobot_exportpackage requires its own Python >=3.12 / LeRobot 0.6.1 environment by @yuecideng in #744 - Required headless operation for NoRender; adding native-camera consumers after a NoRender World requires a new process that reserves rendering before its first World by @yuecideng in #746
- Returned batched articulation state in reusable buffers; clone tensors retained as historical snapshots by @acrlw in #721