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

# MCAP & ROS

> Work with MCAP files and ROS bag data in Avala

Avala natively supports MCAP along with ROS 1 and ROS 2 bag formats. Upload recordings from your robot fleet and visualize camera images, LiDAR point clouds, radar scans, and more — all time-synchronized in a configurable multi-panel viewer. Then annotate the same data without switching tools.

<Tip>
  MCAP & ROS visualization is now a first-class feature in Avala. For the full documentation, see the **[Visualization](/docs/visualization/overview)** section.
</Tip>

## Quick Links

<CardGroup cols={2}>
  <Card title="" icon="play" href="/docs/visualization/mcap-ros/overview">
    <p style={{fontWeight: 600, fontSize: '18px', marginBottom: '4px', marginTop: '8px', color: 'inherit'}}>MCAP & ROS Overview</p>
    <p style={{fontSize: '14px', marginTop: '0px', opacity: 0.6}}>Supported formats, upload workflow, and multi-sensor playback</p>
  </Card>

  <Card title="" icon="list" href="/docs/visualization/mcap-ros/supported-messages">
    <p style={{fontWeight: 600, fontSize: '18px', marginBottom: '4px', marginTop: '8px', color: 'inherit'}}>Supported Message Types</p>
    <p style={{fontSize: '14px', marginTop: '0px', opacity: 0.6}}>Complete reference of ROS and Foxglove message types</p>
  </Card>

  <Card title="" icon="table-columns" href="/docs/visualization/mcap-ros/panels">
    <p style={{fontWeight: 600, fontSize: '18px', marginBottom: '4px', marginTop: '8px', color: 'inherit'}}>Panel Types</p>
    <p style={{fontSize: '14px', marginTop: '0px', opacity: 0.6}}>8 panel types for visualizing different sensor data</p>
  </Card>

  <Card title="" icon="code" href="/docs/visualization/mcap-ros/custom-schemas">
    <p style={{fontWeight: 600, fontSize: '18px', marginBottom: '4px', marginTop: '8px', color: 'inherit'}}>Custom Schemas</p>
    <p style={{fontSize: '14px', marginTop: '0px', opacity: 0.6}}>Protobuf, JSON Schema, and ROS .msg support</p>
  </Card>
</CardGroup>

## Supported Container Formats

| Format    | Extension       | Notes                                                 |
| --------- | --------------- | ----------------------------------------------------- |
| MCAP      | `.mcap`         | Recommended. Supports all serialization formats.      |
| ROS 1 Bag | `.bag`          | Automatic conversion to MCAP on upload.               |
| ROS 2 Bag | `.db3` / folder | SQLite-based storage. Automatic conversion on upload. |

## Upload Workflow

1. Navigate to **Mission Control > Datasets** and create a new dataset (or select an existing one).
2. Click **Upload** and select your `.mcap`, `.bag`, or `.db3` files.
3. Avala parses the file, discovers topics, and presents a topic selection screen.
4. Choose the topics you want to visualize and annotate.
5. Avala indexes the selected topics by timestamp and creates annotatable frames.

For large files, you can also upload via the API:

```bash theme={null}
curl -X POST https://api.avala.ai/api/v1/datasets/{dataset_id}/upload \
  -H "X-Avala-Api-Key: your-api-key" \
  -F "file=@recording.mcap"
```

## Best Practices for Recording

* **Use MCAP** as your container format when possible. It has the smallest overhead and supports all serialization frameworks.
* **Include transform messages** (`/tf` and `/tf_static`) so Avala can resolve coordinate frames between sensors.
* **Record compressed images** (`sensor_msgs/CompressedImage`) to reduce file sizes without losing annotation quality.
* **Use consistent topic naming** across your fleet so datasets from different vehicles can be combined.
* **Set accurate timestamps** on all messages. Avala relies on message timestamps for frame synchronization, not wall-clock time.
* **Embed schema definitions** in the MCAP file. This ensures Avala can decode every message without external dependencies.

<Tip>
  MCAP files are processed server-side during upload. Large files (10 GB+) may take several minutes to index. You will receive a notification in Mission Control when processing is complete.
</Tip>
