Skip to main content
MCAP is the open standard container format for multimodal robotics data. Avala natively supports MCAP along with legacy ROS bag formats, so you can upload recordings from your robot fleet and annotate camera images, lidar point clouds, radar scans, and more — all time-synchronized in a single workspace.

Supported Container Formats

FormatExtensionNotes
MCAP.mcapRecommended. Supports all serialization formats.
ROS 1 Bag.bagAutomatic conversion to MCAP on upload.
ROS 2 Bag.db3 / folderSQLite-based storage. Automatic conversion on upload.

Supported Message Types

Avala recognizes the following message schemas out of the box. Messages that match these types are automatically parsed and rendered in the annotation editor.

Camera & Image

Message TypeFrameworkDescription
sensor_msgs/ImageROS 1 / ROS 2Uncompressed image with encoding and dimension metadata.
sensor_msgs/CompressedImageROS 1 / ROS 2JPEG or PNG compressed image.
foxglove.CompressedImageFoxgloveFoxglove schema for compressed images with timestamp and frame ID.

3D Point Clouds & Lidar

Message TypeFrameworkDescription
sensor_msgs/PointCloud2ROS 1 / ROS 2Point cloud with arbitrary fields (x, y, z, intensity, ring, etc.).
foxglove.PointCloudFoxgloveFoxglove schema for point clouds with typed field descriptors.
sensor_msgs/LaserScanROS 1 / ROS 22D lidar scan with range and intensity arrays.

Radar

Message TypeFrameworkDescription
radar_msgs/RadarScanROS 2Radar detections with range, azimuth, elevation, and velocity.

Transforms & Localization

Message TypeFrameworkDescription
tf2_msgs/TFMessageROS 1 / ROS 2Transform tree messages for sensor-to-vehicle coordinate transforms.
foxglove.FrameTransformFoxgloveFoxglove schema for frame transforms with parent/child relationships.
sensor_msgs/NavSatFixROS 1 / ROS 2GPS fix with latitude, longitude, altitude, and covariance.

IMU

Message TypeFrameworkDescription
sensor_msgs/ImuROS 1 / ROS 2Orientation, angular velocity, and linear acceleration from an IMU.

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 annotate (e.g., /camera/front/image_raw, /lidar/points).
  5. Avala indexes the selected topics by timestamp and creates annotatable frames.
For large files, you can also upload via the API:
curl -X POST https://server.avala.ai/api/v1/datasets/{dataset_id}/upload \
  -H "X-Avala-Api-Key: your-api-key" \
  -F "file=@recording.mcap"

Multi-Camera Setup

Autonomous vehicles and robots typically record multiple camera streams. Avala supports multi-camera annotation with synchronized playback:
  1. Upload an MCAP file that contains multiple image topics (e.g., /cam_front, /cam_left, /cam_right, /cam_rear).
  2. During topic selection, choose all camera topics you want to annotate.
  3. Avala groups frames by timestamp across topics, so annotators see all camera views for a given moment side by side.
  4. Annotations on one view are automatically projected to other views when calibration data is available via tf2_msgs/TFMessage or foxglove.FrameTransform.

Custom Schemas

Beyond the built-in message types, Avala can parse custom messages defined with:
  • Protobuf — Include .proto definitions in the MCAP file’s schema registry. Avala will decode messages using the embedded schema.
  • JSON Schema — MCAP files using JSON serialization with embedded JSON Schema definitions are parsed automatically.
  • ROS Message Definitions — Standard .msg files embedded in ROS bags are used for decoding.
Custom messages appear as raw data in the annotation editor. To enable full rendering (e.g., custom overlays or 3D primitives), contact support.

Best Practices for Recording

To get the best results when recording data for annotation in Avala:
  • 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.
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.