Skip to content

Add procedural terrain generation for elevation (#28, #19)#39

Open
lycocorax wants to merge 2 commits intoUWRobotLearning:mainfrom
lycocorax:elevation-procedural-terrain
Open

Add procedural terrain generation for elevation (#28, #19)#39
lycocorax wants to merge 2 commits intoUWRobotLearning:mainfrom
lycocorax:elevation-procedural-terrain

Conversation

@lycocorax
Copy link

@lycocorax lycocorax commented Feb 24, 2026

Fix NaN actions during training (#28) by replacing static elevation terrain with procedural height-field generation (#19). Requires noise == 1.2.2. Elevation RL now defaults to procedural terrain (USD terrain retained for play config).

Procedural terrain generation

  • Updated MushrElevationRLEnvCfg to use IsaacLab's height field terrain generator, configurable via NoiseHfCfg
    • Simplex noise-based height field generation implemented in create_noise_hf
    • Procedural road generation (generate_roads = True) in add_roads_v2
    • Terrain is split into 4x4 subterrains with height scaling parameterized by curriculum difficulty

Reward, termination, pose sampling updates

  • Fixed NaN in actions by ensuring valid init poses using TerrainBasedPose2dCommandCfg and terrain-based flat_patch_sampling configs
  • Cleaned up some unused or legacy terrain-dependent reward terms
  • Fixed an issue of circular motion / reward hacking by introducing a curriculum term for decreasing velocity-based reward weight to a lower bound, as well as adding termination penalties
image

@lycocorax lycocorax marked this pull request as draft March 11, 2026 00:59
@lycocorax lycocorax force-pushed the elevation-procedural-terrain branch from 36431b5 to f1c1a6a Compare March 16, 2026 07:17
@lycocorax lycocorax marked this pull request as ready for review March 16, 2026 07:42
Copy link
Contributor

@geiko246 geiko246 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is noise==1.2.2 still required? if so, can you put that in the setup.py for wheeledlab_tasks?

Also potentially include a wandb run/report to show expected results.

env.reward_manager.set_term_cfg(reward_term_name, term_cfg)


def decrease_reward_weight_over_time(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think this method might exist already (not sure if it's in our version but worth checking to reduce lines):
https://isaac-sim.github.io/IsaacLab/main/source/how-to/curriculums.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants