in robogym/utils/multi_goal_tracker.py [0:0]
def update_info(self, info: dict, goal_info: dict) -> dict:
goal_type = goal_info.get("goal", {}).get("goal_type", "generic")
unreachable_state_persists = (
self._consecutive_steps_with_goal_unreachable
>= self.max_steps_goal_unreachable
)
# Extract this here since self.reset_goal() changes the counter. This wrapper is crazy.
info["consecutive_steps_with_success"] = self._consecutive_steps_with_success
info["sub_goal_is_successful"] = self._sub_goal_is_successful
info["sub_goal_type"] = goal_type
info["steps_since_last_goal"] = self._steps_since_last_goal
info["trial_success"] = self._trial_success
info["goals_so_far"] = self._goals_so_far
info["successes_so_far"] = self._successes_so_far
info["successes_so_far_by_goal_type"] = self._successes_so_far_by_goal_type
info["steps_by_goal_type"] = self._steps_by_goal_type
info["env_crash"] = self._env_crash
info["goal_terminally_unreachable"] = unreachable_state_persists
info["steps_per_success"] = self._steps_per_success(
self._steps, self._steps_since_last_goal, self._successes_so_far
)
info["steps_per_success_by_goal_type"] = {
goal: self._steps_per_success(
self._steps_by_goal_type[goal],
int(goal_type == goal) * self._steps_since_last_goal,
self._successes_so_far_by_goal_type[goal],
)
for goal in self._steps_by_goal_type
}
return info