Hi, thanks for FALCON.
I ran 29 open-source Unitree G1 walking policies through one C++ harness and one task: a 60 s tour of 12 waypoints, 50 Hz control over a 2 ms step, a crane that releases after 3 s of shared stance, and a punch per segment (random joint, random direction, 0.08 s, up to 600 N). The policy owns 15 leg and waist joints; the 14 arm joints random-walk and cannot be used for balance.
falcon finished 12th of 29: 3 % MuJoCo / 6 % PhysX completed — but with a 51 cm position error and 17° yaw, which is better than several policies that completed four times as many runs.
That combination is the whole reason for this issue. Low tracking error with few completions means it walks accurately and then falls, and given that FALCON is specifically about loco-manipulation with force on the upper body, I suspect my harness is the problem: I random-walk the 14 arm joints as an adversarial disturbance and give the policy no say over them. If FALCON expects to command its upper body, or expects a force estimate at its arms that I am not providing, then I am running it in exactly the condition it was designed to compensate for, minus the compensation.
My adapter: 15 lower actions, 102-dim observation, 14 upper joints, ACTION_SCALE = 0.25, gait period 0.9 s, dt 0.02, a 1.5 s warmup, ang-vel scale 0.25, dof-vel scale 0.05, action clip 100, command limits vx ∈ [-0.6, 0.9], vy ±0.5, yaw ±0.8, and a position controller with CMD_KP_POS = 2.0. The checkpoint is g1_29dof.onnx.
Questions:
- Does FALCON's observation include anything about upper-body state or external force that I should be filling in rather than leaving at defaults?
- Is the 1.5 s warmup interfering with the crane release at 3 s?
- Is
g1_29dof.onnx the right export here?
A PR to policies/falcon/policy.cpp is welcome; I will re-run both engines and update the published table.
https://github.com/rhoyn/teleop-walking-benchmark
https://rhoyn.com/stable-walk
Hi, thanks for FALCON.
I ran 29 open-source Unitree G1 walking policies through one C++ harness and one task: a 60 s tour of 12 waypoints, 50 Hz control over a 2 ms step, a crane that releases after 3 s of shared stance, and a punch per segment (random joint, random direction, 0.08 s, up to 600 N). The policy owns 15 leg and waist joints; the 14 arm joints random-walk and cannot be used for balance.
falconfinished 12th of 29: 3 % MuJoCo / 6 % PhysX completed — but with a 51 cm position error and 17° yaw, which is better than several policies that completed four times as many runs.That combination is the whole reason for this issue. Low tracking error with few completions means it walks accurately and then falls, and given that FALCON is specifically about loco-manipulation with force on the upper body, I suspect my harness is the problem: I random-walk the 14 arm joints as an adversarial disturbance and give the policy no say over them. If FALCON expects to command its upper body, or expects a force estimate at its arms that I am not providing, then I am running it in exactly the condition it was designed to compensate for, minus the compensation.
My adapter: 15 lower actions, 102-dim observation, 14 upper joints,
ACTION_SCALE = 0.25, gait period 0.9 s, dt 0.02, a 1.5 s warmup, ang-vel scale 0.25, dof-vel scale 0.05, action clip 100, command limits vx ∈ [-0.6, 0.9], vy ±0.5, yaw ±0.8, and a position controller withCMD_KP_POS = 2.0. The checkpoint isg1_29dof.onnx.Questions:
g1_29dof.onnxthe right export here?A PR to
policies/falcon/policy.cppis welcome; I will re-run both engines and update the published table.https://github.com/rhoyn/teleop-walking-benchmark
https://rhoyn.com/stable-walk