Telemetry

Ark can transmit telemetry to offboard services (the catalog) periodically through its TelemetryStage. This is expected to mostly be used to store reporting and other information about how your robots are doing in the field, giving you a live (or historical) view of data without using and offloading logs.

This will transmit data in such a way as to handle lossly links or power failures without dropping data. Telemetry is only transmitted if you have the TelemetryStage added to your pipeline.

Major Concepts

The telemetry stage will listen on two major channels:

  • values - These are key/values (where values can be a double or a string)
  • events - These are concrete events (such as starting a log, going into auto, etc).

The stage will wait on startup to receive robot information (the SetTelemetryRobot over its robot channel. This includes robot serial number and other optional metadata.

All values and events are stored associated with a particular “session”. Each time you start a pipeline, a new session is generated. These are associated with a robot serial number.

Values

Values are transmitted with the SetTelemetryValues message. They consist of a dictionary of key/values, where values can be numeric or strings.

These are stored on the backend, and allow you to look over anything from simple properties, such as versions, to things like odometry or other values that change over time.

Events

Events are transmitted with the TelemetryEvent message, and allow you to specify a capture time, type, human-readble description, and JSON payload.

These are all stored and viewable through the catalog.

For example, the annotation stage will automatically emit these events for each annotation that is added to the system, allowing you to see operator comments in real time. The log writer/offloader will also emit events as logs are started/stopped/offloaded, allowing you to discover logs that are associated with a session.

Backend

All telemetry is transmitted to the catalog (either the global catalog or your own instance of a catalog). You also need to specify the organization GUID, so that your data is kept private to your organization, and not made public.