Replies: 4 comments
-
Thank you for posting this. I'm reviewing with the team which is the intended behavior. |
Beta Was this translation helpful? Give feedback.
-
It is intended as the curriculum implemented is a game-based curriculum where at the end of the episode, the performance of the agent is evaluated and its difficulty is adjusted accordingly. You are right that if you want this to be triggered based on the simulation counter, then it does not happen properly. The proper solution might be to introduce different curriculum modes similar to event modes that get called based on the desired type of triggering. What do you think? |
Beta Was this translation helpful? Give feedback.
-
Yes, having different curriculum modes is a great idea! In fact, beyond episode-based or simulation-step-based triggers, I found the need for two additional types of triggers in my work:
What are your thoughts on these? |
Beta Was this translation helpful? Give feedback.
-
Thanks for following up. I will move this to our Discussions for the team to continue if they have any additional feedback. Thanks for your interest in Isaac Lab. @Mayankm96 for vis. Thanks. |
Beta Was this translation helpful? Give feedback.
-
Hello,
I have observed that curriculum elements in IsaacLab are only computed when at least one environment resets. Is this the intended behavior?
This seems counterintuitive to me because curriculum term updates do not necessarily rely on reset information and could be applied across all environments simultaneously. For example, consider the following function:
IsaacLab/source/isaaclab/isaaclab/envs/mdp/curriculums.py
Lines 21 to 36 in 91f53e2
I would expect the term weight to be updated as soon as
env.common_step_counter > num_steps
. However, if no environment resets for a while, the update does not occur.This issue becomes particularly noticeable when using custom curriculum terms that modify elements progressively based on
env.common_step_counter
. The effective task difficulty differs across learning libraries:• rsl_rl has
init_at_random_ep_len=True
, effectively triggering curriculum updates at every environment step.• skrl does not have such randomization, leading to less frequent updates (depending on decimation and episode length).
Suggested Fix (if unintended behavior)
If this behavior is unintended, I suggest modifying the curriculum update logic by moving:
IsaacLab/source/isaaclab/isaaclab/envs/manager_based_rl_env.py
Line 354 in 91f53e2
out of the
_reset_idx()
and the followingif
block:IsaacLab/source/isaaclab/isaaclab/envs/manager_based_rl_env.py
Lines 215 to 216 in 91f53e2
This way, curriculum updates will happen at every step by default. Reset-dependent changes can still be handled within specific term functions if necessary. I haven't tested this myself, though.
Looking forward to your insights!
Beta Was this translation helpful? Give feedback.
All reactions