> ## 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.

# Panel Types

> Reference for the 8 panel types in Avala's multi-sensor viewer

The multi-sensor viewer assigns each topic to one of 8 panel types based on the message schema and topic name. This page describes each panel type, what triggers it, and what it displays.

## Image Panel

Renders camera feeds from image topics. This is the most common panel for autonomous vehicle and robotics recordings.

**Triggered by:** `sensor_msgs/Image`, `sensor_msgs/CompressedImage`, `foxglove.CompressedImage`, `foxglove.RawImage`, or topics with `image` / `camera` in the name.

**Capabilities:**

* Displays uncompressed and compressed (JPEG, PNG) images
* Multi-camera grid layout when a recording contains multiple image topics
* Frame-by-frame navigation synchronized with the timeline
* Supports annotation overlays (bounding boxes, polygons, keypoints)
* LiDAR-to-camera projection when transform data is available

## 3D / Point Cloud Panel

Renders point cloud data in an interactive 3D viewport. Supports LiDAR, radar, and any data that produces 3D points.

**Triggered by:** `sensor_msgs/PointCloud2`, `foxglove.PointCloud`, or topics with `lidar` / `pointcloud` / `velodyne` / `points` / `pose` / `odom` / `tf` in the topic name. Also matches schemas containing `pose` / `transform` / `odometry`. `sensor_msgs/LaserScan` and `radar_msgs/RadarScan` are routed here when the topic name contains a matching keyword.

**Capabilities:**

* Six visualization modes for coloring and filtering points
* Bird's-eye view, perspective view, and side views
* Orbit, pan, and zoom camera controls
* 3D cuboid annotation with full position, dimension, and rotation control
* Point cloud intensity, ring, and custom field coloring

## Plot Panel

Displays time-series charts for numeric data. Useful for IMU readings, velocities, temperatures, and any scalar or vector measurement.

**Triggered by:** `sensor_msgs/Imu`, schemas containing `twist` / `vector3` / `float` / `int`, or topics with `imu` / `cmd_vel` / `battery` / `temperature` / `sensor` in the name. The `imu` keyword is matched in both schema and topic names.

**Capabilities:**

* Line charts showing values over time
* Multiple fields plotted simultaneously (e.g., x, y, z components of angular velocity)
* Cursor linked to the global timeline — scrubbing updates the chart position
* Zoom and pan within the time range

## Raw Messages Panel

Displays any message as a JSON tree view. This is the fallback panel for topics that do not match a recognized schema.

**Triggered by:** Available for all topics. Used automatically when no other panel type matches.

**Capabilities:**

* Expandable JSON tree showing every field in the message
* Updated in real time as the timeline advances
* Useful for debugging, inspecting unknown schemas, and verifying message contents
* Supports search within message fields

## Log Panel

Displays text log output in a scrollable, filterable list. Commonly used for ROS node logs and diagnostic messages.

**Triggered by:** Schemas or topics containing `log` / `rosout`.

**Capabilities:**

* Scrollable log output with timestamps
* Filterable by severity level (debug, info, warning, error, fatal)
* Color-coded severity indicators
* Synchronized with the global timeline

## Map Panel

Displays geographic data on an interactive map. Shows vehicle or robot trajectories and localization data.

**Triggered by:** `sensor_msgs/NavSatFix`, schemas or topics containing `navsat` / `gps`, or topics with `fix` in the name.

**Capabilities:**

* Interactive map with satellite and street views
* Vehicle/robot path traced from GPS data
* Current position indicator synchronized with the timeline
* Zoom and pan controls

## Gauge Panel

Displays a single numeric value with an optional range. Designed for scalar sensor readings that are best understood as a current value rather than a time series.

**Triggered by:** Manual panel type assignment. The Gauge panel is not auto-assigned by topic detection — topics with `battery`, `temperature`, or `sensor` keywords are routed to the Plot panel by default. You can switch any numeric topic to Gauge mode using the panel type selector.

**Capabilities:**

* Large, readable current-value display
* Optional minimum and maximum range indicators
* Updated in real time as the timeline advances
* Suitable for battery level, temperature, signal strength, and similar readings

## State Transitions Panel

Visualizes discrete state changes over time. Shows when a system transitioned between states and how long it remained in each state.

**Triggered by:** Schemas or topics containing `state`.

**Capabilities:**

* Horizontal timeline showing state durations as colored segments
* State labels displayed within each segment
* Synchronized with the global timeline cursor
* Useful for visualizing operating modes, error states, and system lifecycle events

## Detection Priority

Panel type assignment follows a strict priority order:

1. **Schema name** — If the message schema matches a known type (e.g., `sensor_msgs/PointCloud2`), the corresponding panel is used. This is the most reliable method.
2. **Topic name keywords** — If the schema is not recognized, the topic name is scanned for keywords (e.g., a topic named `/front_camera/raw` matches the `camera` keyword and gets an Image panel).
3. **Raw Messages fallback** — If neither the schema nor the topic name produces a match, the topic is assigned to the Raw Messages panel.

See the [auto-detection keyword table](/docs/visualization/mcap-ros/supported-messages#auto-detection-logic) for the full list of keyword-to-panel mappings.

## Manual Override

You are not locked into the auto-detected panel type. In the multi-sensor viewer, you can change the panel type for any topic:

1. Open the panel settings for the topic you want to change.
2. Select a different panel type from the dropdown.
3. The topic is re-rendered in the new panel immediately.

This is useful when auto-detection assigns a topic to a generic panel (like Raw Messages) and you know it should be displayed differently.

<Warning>
  Changing a topic to an incompatible panel type (e.g., assigning a point cloud topic to an Image panel) may result in rendering errors. Use manual override only when you know the data is compatible with the target panel.
</Warning>

## Next Steps

<CardGroup cols={2}>
  <Card title="" icon="list-check" href="/docs/visualization/mcap-ros/supported-messages">
    <p style={{fontWeight: 600, fontSize: '18px', marginBottom: '4px', marginTop: '8px', color: 'inherit'}}>Supported Messages</p>
    <p style={{fontSize: '14px', marginTop: '0px', opacity: 0.6}}>See which message schemas trigger each panel type.</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}}>Use Protobuf, JSON Schema, or ROS .msg definitions for custom message types.</p>
  </Card>
</CardGroup>
