File size: 3,512 Bytes
91fb203
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0394248
91fb203
 
 
 
 
0394248
91fb203
 
 
0394248
91fb203
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
{
  "schema_version": 2,
  "model_api": 1,
  "name": "collision-flamingo-ii",
  "kind": "perpetual",
  "obs_len": 61,
  "action_len": 14,
  "action_scale": 1.0,
  "entry_pose": "standing",
  "duration_s": null,
  "description": "Asymmetric one-foot balance policy trained with the Microduck full exterior-shell collision model; keeps the right foot lifted while the left foot supports the robot.",
  "command": {
    "twist": ["unused (0)", "unused (0)", "unused (0)"],
    "head": "unused (zeros)",
    "body": "unused (zeros)",
    "idle": [0, 0, 0]
  },
  "robot": {
    "model": "microduck full_shell",
    "hw_rev": 1,
    "servos": "xl330",
    "control_hz": 50
  },
  "training": {
    "algorithm": "PPO (rsl-rl-lib 5.0.1)",
    "task_id": "Mjlab-OneLegStandNoBall-Flat-MicroDuck",
    "repo": "pollen-robotics/microduck_rl",
    "git_base": "d424a0c899f6b33cbd3daeb279913134349c0b63",
    "source_state": "The full-shell collision and generated task were uncommitted. The exact required worktree overlay is bundled under reproduction/source-overlay.",
    "run": "logs/rsl_rl/one_leg_stand_no_ball/2026-09-01_17-49-38_HoppingTraining_V2",
    "checkpoint": "model_11500.pt",
    "resume_parent": "2026-09-01_13-43-17_HoppingTraining/model_8750.pt",
    "seed": 42,
    "num_envs": 2048,
    "sim_timestep_s": 0.005,
    "decimation": 4,
    "nconmax": 200,
    "contact_sensor_maxmatch": 128,
    "dependencies": {
      "python": "3.12",
      "torch": "2.9.1",
      "mjlab": "1.3.0",
      "mujoco": "3.10.0",
      "mujoco-warp": "3.8.1",
      "warp-lang": "1.12.0",
      "onnxruntime": "1.24.4",
      "better-actuator-models": "1.0.1"
    }
  },
  "policy_contract": {
    "input": "obs[1,61] float32",
    "output": "actions[1,14] float32",
    "observation_order": [
      "base_ang_vel[3]",
      "projected_gravity[3]",
      "joint_pos_relative[14]",
      "joint_vel[14]",
      "previous_actions[14]",
      "twist[3]",
      "head_pose[4]",
      "body_pose[6]"
    ],
    "normalizer_baked_into_onnx": true,
    "action_joint_order": [
      "left_hip_yaw", "left_hip_roll", "left_hip_pitch", "left_knee", "left_ankle",
      "neck_pitch", "head_pitch", "head_yaw", "head_roll",
      "right_hip_yaw", "right_hip_roll", "right_hip_pitch", "right_knee", "right_ankle"
    ]
  },
  "validation": {
    "supported_path": "scripts/infer_policy.py with --standing, --new-cmd-obs, --collision-model full_shell, and randomization disabled",
    "observed_result": "Nominal one-foot standing worked in the safe ONNX deployment-rehearsal viewer.",
    "example_video": "media/onnx_viewer_example.mp4",
    "unsupported_paths": [
      "mjlab uv run play with the native viewer",
      "mjlab uv run play with the Viser viewer",
      "scripts/infer_policy.py with --training-randomization"
    ],
    "known_limits": "The same behavior did not reproduce in the native/Viser checkpoint viewers. It has not been validated under training-style randomization or on hardware. The example video shows the nominal safe ONNX-viewer result; no quantitative evaluation battery is available."
  },
  "files": {
    "policy": "policy.onnx",
    "example_video": "media/onnx_viewer_example.mp4",
    "training_checkpoint": "checkpoints/model_11500.pt",
    "resume_parent_checkpoint": "checkpoints/resume_parent_model_8750.pt",
    "environment_config": "config/env.yaml",
    "agent_config": "config/agent.yaml",
    "source_overlay": "reproduction/source-overlay",
    "checksums": "checksums.sha256"
  }
}