| { |
| "schema_version": 5, |
| "model_api": 1, |
| "name": "microduck-running", |
| "kind": "perpetual", |
| "obs_len": 61, |
| "action_len": 14, |
| "action_scale": 1.0, |
| "entry_pose": "standing", |
| "duration_s": null, |
| "status": "simulation-only-hardware-candidate", |
| "description": "Robustified iteration-12195 forward-running policy for the stock MicroDuck on flat ground. It is not hardware validated.", |
| "command": { |
| "layout": "twist(3), head_pose(4), body_pose(6)", |
| "twist": [ |
| "forward velocity command in m/s; curriculum trained through 2.2; evaluated at 2.2; not a hard speed limit", |
| "lateral velocity; use 0 (training range was only -0.02 to 0.02 m/s)", |
| "yaw rate; use 0 (training range was only -0.05 to 0.05 rad/s)" |
| ], |
| "head": "unused; zeros", |
| "body": "unused; zeros", |
| "idle": [0, 0, 0], |
| "exact_zero_training_fraction": 0.03 |
| }, |
| "robot": { |
| "model": "microduck", |
| "hw_rev": 1, |
| "servos": "14x Dynamixel XL330", |
| "control_hz": 50, |
| "hardware_modifications_required": false |
| }, |
| "training": { |
| "task_id": "Mjlab-Running-Flat-MicroDuck", |
| "algorithm": "PPO (rsl_rl)", |
| "repo": "Vottivott/microduck-playground", |
| "commit": "828d950134e29a8d04cbb51720a22c8729047fb7", |
| "upstream_base": "pollen-robotics/microduck_rl@d424a0c899f6b33cbd3daeb279913134349c0b63", |
| "checkpoint_iteration": 12195, |
| "resumed_from": "iteration 11748", |
| "num_envs": 4096, |
| "seed": 42, |
| "common_environment": { |
| "MICRODUCK_RUNNING_TARGET_MAX_SPEED": 2.2, |
| "MICRODUCK_RUNNING_SPEED_CAP": 2.4, |
| "MICRODUCK_RUNNING_ACTION_RATE_WEIGHT": -0.1, |
| "MICRODUCK_RUNNING_HIGH_SPEED_STAGE_INTERVAL": 750, |
| "MICRODUCK_RUNNING_FORWARD_PROGRESS_WEIGHT": 5.0, |
| "MICRODUCK_RUNNING_ENABLE_SYMMETRY": false, |
| "MICRODUCK_RUNNING_ENABLE_HEADING_FEEDBACK": false, |
| "foot_friction_range": [0.7, 1.3], |
| "push_interval_s": [3.0, 6.0] |
| }, |
| "robustification_stages": [ |
| {"updates": 100, "push_m_s": 0.03, "trunk_com_m": 0.003, "head_com_m": 0.003, "initial_tilt_deg": 1.0}, |
| {"updates": 150, "push_m_s": 0.06, "trunk_com_m": 0.005, "head_com_m": 0.005, "initial_tilt_deg": 1.5}, |
| {"updates": 200, "push_m_s": 0.1, "trunk_com_m": 0.008, "head_com_m": 0.006, "initial_tilt_deg": 2.0} |
| ], |
| "export": "scripts/export.py; observation normalizer baked into policy.onnx", |
| "continuation_checkpoint": { |
| "path": "checkpoint.pt", |
| "sha256": "052f6df6683fdae83deb369b7f2c7d13e45f87ed2907adee6e23b1ebf9dfe973", |
| "actor_exact_to_released_onnx": true, |
| "original_full_ppo_state": true |
| } |
| }, |
| "eval": { |
| "sim_proxy": "mjlab / MuJoCo Warp with BAM XL330 M6 actuator model", |
| "command_speed_m_s": 2.2, |
| "duration_s": 10.0, |
| "warmup_s": 1.0, |
| "results": { |
| "nominal_plain": {"num_envs": 512, "speed_m_s": 1.6510932445526123, "survival": 0.9921875}, |
| "stress_plain": {"num_envs": 512, "speed_m_s": 1.6349653005599976, "survival": 0.98828125}, |
| "nominal_backlash": {"num_envs": 256, "speed_m_s": 1.6362495422363281, "survival": 0.98828125}, |
| "stress_backlash": {"num_envs": 256, "speed_m_s": 1.6121970415115356, "survival": 0.984375}, |
| "high_grip_stress": {"num_envs": 512, "speed_m_s": 1.6424154043197632, "survival": 0.966796875} |
| }, |
| "stress": {"push_m_s": 0.1, "trunk_com_m": 0.01, "head_com_m": 0.006, "initial_tilt_deg": 2.0}, |
| "known_limits": "Heading and lateral drift remain substantial. Never tested on hardware." |
| }, |
| "onnx_contract": { |
| "observation_normalizer_embedded": true, |
| "training_action_clipping": false, |
| "onnx_output_clip": false, |
| "checkpoint_parity_max_abs_error": 0.00000762939453125 |
| }, |
| "sim2real": { |
| "retained": [ |
| "BAM XL330 M6 voltage control, back-EMF, current limiting, battery 6.5-8.2 V, and load-dependent sag", |
| "3-6 physics-step actuator delay, 0-1-step IMU delay, and one-control-step joint-velocity lag", |
| "foot friction 0.7-1.3", |
| "trunk mass/inertia +/-5%, trunk CoM +/-8 mm, head CoM +/-6 mm, armature +/-10%, and BAM joint friction +/-10% in the final training stage", |
| "planar velocity pushes up to +/-0.10 m/s and initial pitch/roll up to +/-2 degrees in the final training stage", |
| "encoder bias +/-0.015 rad, IMU misalignment up to 6 degrees, and actor observation noise" |
| ], |
| "relaxed": [ |
| "flat terrain only", |
| "trained on the ordinary non-backlash robot model; backlash is cross-evaluation only", |
| "head/body pose-command widening curricula removed", |
| "weaker posture, angular-motion, foot-slip, and action-rate regularization; head/body pose tracking disabled", |
| "motor-gain randomization remains disabled in the inherited recipe" |
| ], |
| "hardware_validated": false |
| }, |
| "versions": { |
| "default": {"iteration": 12195, "policy": "policy.onnx", "checkpoint": "checkpoint.pt", "preview": "media/preview.mp4"}, |
| "speed_parent": {"iteration": 11748, "directory": "lineage/iteration-11748"}, |
| "legacy_mat_policy": {"iteration": 8749, "directory": "legacy/iteration-8749"} |
| }, |
| "media": { |
| "preview": "media/preview.mp4", |
| "run_into_mat": "media/run-into-mat.mp4", |
| "run_into_mat_policy_iteration": 8749, |
| "run_into_mat_note": "The mat, collision augmentation, camera treatment, motor cutoff, and sparks are scripted demo elements. The policy has no obstacle perception.", |
| "audio": false |
| }, |
| "source_artifact_sha256": "007707dd7779b2756ded67c58b2e9f94fe5071794a48c2b5a20d5f8d841efbeb", |
| "artifacts": { |
| "policy_onnx_sha256": "007707dd7779b2756ded67c58b2e9f94fe5071794a48c2b5a20d5f8d841efbeb", |
| "checkpoint_pt_sha256": "052f6df6683fdae83deb369b7f2c7d13e45f87ed2907adee6e23b1ebf9dfe973", |
| "preview_mp4_sha256": "942f0802cc0c6795769bd99a9991f866fee682890ea9ea6d71077f7d4eb5492b" |
| } |
| } |
|
|