Skip to content

Work: G1 procedural slope rough terrain (Phase 1) #596

Description

@fridayfang

Work type

feature

Area

G1

Problem

UniLab already implements procedural terrains (slopes, stairs, etc.) in src/unilab/terrains/ and wires them for Go2/Go1/Go2W via tasks such as Go2JoystickRough (heightfield generation, terrain spawn, height scan).

G1 walk currently only supports static rough terrain via scene_rough.xml (g1_walk_rough + SAC). There is no G1 task that uses the procedural terrain generator.

This limits G1 locomotion on slopes/stairs and is related to the broader G1 WBT / migration exploration in #571.

Phase 1 scope: slopes only (no stairs).

Deliverable

  • New registered env task: G1WalkSlopeRough with slope-only sub-terrains: hf_pyramid_slope, hf_pyramid_slope_inv, and optional flat
  • New owner YAML: conf/ppo/task/g1_walk_slope_rough/mujoco.yaml (PPO + MuJoCo first)
  • Reference implementation: src/unilab/envs/locomotion/go2/rough.py
  • Tests: terrain spawn, height scan obs dimensions, Hydra compose
  • Short doc note with training/eval commands

Phase 1 success criteria: not only that the training pipeline runs, but that PPO learns a policy that can traverse slope patches with observable stable locomotion (eval/demo).

Non-goals for Phase 1: stairs (pyramid_stairs*), Motrix backend, SAC owner (follow-up issues).

Definition of done

  • MuJoCo visualization works: uv run scripts/visualize_task_env.py --task G1WalkSlopeRough --num_envs 4
  • A trained PPO policy can traverse procedural slope terrain (not merely a non-crashing smoke run):
    • Stable locomotion on hf_pyramid_slope / hf_pyramid_slope_inv without immediate fall/reset
    • Reproducible train + eval commands documented in the PR (and/or demo video / W&B curve)
    • Acceptance metrics agreed with maintainers in the PR (e.g., mean episode length, mean reward, or continuous steps without terminate)
  • New unit/integration tests pass; make check && make test green locally
  • Support matrix or task doc updated
  • No stairs sub-terrains in this PR

Dependencies and blockers

Proposed owner

fridayfang

Validation plan

  • Unit tests: G1 slope terrain spawn + height scan contract (mirror tests/envs/locomotion/test_go2_terrain_spawn.py)
  • Training: sufficient PPO iterations on slope terrains to obtain a traversing policy (iteration count to align with maintainers in the PR)
  • Policy acceptance: eval/play on slope patches shows stable traversal (commands + checkpoint path and/or short video)
  • Visual check: visualize_task_env.py confirms slope heightfields materialize correctly

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions