Skip to main content
We recommend a two-stage evaluation approach: open-loop evaluation followed by closed-loop evaluation to comprehensively assess model quality.

Open-loop evaluation

Open-loop evaluation provides an offline assessment by comparing the model’s predicted actions against ground truth data from your dataset.

Running the evaluation

Execute the evaluation script with your trained model:

Parameters

Interpreting results

The evaluation generates a visualization saved at /tmp/open_loop_eval/traj_{traj_id}.jpeg, which includes:
  • Ground truth actions vs. predicted actions
  • Unnormalized mean squared error (MSE) metrics
  • Unnormalized mean absolute error (MAE) metrics
These plots provide a quick indicator of the policy’s accuracy on the training dataset distribution.
The evaluation script outputs both MSE and MAE metrics in the console for each trajectory, as well as average metrics across all evaluated trajectories.

Closed-loop evaluation

After validating performance through open-loop evaluation, test your model in closed-loop environments.

Server-client architecture

GR00T uses a server-client architecture for closed-loop evaluation, which allows you to:
  • Run policy inference on a GPU server while controlling the robot/simulation from a different machine
  • Avoid dependency conflicts between the policy and environment code
  • Easily switch between different policies without modifying environment code

Starting the policy server

Launch the server using the run_gr00t_server.py script:

Parameters

Using the policy client

On the client side, use PolicyClient to connect to the server:

Running simulation evaluation

For simulation environments, use the rollout_policy.py script:

Parameters

Debugging with ReplayPolicy

When developing a new environment integration or debugging your inference loop, you can use ReplayPolicy to replay recorded actions from an existing dataset:
ReplayPolicy is an excellent first step when integrating a new environment. Debug with replay first, then switch to model inference once the pipeline is validated.
The server will replay actions from the first episode of the dataset. Use policy.reset(options={"episode_index": N}) on the client to switch to a different episode. If your environment is set up correctly, replaying ground-truth actions should achieve high (often 100%) success rates. Low success rates indicate issues with:
  • Environment reset state not matching the dataset
  • Observation preprocessing differences
  • Action space mismatches

Available benchmarks

GR00T supports evaluation on several public benchmarks:

Zero-shot evaluation

  • RoboCasa: General manipulation tasks
  • RoboCasa GR1 Tabletop Tasks: GR1-specific tabletop manipulation

Fine-tuned evaluation

  • G1 LocoManipulation: Whole-body control tasks
  • LIBERO: Long-horizon manipulation benchmarks
  • SimplerEnv: Google robot and WidowX environments
  • BEHAVIOR: Household tasks with the Galaxea R1 Pro
  • PointNav: Navigation tasks
  • SO-100: Custom robot demonstrations
Refer to the examples/ directory for detailed setup instructions for each benchmark.