feat(microduck): add bilateral mirror loss and keep turn-in-place commands - #1493
Closed
alexhegit wants to merge 2 commits into
Closed
feat(microduck): add bilateral mirror loss and keep turn-in-place commands#1493alexhegit wants to merge 2 commits into
alexhegit wants to merge 2 commits into
Conversation
Align the MBA velocity owner with pollen-robotics develop@29e887ec rewards, keep turn-in-place commands from being zeroed, and add the 61D/14D bilateral mapping so 4-GPU MuJoCo runs stop collapsing to a one-sided gait. Co-authored-by: Cursor <cursoragent@cursor.com>
The 2048-per-rank / 8192-global scale is host-specific training evidence, not a contract default; record it in the PR instead. Co-authored-by: Cursor <cursoragent@cursor.com>
Collaborator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
use_data_augmentation=false) for the MicroDuck 61D/14D policy contract, on both the PD and BAM owners. Without it, MuJoCo position-PD PPO converges to seed-dependent one-sided turning.Builds on #1475 (BAM) and #1455 (reward stack).
Scope
In
microduck_velocity_symmetryplus involution / lateral-and-yaw sign-flip testssymmetry_cfgonmicroduck_velocity_flat/mujoco.yamlandmicroduck_velocity_bam_flat/mujoco.yamlMicroduckVelocityCommand._resample_command:is_standing_env[turn_ids]=Falseand refreshvel_command_wOut
algo.num_envs,max_iterations, andtraining.devices(BAM remains 2048×500 smoke; PD remains 4096×6000)pyproject.toml/uv.locklogs/)Local training notes (not in-tree)
On a 4×MI210 host with a MuJoCo CPU pool,
algo.num_envsis per rank:Global 8192 improved throughput versus 1024/rank and improved PD omnidirectional coverage on this machine. That is host CPU-thread evidence, not a cross-machine default.
BAM 12k (
2026-09-04_12-41-58): no NaN;error_vel_yaw2.13 (PD 12k on the same host was ~9.7); fixed-command stand yaw ≈0, turn-left +0.60 / turn-right −0.72 vs ±0.7. Forward/lateral tracking is still weak and is out of this PR.Tightening
tracking_ang_velsigma 0.5→0.25 on a PD resume lowered non-yaw rewards as well; it is not adopted.Validation
make check(ruff / mypy / pyright) passed with Node 24 (PATHvia nvm; system Node 12 cannot run pyright).uv run pytest tests/envs/locomotion/microduck tests/envs/locomotion/test_sensor_reward_terms.py -m "not slow": 63 passed.uv run python scripts/benchmark/smoke_test.py: passed (mlx scripts skipped as platform-optional).make test-alltest-cov: 2541 passed. Remaining failures/errors on this host were missing HF meshes (go2/a2/allegro recovered afterunilab-pull-assets; t800 still missingLINK_HIP_PITCH_R.obj) and off-policy logger tests asserting untruncated labels under a narrow captured terminal. None of those paths are in this diff.Made with Cursor