Download r16_deploy/README.md from ETHRC-humanoid/rc-humanoid-locomotion: direct link, hf CLI and curl.
- Browser
- Download file 3.14 kB
-
https://huggingface.co/ETHRC-humanoid/rc-humanoid-locomotion/resolve/main/r16_deploy/README.md
- Command line
-
hf download hf://ETHRC-humanoid/rc-humanoid-locomotion/r16_deploy/README.md
-
curl -L -o README.md https://huggingface.co/ETHRC-humanoid/rc-humanoid-locomotion/resolve/main/r16_deploy/README.md
r16_deploy (H) β deploy candidate: smoothest walker in the r16 series
Trained locally (RTX 5090), report-16. First arm designed for the ROBOT rather than a hypothesis.
| Task | ETHRC-humanoidv1-walk-r16-deploy-psu-v0 |
| Branch | test/SjohnU_remodel_actuators @ b0ceaa8 |
| Checkpoint | model_9999.pt (10,000 iters, completed) |
| Envs / seed | 4096 / 42 |
| Actions | 26 @ 50 Hz, action_scale 0.25 |
| Base | u4_walk_crouch_real + r16 shared (25% standing, track 1.5β2.2) |
| Changes | ~65 ms latency + HEJ90 legs 200/10 + upright price (β10) + spawn-tilt DR + action_rate β0.3 + feet_clearance removed |
It is the least jittery policy in the series β by design
Measured with scripts/rsl_rl/measure_gait.py (1000 steps Γ 64 envs, spawning upright).
Jitter β not velocity β is what predicts real-robot chattering; velocity and cadence cannot see it.
| @ 0.5 cmd | fwd vel | steps/s | leg vel RMS | action rate | sign-flips/s | lean |
|---|---|---|---|---|---|---|
| r16_upright (C) β fastest, DO NOT DEPLOY | 0.406 | 3.37 | 1.697 | 0.126 | 12.5 | 0.7Β° |
| r16_latency_g200 β prev. smoothest | 0.342 | 3.48 | 1.170 | 0.093 | 10.6 | 10.8Β° |
| r16_deploy (H) | 0.369 | 3.48 | 1.023 | 0.074 | 10.4 | 3.0Β° |
At the 0.8 command H does 0.588 m/s with ~16.5 cm strides, still smoother (RMS 1.206) than C was at 0.5. Stride comes from commanding velocity, not reward shaping (the gait clock pins cadence ~3.5 steps/s, so step_len = v/cadence).
Why this and not the faster r16_upright (C)
C wins every sim metric (0.406 m/s, 0.7Β° lean) but is the jitteriest arm (leg vel RMS 1.697, +40% vs H) because it trained at zero latency β it learned 50 Hz twitch-correction. On hardware those corrections arrive ~67 ms late and become oscillation, so C's sim smoothness UNDERSTATES its real jitter. H trains with the measured ~65 ms delay, which is why it is smooth AND deploy-faithful. Latency is load-bearing, not a tax.
action_rate β0.3 did NOT strangle H (episode length 973/1000). The final_phys sibling that
suicided was killed by an over-large PHYSICAL-smoothing block (joint_acc Γ10, soft_landing Γ100),
not by the action_rate weight.
Known gaps (fold in before final deploy)
- Placeholder ankle 2.0/0.15, not the real-measured 8/1.5. The
r16_h_ankleSky arm tests whether the real ankle can walk at all β the last deploy-critical unknown. - Velocity-curriculum bug caps forward command at 0.5 (
lin_vel_cmd_levelsclamps to limit_ranges (-1.0, 0.5)). Ther16_h_cmdarm fixes it to (-0.2, 1.2). H's 0.588 at a 0.8 command is extrapolation past its training ceiling. - No foot-height reward β
feet_clearancewas removed (documented bug) and not replaced, sofeet_air_timeis the only swing incentive. Thefinal-*arms addfeet_swing_height_dense.
Files
policy.pt,policy.onnxβ exported viascripts/rsl_rl/play_export.pydeploy.yamlβ gains (legs motor-space ~189.6/9.64 = 200/10 sim), obs/action layout, 50 Hzmodel_9999.ptβ raw rsl-rl checkpoint