google-deepmind / google-deepmind/mujoco_playground
Op3Joystick: push perturbation is commented out and no domain randomizer is registered
- Dominant language
- Python
- Stars
- 2.2k
- Forks
- 359
- Avg merge
- 7d 3h
- Merged PRs (30d)
- 1
Description
In `locomotion/op3/joystick.py`, `step` has
```python
# state = self._maybe_apply_perturbation(state, pert_rng)
```
so the push machinery (`velocity_kick`, `kick_durations`, `kick_wait_times`, the info fields reset
fills in) is configured but never used, and `locomotion/__init__.py`'s `_randomizer` has no entry for
`Op3Joystick` (Go1, G1, T1 and Berkeley Humanoid have one). For anyone taking OP3 policies to
hardware this means no pushes and no dynamics randomization by default.
Is this intentional (e.g. OP3 unstable with pushes)? If not, I have a tested version to offer as a PR:
- an `Op3` randomizer in the style of `berkeley_humanoid/randomize.py`, scaled for a 3 kg robot:
floor friction U(0.4, 1.0), joint friction loss ×U(0.9, 1.1), armature ×U(1.0, 1.05), link masses
×U(0.9, 1.1), torso +U(−0.3, 0.3) kg, Kp and Kd ×U(0.8, 1.2) (bias kept at −Kp); tests check ranges,
variation across envs and that only those fields are batched;
- pushes re-enabled behind a config flag (`pushes: True`), with a test that the kick applies force only
when enabled;
- optionally, one control step of action latency and per-episode encoder offsets, keeping the
observation's action semantics (related to #253).
Training results with these on are pending on our side; I would include them in the PR.
Contributor guide
Research direction
Read locomotion/op3/joystick.py and locomotion/__init__.py first, then compare the existing randomizer in berkeley_humanoid/randomize.py. Confirm the intended OP3 push behavior and scope for latency and encoder offsets before changing configuration. Done means the randomizer and push flag behave as specified, with tests covering parameter ranges, variation across environments, batched fields, and enabled versus disabled kicks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- machine-learning, robotics
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100