> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cadenzalabs.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Physical AI at a glance

> Why training robots is a data problem first, and how simulation solves it.

**Physical AI** is the field of building models that perceive and act in the real,
physical world — robots that walk, grasp, balance, and recover. Unlike a chatbot,
a physical-AI policy has to close the loop with physics: it observes the world,
acts, and feels the consequences, thousands of times a second.

## Why it's hard

The bottleneck in physical AI is not model architecture — it's **data**.

* **Real-world data is expensive.** Every trajectory needs a physical robot, an
  operator, and time. Robots break, batteries die, and a single hour of teleop
  yields very few labeled examples.
* **Mistakes are costly.** A policy that fails on hardware can damage the robot
  or its surroundings, so you can't just let it explore freely in the real world.
* **Coverage is thin.** Rare events — slips, recoveries, edge-case terrain — are
  exactly what you need to train on, and exactly what you almost never capture.

A modern vision-language-action (VLA) policy wants millions of diverse,
well-labeled trajectories. Collecting those by hand on real hardware does not
scale.

## Simulation closes the gap

Cadenza's answer is **high-fidelity simulation as a data engine**. Inside a
MuJoCo-based physics core you can:

* Run thousands of missions in parallel, far faster than real time.
* Generate rare and dangerous scenarios on demand, with no hardware at risk.
* Log every tick — observations, actions, contacts, rewards — automatically.
* Score each rollout so the data arrives already labeled.

The result is a steady stream of clean, diverse trajectories that you can feed
straight into fine-tuning.

```mermaid theme={null}
flowchart LR
    SIM["Simulation<br/>1000s of missions"] --> LOG["Tick-by-tick logs"]
    LOG --> SCORE["Automatic scoring"]
    SCORE --> DATA[("Labeled<br/>trajectories")]
    DATA --> FT["Fine-tuning"]
```

## Closing the sim-to-real loop

Simulation is only useful if the policy survives contact with reality. Cadenza
keeps the simulated loop and the deployed loop **identical**, so the policy you
validated in sim is the one that runs on the robot — and real-world rollouts can
flow back in as data, tightening the loop with every deployment.

<Card title="The physical AI stack" icon="arrow-right" href="/labs/the-stack">
  The layers that turn data into a working robot — from models to infrastructure.
</Card>
