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

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions