Skip to content

Upgrades composer to use mujoco==3.10.0#317

Merged
juelg merged 2 commits into
masterfrom
upgrade-mjspec
Jul 12, 2026
Merged

Upgrades composer to use mujoco==3.10.0#317
juelg merged 2 commits into
masterfrom
upgrade-mjspec

Conversation

@wpumacay

Copy link
Copy Markdown
Collaborator

Description

  • Upgrades composer.py to use the latest version of the MjSpec API
  • Updates mujoco version to 3.10.0 (latest atm)

Here is a video of the cartesian control example for the fr3, seems to work just fine.

Kooha-2026-07-09-23-45-32.mp4

@juelg , as I mentioned on the lab, the changes are mostly improvements (apart from the breaking changes to the spec API), but it would be better if you can run your tests and also run your benchmarks to see that nothing iffy is going on.

Also, have to make sure that the wildcard for libmujoco.so.* does the trick when building the manylinux wheels.

@wpumacay
wpumacay requested a review from juelg July 10, 2026 06:46
@wpumacay

Copy link
Copy Markdown
Collaborator Author

@juelg , seems there's some other places I missed that also use mjspec. Will check the failed workflow's outputs and update the files

- With the new mjspec API, when attaching an object, the old reference
  spec (e.g. child_spec) is updated as well, and its names changes. This
  was causing the prefix being duplicated and was making it fail when
  searching for a specific reference in the new spec
@juelg
juelg merged commit d825bb6 into master Jul 12, 2026
6 checks passed
@juelg
juelg deleted the upgrade-mjspec branch July 12, 2026 01:01
tenfoldpaper pushed a commit that referenced this pull request Jul 12, 2026
Upgrades composer to use mujoco==3.10.0
@juelg juelg mentioned this pull request Jul 17, 2026
juelg added a commit that referenced this pull request Jul 20, 2026
* fix: compatibility with mujoco  3.10.0

* feat: add rcs_taxim

* feat: working taxim demo with robotiq gripper

* fix: remove misplaced tactile sensor demo

* WIP: implementation of StableBaselines3 PPO

* wip: add readme instruction for starting sb3

* fix: don't flatten obs by default

* feat: add proper spaces for training and inference with parallelization option

* feat: add mesh-based box

* feat: add norm2tex material piping

* WIP: run_ablate for physics check

* feat: somewhat working ablation script

* add docker container and ppo reward

* undo changes and add step to startgrasp wrapper

* remove deprecated sb3 package

* fix(docker): link script

* feat: zed cli rgb snapshot

* fix(teleop): depth in cameras

* chore(quest): simplify right/left swapping logic

* impr(robotiq): physical reset only in constructor

* feat: robotiq in teleop script

* impr(gripper): improved change detection

* feat(zed): add option to record both eyes

* feat(inference): add initial inference loop script

* style: format inference franka script

* fix(franka): inference script after testing

Co-authored-by: Copilot <copilot@github.com>

* feat: sim inference

* fix: patch always open gripper observation

* feat: reconnect and keyboard control

* feat: optionally record

* feat: added mp4 video converter from recording

* feat(mp4): added joint display

* fix: printing and sim sleep

* feat: action chunking optionally in inference script

* feat: support for relative actions

* feat: inference add success button

* fix(storage wrapper): flush keeps last to avoid success problems

* fix(mp4): shows joint actions if available

* fix(fr3): torque discontinuity while reset

* fix(hw camera): stop camera before stop polling thread

* feat: using input instead of pynput

* feat: add limited absolute action wrapper

* feat: add limited absolute actions to inference script

* stash: latest version

Co-authored-by: Copilot <copilot@github.com>

* stash: add notes

* fix: left/right wrist camera bug

* fix: docker dependency

* fix(inference): image resize method to match conversion

* docs: added documentation for assets path

* fix(pypi): pin compatible pinocchio runtime deps

* fix(egl): fail fast when rendering is requested without egl

* chore: rename python package to rcs_core

* chore: remove global pynput dependency

* bump: version 0.7.1 → 0.7.2

* build: rename rcs to rcs-core

- fix rcs package name in extensions
- added rcs as dependency in build process
- improved robustness of downloading assets

* ci: python wheel building

* docs: updated install instructions

- updated install instructions
- updated licenses and readmes

* docs: added libfranka version documentation

* build: auditwheel repair and readded libpoco

* build(panda): fr3 copy over

* build: fix rcs find path

* build: fix license and author name

* ci: fix wheel and cibuildwheel for pipy uploading

* chore: cleanup unused codes and comments

* docs: added inference

* style: fix format

* fix: resolve ruff lint errors

Wire up the previously-undefined `scene`/`ROBOT_INSTANCE` names in the
example scripts, drop unused imports, move the typer.Option default and
the unnecessary else-after-return into ruff-compliant form, and add
rule-specific noqa comments for the function-scoped torch/torchvision
imports in the LeRobot joint converter.

* fix: resolve mypy type errors

Exclude examples/inference/franka.py from mypy to resolve a duplicate
"franka" module clash with examples/teleop/franka.py (whose franka.py
is the one example/teleop/quest_align_frame.py actually imports from).

Make LimitedAbsoluteAction._get_current()'s return annotation honest
(np.ndarray | common.Pose) since it returns a Pose in cartesian control
modes, and add a cast at the one call site that lacked one. Add
rule-specific type: ignore / noqa comments for the remaining cases
where the underlying stubs don't match runtime behavior (FR3-only
robot methods, duckdb's loosely-typed schema introspection, Optional
fields that are known to be set, and the lerobot torch imports).

* docs: added python headers to readme

* fix: resolve pytest failures and StorageWrapper hang

StorageWrapper._flush() inferred and permanently cached its pyarrow
schema from whatever rows happened to be in the first flush. Since
"action" is logged one step behind (frame 0 has no prior action), an
unlucky first batch consisting only of that null action got pyarrow's
null type pinned for the field forever, so every later batch with a
real action value failed with "Invalid null value". Defer flushing
until the buffered rows yield a schema with no null-typed fields
instead of caching a too-eager guess.

Separately, close() called _flush() and only sent the writer thread's
stop sentinel afterwards, so any exception during that flush (such as
the one above) left the background ThreadPoolExecutor thread blocked
on an empty queue forever, hanging the whole process at interpreter
exit. Wrap the flush in try/finally so the sentinel is always sent.

Also add the include_rotation field quest.py now reads to the
QuestOperator test config double, which test_consume_action_swaps_
gripper_with_controller was missing.

* style: fix gym warning and path obj in cli

* format: pyformat

* misc: bump taxim version

* misc: update mujoco-taxim dependency

* fix: correct EE orientation and trajectory for Robotiq

* Merge pull request #317 from RobotControlStack/upgrade-mjspec

Upgrades composer to use mujoco==3.10.0

* fix: remove deprecated test

* fix: correct version number

* format: pyformat

* format: pyformat

* fix: move the digit demo to rcs/examples

* fix: remove unnecessary files

* fix: remove hardcoded path and rename function more clearly

* fix: add rcs_taxim extension to list

* fix: import the file instead of class

* format: pyformat and pylint

* fix: change default name in EmptyWorldFR3 to robot

* fix: add robot_prefix_template as an arg to config; revert to right

* format: pyformat

* fix: remove input argument to config

---------

Co-authored-by: deboliveira <debora.oliveira@utn.de>
Co-authored-by: Tobias Jülg <tobias.juelg@utn.de>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Tobias Juelg <tobias@juelg.net>
Co-authored-by: Tobias Jülg <tobiasj@allenai.org>
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.

2 participants