Hi, thanks for releasing AMO.
Some context first, since your README is explicit about hardware: this is a simulation-only benchmark and nothing here was deployed on a robot. I also record AMO in my NOTICE as Apache-2.0 but sim-only at the authors' request, and I link the sim-to-real warning from your README so anyone reading the results sees it.
The setup: 29 open-source Unitree G1 walking policies behind one C++ interface, scored on a 60 s tour of 12 waypoints, 50 Hz control over a 2 ms step, a crane releasing after a 3 s shared stance, and a punch on every segment (random joint and direction, 0.08 s, up to 600 N). The policy owns 15 leg and waist joints; the 14 arm joints random-walk under the harness. Both MuJoCo and PhysX.
amo finished 5th of 29: 64 % MuJoCo / 73 % PhysX completed, 36 cm / 16° error, 7832 J. Its vibration figure of 1618 is the second-smoothest in the entire field, which stood out.
What I would like checked is the observation assembly, which is the most intricate of any policy here. I build a 23-DoF proprioceptive block of 3 + 2 + 2 + 23*3 + 2 + 15, add an 8-joint arm demo block plus 3+3+3, 3 privileged dims, then 10 frames of proprioceptive history inline and a further 25 frames in a separate extra-history tensor. ACTION_SCALE = 0.25, clip 40, ang-vel scale 0.25, dof-vel scale 0.05, gait frequency 1.3 Hz, torso height 0.75 m with yaw, pitch and roll commanded flat. I run amo_jit.pt with adapter_jit.pt on a 4+8 input.
Concretely:
- Is the 10-frame inline history plus 25-frame extra buffer the right split, or should the extra history be the same buffer sampled differently?
- Gait frequency fixed at 1.3 Hz for the whole tour — reasonable, or should it track commanded speed?
- The 8 arm joints in the demo block: I feed the harness's random-walking arm positions. If AMO expects a commanded arm trajectory instead, that changes the picture.
PRs to policies/amo/policy.cpp welcome; otherwise a comment and I will fix and re-run.
https://github.com/rhoyn/teleop-walking-benchmark
https://rhoyn.com/stable-walk
Hi, thanks for releasing AMO.
Some context first, since your README is explicit about hardware: this is a simulation-only benchmark and nothing here was deployed on a robot. I also record AMO in my NOTICE as Apache-2.0 but sim-only at the authors' request, and I link the sim-to-real warning from your README so anyone reading the results sees it.
The setup: 29 open-source Unitree G1 walking policies behind one C++ interface, scored on a 60 s tour of 12 waypoints, 50 Hz control over a 2 ms step, a crane releasing after a 3 s shared stance, and a punch on every segment (random joint and direction, 0.08 s, up to 600 N). The policy owns 15 leg and waist joints; the 14 arm joints random-walk under the harness. Both MuJoCo and PhysX.
amofinished 5th of 29: 64 % MuJoCo / 73 % PhysX completed, 36 cm / 16° error, 7832 J. Its vibration figure of 1618 is the second-smoothest in the entire field, which stood out.What I would like checked is the observation assembly, which is the most intricate of any policy here. I build a 23-DoF proprioceptive block of
3 + 2 + 2 + 23*3 + 2 + 15, add an 8-joint arm demo block plus 3+3+3, 3 privileged dims, then 10 frames of proprioceptive history inline and a further 25 frames in a separate extra-history tensor.ACTION_SCALE = 0.25, clip 40, ang-vel scale 0.25, dof-vel scale 0.05, gait frequency 1.3 Hz, torso height 0.75 m with yaw, pitch and roll commanded flat. I runamo_jit.ptwithadapter_jit.pton a 4+8 input.Concretely:
PRs to
policies/amo/policy.cppwelcome; otherwise a comment and I will fix and re-run.https://github.com/rhoyn/teleop-walking-benchmark
https://rhoyn.com/stable-walk