| { |
| "schema_version": 4, |
| "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": "sim-only", |
| "description": "Forward-running policy for the stock MicroDuck on flat ground. This is checkpoint 8749 used in the run-into-mat video, not the later faster continuation.", |
| "command": { |
| "layout": "twist(3), head_pose(4), body_pose(6)", |
| "twist": [ |
| "forward velocity command in m/s; trained through 1.65, recommended simulation evaluation point 1.80; 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": "c5fcc50219fef01ac9931d0079c583ccbb29b689", |
| "upstream_base": "pollen-robotics/microduck_rl@d424a0c899f6b33cbd3daeb279913134349c0b63", |
| "run": "sweep-speed-r1", |
| "checkpoint_iteration": 8749, |
| "resumed_from": "highspeed-r6 iteration 6750", |
| "continuation_iterations": 2000, |
| "environment": { |
| "MICRODUCK_RUNNING_TARGET_MAX_SPEED": 1.65, |
| "MICRODUCK_RUNNING_SPEED_CAP": 1.8, |
| "MICRODUCK_RUNNING_ACTION_RATE_WEIGHT": -0.1, |
| "MICRODUCK_RUNNING_ENABLE_SYMMETRY": false, |
| "MICRODUCK_RUNNING_ENABLE_HEADING_FEEDBACK": false |
| }, |
| "export": "scripts/export.py; observation normalizer baked into policy.onnx", |
| "source_commit": "c5fcc50219fef01ac9931d0079c583ccbb29b689", |
| "continuation_checkpoint": { |
| "path": "checkpoint.pt", |
| "sha256": "ce7707c985d84affda1befec172a8c0a72fafaa4d3476a26bec11dde9199907f", |
| "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": 1.8, |
| "num_envs": 256, |
| "duration_s": 8.0, |
| "survival_fraction": 0.9921875, |
| "mean_body_forward_speed_m_s": 1.6072514057159424, |
| "mean_initial_heading_displacement_speed_m_s": 1.3276939392089844, |
| "mean_absolute_heading_error_deg": 25.215665057096395, |
| "mean_absolute_lateral_displacement_m": 3.8727223873138428, |
| "flight_fraction": 0.6572428941726685, |
| "known_limits": "Heading drift is substantial. At a 2.00 m/s extrapolated command, mean body-forward speed was 1.6452 m/s and survival fell to 0.9336. Never tested on hardware." |
| }, |
| "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/head CoM +/-3 mm, armature +/-10%, BAM joint friction +/-10%", |
| "encoder bias +/-0.015 rad, IMU misalignment up to 6 degrees, and actor observation noise" |
| ], |
| "relaxed": [ |
| "flat terrain only", |
| "random push disturbances removed", |
| "non-backlash robot model", |
| "CoM/head-CoM and 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 and randomized initial base tilt disabled in inherited base recipe" |
| ], |
| "hardware_validated": false |
| }, |
| "media": { |
| "preview": "media/preview.mp4", |
| "run_into_mat": "media/run-into-mat.mp4", |
| "run_into_mat_note": "Same policy checkpoint; obstacle, collision augmentation, camera treatment, motor cutoff, and sparks are scripted demo elements. The policy has no obstacle perception.", |
| "audio": false |
| }, |
| "source_artifact_sha256": "b4e285fb3671f52c28f671bd4733a4e11fa17c21f40d25f52eaf2614f9e2e02a", |
| "artifacts": { |
| "policy_onnx_sha256": "b4e285fb3671f52c28f671bd4733a4e11fa17c21f40d25f52eaf2614f9e2e02a" |
| } |
| } |
|
|