File size: 2,106 Bytes
9d95927
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
tags:
- onnx
- robotics
- reinforcement-learning
- microduck
---

# MicroDuck walking policy (official pretrained copy)

This repository contains `BEST_alpha_walking.onnx`, an unchanged copy of the
pretrained walking policy distributed by **Pollen Robotics**. It was downloaded
and smoke-tested locally; it was **not trained or fine-tuned by this uploader**.

## Source

- Original project: [pollen-robotics/microduck-simulator](https://huggingface.co/spaces/pollen-robotics/microduck-simulator)
- Pinned revision: `183f99a40bd7308da3e848de961ed32bb02624a5`
- [Original model file](https://huggingface.co/spaces/pollen-robotics/microduck-simulator/blob/183f99a40bd7308da3e848de961ed32bb02624a5/app/public/policies/BEST_alpha_walking.onnx)
- SHA-256: `e36332d383997d51401897734cd3e79cf5038406feddb18b4d57ecfb141daa6c`

No new license is granted by this copy. Consult the original project and its
authors for applicable model usage and redistribution terms.

## Interface and local validation

- Input: `obs`, float32, shape `[1, 61]`.
- Output: `actions`, float32, shape `[1, 14]`.
- Observation normalization is included in the graph.
- ONNX graph checker passed.
- All 512 wide-distribution random input samples produced finite outputs.
- Local CPU inference averaged approximately 0.027 ms per call over 1000 calls.
  Timing is specific to the test machine.

See `validation_report.json` for recorded results. No source-checkpoint numerical
parity comparison, physics rollout, or real-hardware test was performed.

## Minimal inference example

Install `numpy` and `onnxruntime`, download the ONNX file, then run:

```python
import numpy as np
import onnxruntime as ort

session = ort.InferenceSession(
    "BEST_alpha_walking.onnx", providers=["CPUExecutionProvider"]
)
obs = np.zeros((1, 61), dtype=np.float32)
actions = session.run(["actions"], {"obs": obs})[0]
print(actions.shape)  # (1, 14)
```

Zero observations here are synthetic smoke-test data. A robot rollout needs the
upstream observation layout, control loop, and action processing; these raw
outputs are not direct hardware commands.