microduck-running / manifest.json
HannesVonEssen's picture
Promote robust iteration 12195 running policy
af0e6b5 verified
Raw
History Blame
5.82 kB
{
"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"
}
}