Skip to content

Visualization

Step 5 – Visualize and Inspect the Learned Policy

After (or even during) training, you can:

  • Run the play script to visually inspect what the policy has learned.
  • Use TensorBoard to inspect training curves and debug issues.

All commands in this step are run from the extension project root (<G1_STAND_ROOT>).


5.1 Play the policy in Isaac Lab

Run play script (loads latest checkpoint)

From <G1_STAND_ROOT>, run:

python scripts/rsl_rl/play.py --task G1-Stand-Flat-Play-v0

This loads the latest checkpoint for g1_stand_flat and opens the Isaac Lab viewer.

Load a specific run/checkpoint

python scripts/rsl_rl/play.py --task G1-Stand-Flat-Play-v0 --load_run 2026-03-03_17-31-37 --load_checkpoint model_1400.pt
Adapt --load_run and --load_checkpoint to your logs/rsl_rl/g1_stand_flat/ run folder and checkpoint file. Check python scripts/rsl_rl/play.py --help if your Isaac Lab version uses different flags.


Conceptually, the play environment:

  • Loads a trained checkpoint.
  • Spawns one (or a few) G1 humanoids on flat ground.
  • Lets you observe whether the robot can maintain an upright, still stance without falling.

What you should see

When you run the play script, the Isaac Lab viewer opens with the G1 humanoid on a flat grid. When training has gone well, you should see:

G1 humanoid in Isaac Lab play viewer

Figure: Unitree G1 in the Isaac Lab play environment—standing on the flat grid with the simulation viewport and scene panels.

  • A G1 humanoid robot spawned on a flat plane.
  • The robot generally upright, with only small corrective motions.
  • Occasional small sways or foot adjustments, but no continuous walking or drifting.

If the robot immediately falls or walks away, go to the troubleshooting step and review the checklist for “Robot not standing still”.

If you have multiple runs and need to load a specific checkpoint, use the Load a specific run/checkpoint note above; adapt --load_run and --load_checkpoint to your run folder and file. Run python scripts/rsl_rl/play.py --help if your Isaac Lab version uses different flags.

Playing while training

You can run play.py while training is running (for example, with a different checkpoint) to:

  • Get a qualitative sense of how well the robot is standing.
  • Compare different runs or checkpoints.

Just be careful with GPU memory:

  • Running training and play simultaneously will increase memory usage.

Checklist

  • Does the robot remain upright for most of the episode?
  • Does it only make small corrective movements rather than walking?
  • If not, see Troubleshooting to iterate on rewards and PPO settings.

5.2 Inspect training with TensorBoard

RSL-RL writes TensorBoard logs under logs/rsl_rl/g1_stand_flat/ (timestamped runs with checkpoints, YAML configs, and event files).

Install TensorBoard

pip install tensorboard

Launch TensorBoard (then open http://localhost:6006)

From <G1_STAND_ROOT>:

tensorboard --logdir logs/rsl_rl/g1_stand_flat --port 6006

Then open in a browser: http://localhost:6006

You should see dashboards for:

  • Scalars – episode rewards, losses, KL, learning rate, etc.
  • Histograms (if enabled) – distributions of weights/activations over time.

What the TensorBoard view should look like

When TensorBoard is reading the training logs correctly, the Scalars tab should look roughly like this:

Screenshot: TensorBoard reward charts

Figure: Example TensorBoard Scalars view for the G1 standing task, showing reward curves and related training signals over time.

Verifying that logs exist

If TensorBoard says “No dashboards are active for the current data set”, check that event files exist:

ls logs/rsl_rl/g1_stand_flat/*/events.out.tfevents*
  • If you see one or more events.out.tfevents... files, TensorBoard should work with the --logdir command above.
  • If you see only .pt and .yaml files:
  • Ensure you ran training long enough for logs to be written.
  • Verify that TensorBoard is installed in the same environment as training.

Common mistake – pointing TensorBoard at a checkpoint file

TensorBoard expects a directory containing events.out.tfevents... files, not a .pt checkpoint.
Always use:

tensorboard --logdir logs/rsl_rl/g1_stand_flat
and not something like:
tensorboard --logdir logs/rsl_rl/g1_stand_flat/2026-03-03_17-31-37/model_1400.pt