Skip to content

Connect to live data sources with the Flora WebSocket, Rosbridge, and Velodyne Lidar connections. You can also load remote data files via URL.

Supported formats

Supported formatsConfiguration options
Flora WebSocketWebSocket URL
RosbridgeWebSocket URL
ROS 1ROS 1 (Desktop app only)ROS_MASTER_URI and ROS_HOSTNAME
Velodyne LidarVelodyne (Desktop app only)UDP port
Remote fileRequires CORS setup

Limitations

When connecting to a live robotics stack, each connection will have different capabilities.

Flora WebSocket (recommended)RosbridgeROS 1
Stream ROS 1 data
Stream ROS 2 data
Stream custom data
Custom message schemas
Publish messages✓ (ROS 1, ROS 2, JSON)
Call services
Call actions
Read and set parameterssee discussion

Cross-Origin Resource Sharing (CORS) setup

To load remote data files, you must host your files in a server or cloud provider that supports Cross-Origin Resource Sharing (CORS) and accepts range requests.

When loading remote data into Flora for playback and analysis, we recommend hosting your files in a cloud provider like Amazon Simple Storage Service (S3), Google Cloud Storage (GCS), or Azure Storage. You can also host files on your own server, but it may be difficult and time-consuming to set up support for Cross-Origin Resource Sharing (CORS) and range requests.

If your data is sensitive, generate and use a signed URL – make sure that you point to the resource directly, as redirects will not work with CORS:

This signed URL will work for a limited period of time. You can set up your server to only sign URLs for authenticated users.

Finally, set up your CORS configuration. Check out the following example of a Terraform config for an S3 bucket (docs):

cors_rule {
  allowed_methods = ["GET", "HEAD", "OPTIONS"]
  allowed_origins = ["https://app.flora.fan"]
  allowed_headers = ["*"]
  expose_headers = ["ETag", "Content-Type", "Accept-Ranges", "Content-Length"]
}

And a Terraform config for a GCS bucket (docs):

cors {
  origin = ["https://app.flora.fan"]
  method = ["GET", "HEAD", "OPTIONS"]
  response_header = ["ETag", "Content-Type", "Accept-Ranges", "Content-Length"]
}

Flora is developed on the source code of Foxglove and Lichtblick, adhering to the MPL 2.0 license.