|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to RoboVerse are documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +RoboVerse is the downstream content-pack + research layer on top of the |
| 9 | +[MetaSim](https://github.com/RoboVerseOrg/MetaSim) core. See |
| 10 | +`MetaSim/CHANGELOG.md` for the core-framework changes that ship with this |
| 11 | +release. |
| 12 | + |
| 13 | +## [Unreleased] |
| 14 | + |
| 15 | +Nothing yet — open a PR to add entries here. |
| 16 | + |
| 17 | +## [1.0.0-beta] - 2026-05-31 |
| 18 | + |
| 19 | +The headline of this release is **cross-platform parity is now testable and |
| 20 | +load-bearing**. Every shipped `RobotCfg`, every contracted handler method, |
| 21 | +and every benchmark `reset(seed=N)` is exercised across the supported |
| 22 | +backends and either passes or is xfail-documented with a specific reason. |
| 23 | + |
| 24 | +The release is forward- and backward-compatible. |
| 25 | + |
| 26 | +### Added |
| 27 | + |
| 28 | +- **`tests/test_roboverse_robot_cfg_validation.py`** — validates every |
| 29 | + `RobotCfg` shipped in `roboverse_pack`: instantiation, non-empty `name`, |
| 30 | + default joint positions inside `joint_limits` ranges. 60 cfgs × 4 checks, |
| 31 | + 9 real downstream bugs surfaced and xfail-documented: |
| 32 | + - `AlohaAgilex`, `G1Tracking` — orphan joints in `default_joint_positions` |
| 33 | + - `YamCfg`, `ArxL5Cfg`, `Vega`, `SoArm100`, `Koch`, `Go2`, `AllegroHand` — |
| 34 | + defaults outside `joint_limits` ranges |
| 35 | +- **IL + RL fusion bridge** (`roboverse_learn/fusion/`) — RL-trained policy |
| 36 | + → demo collection (rollout → `save_demo` → `data2zarr` unchanged) + |
| 37 | + IL-to-RL BC warmstart. End-to-end pipeline orchestrator |
| 38 | + (`rl-train → collect → to-zarr → il-train`). 6/6 tests; validated against |
| 39 | + a real cartpole checkpoint and real mujoco/EGL launch. Fails fast on |
| 40 | + scene-MJCF tasks where robot is not a `RobotCfg`. |
| 41 | +- **mjlab 1:1 obs/reward parity** — extensive byte-level alignment work: |
| 42 | + - `TerrainGridScanSensor` + `height_scan` obs wired into |
| 43 | + `velocity_rough_go1` / `velocity_rough_g1` (1:1 building block). |
| 44 | + - Continuous rough terrain wired into both velocity-rough quadruped |
| 45 | + tasks. |
| 46 | + - `tracking-g1` motion-tracking obs ports `motion_anchor` + `robot_body` |
| 47 | + 1:1. |
| 48 | + - `lift_cube_yam` regains the missing `ee_to_cube` + `cube_to_goal` obs. |
| 49 | + - `velocity_rough` height_scan is now correctly scaled by |
| 50 | + `1 / max_distance` (matches mjlab); clip-then-scale order on the obs |
| 51 | + term matches mjlab's `noise → clip → scale`. |
| 52 | + - go1 / g1 `base_lin_vel` obs reads the IMU velocimeter at the offset |
| 53 | + site (adds the `ω × r` cross-term — fixes a real obs gap that diverged |
| 54 | + under turning). |
| 55 | + - cross-sim cartpole eval pipeline repaired (actor build, device, |
| 56 | + episode metric). |
| 57 | +- **RoboTwin v2 passthrough** — 50 RoboTwin tasks registered as native gym |
| 58 | + envs (`RoboVerse/RoboTwin-<task>-v0`), 1:1 by construction, mirrors the |
| 59 | + ManiSkill passthrough pattern. |
| 60 | +- **`AGENTS.md` / `CLAUDE.md`** — repo-level dev rules for AI agents |
| 61 | + (double quote, line-length 120, py38 target, lazy imports OK, |
| 62 | + parity-is-load-bearing, multi-repo discipline, commit-as-user). |
| 63 | + |
| 64 | +### Fixed |
| 65 | + |
| 66 | +- **`get_started/0_static_scene.py`** — gracefully skips the cameras-empty |
| 67 | + case instead of crashing on first-time setup. |
| 68 | +- **mjlab tooling paths** — lint-clean across mjlab/maniskill tasks; |
| 69 | + tooling paths made portable (no hardcoded `/home/ghr/...`). |
| 70 | +- **mjlab MJCF asset resolution** — assets pulled from |
| 71 | + `RoboVerseOrg/roboverse_data` on Hugging Face instead of hardcoded local |
| 72 | + paths (fresh checkout no longer breaks). Dual-mode locator |
| 73 | + `_locator.mjlab_asset` = clone-or-HF. |
| 74 | +- **mjlab go1 Newton 1:1** — go1 RL now stands on Newton (PD actuators + |
| 75 | + init pose + action order alignment). |
| 76 | + |
| 77 | +### Documentation |
| 78 | + |
| 79 | +- `ROADMAP.md` — P0/P1 cross-platform infra items marked fixed; P2/P3 |
| 80 | + items refreshed. |
| 81 | +- mjlab / maniskill / robotwin integration pages wired into the docs |
| 82 | + toctree. |
| 83 | + |
| 84 | +### Tests |
| 85 | + |
| 86 | +- 60 RoboVerse `RobotCfg` configs validated × 4 checks = 240 statically |
| 87 | + exercised; 9 real bugs xfail-documented. |
| 88 | +- Cross-4-backend sweep against MetaSim core in the `roboverse` conda env: |
| 89 | + mujoco + sapien3 + newton + passthroughs — 323 passed, 0 regressions. |
| 90 | + |
| 91 | +### Migration |
| 92 | + |
| 93 | +No code changes are required for existing users. |
| 94 | + |
| 95 | +If you maintain an out-of-tree `RobotCfg`, the new validation test will |
| 96 | +exercise it as soon as it is imported through `roboverse_pack` — fix any |
| 97 | +flagged `default_joint_positions` mismatches before they trip in CI. |
| 98 | + |
| 99 | +--- |
| 100 | + |
| 101 | +[Unreleased]: https://github.com/RoboVerseOrg/RoboVerse/compare/v1.0.0-beta...HEAD |
| 102 | +[1.0.0-beta]: https://github.com/RoboVerseOrg/RoboVerse/compare/v1.0.0-alpha...v1.0.0-beta |
0 commit comments