Skip to content

Release v1.3.1 - #84

Merged
nu-jliu merged 1 commit into
mainfrom
release/v1.3.1
Aug 7, 2026
Merged

Release v1.3.1#84
nu-jliu merged 1 commit into
mainfrom
release/v1.3.1

Conversation

@nu-jliu

@nu-jliu nu-jliu commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Release v1.3.1 mirrors the current dev/JH_i2rt-main tree into the public repository. Two changes land: arm hardware revisions become flat arm variants (the arm --version flag and version= kwarg are gone), and the YAM family gains Intel RealSense D405 camera models plus a new yam_station_*_d405 station family.

Per release direction, pyproject.toml stays at package version 1.1.2 — the release version is carried by the branch/PR title.

Breaking change: get_yam_robot(..., version=N) and the --version CLI flag are removed. Use the flat variant instead — --arm yam_ultra_2 / ArmType.YAM_ULTRA_2 replaces --arm yam_ultra --version 2.

Changes

Flat arm variants (replaces the --version flag)

  • i2rt/robots/utils.py: added the _ARM_VARIANTS map from variant name to (family, revision), added the ArmType.YAM_ULTRA_2 member plus ArmType.family / ArmType.version accessors, and dropped the version parameter from _load_arm_config, _load_gripper_config, combine_arm_and_gripper_xml, and ArmType.get_xml_path — each now derives the on-disk (family, v<N>) pair from the ArmType alone
  • i2rt/robots/get_robot.py: removed the keyword-only version argument from get_yam_robot and updated its config/XML lookups to resolve the revision from arm_type
  • i2rt/robots/motor_chain_robot.py: dropped the --version CLI flag from _CliArgs and its get_yam_robot call; the --arm docstring now lists yam_ultra_2
  • i2rt/robot_models/__init__.py: added available_arm_families(), which reports only families that have at least one shipped v<N>/<arm>.xml, so a staged raw CAD export is not mistaken for a family
  • examples/control_with_mujoco/control_with_mujoco.py: removed the --version flag and the arm_version parameter threaded through _robot_worker
  • examples/control_with_viser/control_with_viser.py: removed the version parameter from main() and its get_yam_robot call
  • examples/minimum_gello/minimum_gello.py: removed Args.version, added yam_ultra_2 to the --arm literal, and dropped the version argument from _run_viewer_loop and both get_yam_robot calls
  • i2rt/robots/tests/test_robot_variants.py: added ArmType.YAM_ULTRA_2 to the variant matrix
  • i2rt/robots/tests/test_urdf_mjcf_alignment.py, i2rt/robots/tests/test_urdf_mjcf_posed_alignment.py: reworked the alignment fixtures to enumerate variants via ArmType.family / ArmType.version instead of a separate version argument

New D405 camera and station models

  • i2rt/robot_models/arm/yam/v1/yam_crank_4310_d405.xml, yam_linear_4310_d405.xml, yam_linear_4310_d405.urdf: added wrist-camera YAM variants with the D405 placed at the calibrated wrist-camera extrinsic
  • i2rt/robot_models/arm/yam/v1/assets/crank_4310/, assets/d405/: added the crank gripper and D405 bracket/cable-holder meshes the new arm models reference
  • i2rt/robot_models/gripper/crank_4310/crank_4310_d405.xml, i2rt/robot_models/gripper/linear_4310/linear_4310_d405.xml (+ their assets/d405/ meshes): added D405-equipped variants of both 4310 grippers
  • i2rt/robot_models/station/yam_station_crank_4310_d405/, yam_station_linear_4310_d405/: added the two station models (URDF + MJCF + README with kinematics/extrinsics tables)
  • i2rt/robot_models/station/assets/Bracket_for_top_D405.stl: added the top-mounted D405 bracket mesh shared by both stations

Docs

  • README.md: added the arm-variant table (mass, chain length, per-model doc links) including yam_ultra_2, added the flexible_4310 / no_gripper gripper rows and the Viser / Flow Base example rows, and updated the zero-gravity and Python API snippets to pass arm_type
  • AGENTS.md, CLAUDE.md: rewrote the "config-driven, runtime-composed models" section to describe hardware revisions as arm variants, document the two-place ArmType + _ARM_VARIANTS registration, and note that get_arm_xml_path(arm, version) and sync_gripper_mounts.py --version N intentionally keep an explicit version
  • examples/control_with_mujoco/README.md, examples/control_with_viser/README.md, examples/minimum_gello/README.md: dropped the --version row from the argument tables and added yam_ultra_2 to the --arm value lists

Test Plan

  • uv sync --all-packages in a fresh checkout succeeds
  • uv run python -c "import i2rt" imports cleanly
  • uv run pytest i2rt/robots/tests i2rt/utils/tests tests -q passes (expected: 429 passed, 2 skipped)
  • uv run ruff check . passes
  • Verify the new variant resolves and composes:
    uv run python -c "
    from i2rt.robots.utils import ArmType, GripperType, combine_arm_and_gripper_xml
    import mujoco
    for arm in [ArmType.YAM, ArmType.YAM_ULTRA_2, ArmType.BIG_YAM]:
        m = mujoco.MjModel.from_xml_path(combine_arm_and_gripper_xml(arm, GripperType.LINEAR_4310))
        print(arm.value, arm.family, arm.version, m.nq)
    "
  • Confirm uv run python i2rt/robots/motor_chain_robot.py --help shows no --version flag and lists yam_ultra_2 under --arm
  • Edge case: uv run python examples/control_with_mujoco/control_with_mujoco.py --arm yam_ultra_2 --sim launches
  • Edge case: confirm the old form --arm yam_ultra --version 2 now errors rather than silently ignoring the flag
  • Skim the diff for any local/secret file that should not be public

Known follow-ups (not introduced as regressions by this PR)

  • Four of the new D405 MJCFs (yam_crank_4310_d405.xml, yam_linear_4310_d405.xml, crank_4310_d405.xml, linear_4310_d405.xml) contain literal -- inside header comments, which XML 1.0 forbids. MuJoCo loads them (TinyXML2 is lenient) but xml.etree.ElementTree — which this repo uses in combine_arm_and_gripper_xml — rejects them. Latent today because nothing references these models yet; should be fixed upstream in dev before they are wired into ArmType / GripperType.
  • .claude/launch.json (pre-existing in main, untouched here) hardcodes a developer's absolute personal path and points at a doc site not present in this repo. Worth removing separately.

🤖 Generated with Claude Code

Mirror of dev/JH_i2rt-main into the public repo.

Highlights:
- Hardware revisions are now flat arm variants: the arm `--version` flag and the
  `version=` kwarg are removed from the robot-construction API in favour of
  `ArmType.YAM_ULTRA_2` and the `_ARM_VARIANTS` family/revision map.
- New Intel RealSense D405 camera variants for the yam arm and the crank_4310 /
  linear_4310 grippers, plus the new `yam_station_*_d405` station models.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@nu-jliu nu-jliu self-assigned this Aug 7, 2026
@nu-jliu
nu-jliu merged commit 1276f63 into main Aug 7, 2026
2 checks passed
@nu-jliu
nu-jliu deleted the release/v1.3.1 branch August 7, 2026 09:12
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.

1 participant