Go2 / Go2W Locomotion Deployment¶
Joystick-driven locomotion (flat + rough) plus the wheel-legged Go2W variant. The hardware story for both is similar; this page calls out the deltas.
Observation contract¶
Group |
Dim |
Source on hardware |
|---|---|---|
Base linear velocity |
3 |
state estimator (KF over IMU + leg odometry); NOT raw integration |
Base angular velocity |
3 |
IMU gyro |
Projected gravity |
3 |
IMU orientation |
Joystick command (vx, vy, ωz) |
3 |
operator input |
Joint positions |
12 (Go2) / 16 (Go2W) |
encoder |
Joint velocities |
12 / 16 |
encoder velocity after the deploy controller’s filtering path |
Previous action |
12 / 16 |
last policy output |
Foot contact |
4 (Go2 only) |
contact sensor or estimated from foot height |
State estimator caveat
The policy is trained against the observation terms emitted by the selected env owner. If deployment cannot provide the same base-velocity signal, train a variant whose actor observation matches the estimator you can run on the robot (see HIM-PPO at HIM-PPO).
Rough terrain caveat¶
For go2_joystick_rough the policy expects elevated terrain features. On a
flat indoor surface the rough-trained policy will be more conservative
than necessary but should still be validated through replay before hardware
bring-up. For deployment on slopes / debris:
Choose ground-friction DR ranges from measured deployment surfaces.
Train with terrain curriculum: see Procedural Terrain.
Go2W wheel ↔ leg dispatch¶
Go2W policies output continuous wheel velocity for the rear wheel
joints and position targets for the legs. The action vector ordering
must match src/unilab/assets/robots/go2w/. Verify with unilab-export-scene.