{ "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" } }