Principle:Isaac sim IsaacGymEnvs Results Collection
| Sources | Domains | Last Updated |
|---|---|---|
| IsaacGymEnvs, rlgames_utils.py | Logging, Evaluation | 2026-02-15 00:00 GMT |
Overview
Pattern for intercepting, aggregating, and reporting per-episode statistics from vectorized RL environments during training and evaluation.
Description
The results collection system processes environment info dicts emitted on episode completion, tracks cumulative metrics across episodes, and reports aggregated statistics (mean rewards, episode lengths, custom metrics) via TensorBoard. Custom per-task metrics are passed through the extras dict mechanism.
The collection pipeline operates in three stages:
- Interception -- the AlgoObserver's process_infos() method is called after each environment step with the info dict and done indices
- Aggregation -- episode-level metrics are accumulated across all completed episodes within a reporting window
- Reporting -- after_print_stats() computes means across accumulated episodes and writes them to TensorBoard under the Episode/ prefix
This design allows each task to define custom metrics (e.g., success rate, distance to goal, contact forces) without modifying the training loop. Tasks populate the extras dict in their post_physics_step() or compute_observations() methods, and the observer automatically picks them up.
Usage
When monitoring training progress or collecting evaluation statistics. The observer is attached to the Runner during build_runner() and operates transparently throughout training.
Theoretical Basis
Observer pattern with event-driven metrics aggregation -- episode completion triggers info processing, and periodic reporting aggregates across all completed episodes. This decouples metric collection from the training algorithm, allowing the same observer to work with any rl_games-compatible agent (PPO, SAC, AMP, etc.).