Table of Contents
Top
messages/result.proto
AvoidanceResult
Avoidance result generated by an avoidance model.
| Field | Type | Label | Description |
|---|
| actuation_vector | double | | actuation vector towards safe area |
BoundingBox
Bounding box associated with an object detection.
Defines the upper left and lower right corners of a detected object
in an image frame. Origin (0,0) is the top left corner of the input image.
(image_height, image_width) is the bottom right corner.
Also the class and confidence threshold associated with the box.
| Field | Type | Label | Description |
|---|
| y_min | double | | minimum y offset percentage with respect to image size [0.0-1.0] |
| x_min | double | | minimum x offset percentage with respect to image size [0.0-1.0] |
| y_max | double | | maximum y offset percentage with respect to image size [0.0-1.0] |
| x_max | double | | maximum x offset percentage with respect to image size [0.0-1.0] |
ComputeResult
Compute result generated by a compute server.
Detection
Object detection generated by a model.
| Field | Type | Label | Description |
|---|
| detection_id | uint64 | | can be multiple objects per frame |
| class_name | string | | class name of detection |
| score | double | | confidence score |
| bbox | BoundingBox | | bounding box |
DetectionResult
List of object detections.
| Field | Type | Label | Description |
|---|
| detections | Detection | repeated | list of detections |
| frame_id | uint64 | | frame corresponding to these detections |
FrameResult
Compute results generated by datasink modules
HSV
HSV values generated by a color filter.
Color filter represented by hue, saturation, and value Uses OpenCV ranges defined here.
| Field | Type | Label | Description |
|---|
| h | uint32 | | hue range is [0,179] |
| s | uint32 | | saturation range is [0,255] |
| v | uint32 | | value range is [0,255] |
SLAMResult
SLAM result generated by a SLAM model.
Top
messages/telemetry.proto
AlertInfo
Information about all vehicle warning and alerts.
BatteryInfo
Information about the vehicle battery.
| Field | Type | Label | Description |
|---|
| percentage | uint32 | | battery level [0-100]% |
CommsInfo
Future: information about the vehicle's communication links.
DriverTelemetry
Telemetry message for the vehicle, originating from the driver module.
This message outlines all the current information about the vehicle. It
is one of three messages (DriverTelemetry, Frame, MissionTelemetry)
that is broadcast to attached compute services.
Frame
Imaging sensor frames, originating from the driver module.
This message provides frame data from currently streaming imaging sensors. It
is one of three messages (DriverTelemetry, Frame, MissionTelemetry)
that is broadcast to attached compute services.
| Field | Type | Label | Description |
|---|
| timestamp | google.protobuf.Timestamp | | capture timestamp of the frame |
| data | bytes | | raw bytes representing the frame |
| h_res | uint64 | | horizontal frame resolution in pixels |
| v_res | uint64 | | vertical frame resolution in pixels |
| d_res | uint64 | | depth resolution in pixels |
| channels | uint64 | | number of channels |
| id | uint64 | | frame ID for future correlation |
| vehicle_info | VehicleInfo | | the vehicle that this telemetry corresponds to |
| position_info | PositionInfo | | positional info about the vehicle |
| gimbal_info | GimbalInfo | | status on attached gimbals and their orientations |
| imaging_sensor_info | ImagingSensorInfo | | information about the vehicle imaging sensors |
GPSInfo
Information about the vehicle GPS fix.
| Field | Type | Label | Description |
|---|
| satellites | uint32 | | number of satellites used in GPS fix |
GimbalInfo
Info of all attached gimbals.
| Field | Type | Label | Description |
|---|
| num_gimbals | uint32 | | number of connected gimbals |
| gimbals | GimbalStatus | repeated | list of connected gimbals |
GimbalStatus
Status of a gimbal.
ImagingSensorInfo
Information about all attached imaging sensors.
ImagingSensorStatus
Status of an imaging sensor.
Includes information about its type and resolution/stream settings.
| Field | Type | Label | Description |
|---|
| id | uint32 | | ID of the imaging sensor |
| type | ImagingSensorType | | type of the imaging sensor |
| active | bool | | indicates whether the imaging sensor is currently streaming |
| supports_secondary | bool | | indicates whether the imaging sensor supports background streaming |
| current_fps | uint32 | | current streaming frames per second |
| max_fps | uint32 | | maximum streaming frames per second |
| h_res | uint32 | | horizontal resolution |
| v_res | uint32 | | vertical resolution |
| channels | uint32 | | number of image channels |
| h_fov | uint32 | | horizontal FOV |
| v_fov | uint32 | | vertical FOV |
| gimbal_mounted | bool | | indicates if imaging sensor is gimbal mounted |
| gimbal_id | uint32 | | indicates which gimbal the imaging sensor is mounted on |
ImagingSensorStreamStatus
Information about all imaging sensor streams.
| Field | Type | Label | Description |
|---|
| stream_capacity | uint32 | | the total number of allowed simultaneously streaming cameras |
| num_streams | uint32 | | the total number of currently streaming cameras |
| primary_cam | uint32 | | ID of the primary camera |
| secondary_cams | uint32 | repeated | IDs of the secondary active cameras |
MissionInfo
Information about the current mission.
MissionTelemetry
Telemetry message for the mission, originating from the mission module.
This message outlines all current information about the mission. It
is one of three messages (DriverTelemetry, Frame, MissionTelemetry)
that is broadcast to attached compute services.
PositionInfo
Information about the vehicle position.
Includes home position, global position (only valid with a GPS fix), relative position (only available on some vehicles), current velocity, and the current setpoint.
SetpointInfo
Information about the current setpoint.
Provides the current setpoint for the vehicle. A setpoint is a position or velocity target
that the vehicle is currently moving towards. By default, when the vehicle is idle, this
setpoint is a position_body_sp object set to all zeros. The frame of reference for each
setpoint is implied by the name; e.g. velocity_neu_sp uses the NEU (North, East, Up)
reference frame and velocity_body_sp uses the body (forward, right, up) reference frame.
TelemetryStreamInfo
Information about the telemetry stream.
| Field | Type | Label | Description |
|---|
| current_frequency | uint32 | | current frequency of telemetry messages [Hz] |
| max_frequency | uint32 | | maximum frequency of telemetry messages [Hz] |
| uptime | google.protobuf.Duration | | uptime of the stream |
VehicleInfo
Information about the vehicle.
This includes the name, make, model and its current status (battery, GPS, comms, motion).
| Field | Type | Label | Description |
|---|
| name | string | | the vehicle that this telemetry corresponds to |
| model | string | | model of the vehicle |
| manufacturer | string | | manufacturer of the vehicle |
| motion_status | MotionStatus | | current status of the vehicle |
| battery_info | BatteryInfo | | battery info for the vehicle |
| gps_info | GPSInfo | | GPS sensor info for the vehicle |
| comms_info | CommsInfo | | communications info for the vehicle |
BatteryWarning
Battery warnings and alerts.
| Name | Number | Description |
|---|
| NONE | 0 | the vehicle is above 30% battery |
| LOW | 1 | the vehicle is below 30% battery |
| CRITICAL | 2 | the vehicle is below 15% battery |
CompassWarning
Compass warnings and alerts.
| Name | Number | Description |
|---|
| NO_COMPASS_WARNING | 0 | absolute heading is nominal |
| WEAK_HEADING_LOCK | 1 | absolute heading is available but may be incorrect |
| NO_HEADING_LOCK | 2 | no absolute heading available from the vehicle |
ConnectionWarning
Connection warnings and alerts.
| Name | Number | Description |
|---|
| NO_CONNECTION_WARNING | 0 | connection to remote server is nominal |
| DISCONNECTED | 1 | contact has been lost with the remote server |
| WEAK_CONNECTION | 2 | connection is experiencing interference or is weak |
GPSWarning
GPS fix warnings and alerts.
| Name | Number | Description |
|---|
| NO_GPS_WARNING | 0 | GPS readings are nominal and a fix has been achieved |
| WEAK_SIGNAL | 1 | weak GPS fix, expect errant global position data |
| NO_FIX | 2 | no GPS fix |
ImagingSensorType
Imaging sensor types.
| Name | Number | Description |
|---|
| RGB | 0 | RGB camera |
| STEREO | 1 | stereo camera |
| THERMAL | 2 | thermal camera |
| NIGHT | 3 | night vision camera |
| LIDAR | 4 | LIDAR sensor |
| RGBD | 5 | RGB-Depth camera |
| TOF | 6 | ToF (time of flight) camera |
| RADAR | 7 | RADAR sensor |
MagnetometerWarning
Magnetometer warnings and alerts.
| Name | Number | Description |
|---|
| NO_MAGNETOMETER_WARNING | 0 | magnetometer readings are nominal |
| PERTURBATION | 1 | the vehicle is experiencing magnetic perturbations |
MissionExecState
Execution state of the current mission.
| Name | Number | Description |
|---|
| READY | 0 | mission is ready to be executed |
| IN_PROGRESS | 1 | mission is in progress |
| PAUSED | 3 | mission is paused |
| COMPLETED | 4 | mission has been completed |
| CANCELED | 5 | mission was cancelled |
MotionStatus
Information about the motion of the vehicle.
| Name | Number | Description |
|---|
| MOTORS_OFF | 0 | motors of the vehicle are off |
| RAMPING_UP | 1 | motors of the vehicle are ramping |
| IDLE | 2 | the vehicle is on but idle |
| IN_TRANSIT | 3 | the vehicle is in motion |
| RAMPING_DOWN | 4 | motors of the vehicle are ramping down |
Top
services/compute_service.proto
AddDatasinksRequest
DatasinkInfo
Information about a datasink.
RemoveDatasinksRequest
SetDatasinksRequest
DatasinkLocation
Denotes where a datasink is located.
| Name | Number | Description |
|---|
| REMOTE | 0 | remote location (network hop required) |
| LOCAL | 1 | local location (IPC) |
| Name | Number | Description |
|---|
| SOURCE_UNSPECIFIED | 0 | default value |
| DRIVER_TELEMETRY | 1 | telemetry from the vehicle driver |
| MISSION_TELEMETRY | 2 | telemetry from the mission service |
| IMAGERY | 3 | imagery from the vehicle |
Compute
Used to configure datasinks for sensor streams.
This service is used to configure datasink endpoints for frames and
telemetry post-processing. It maintains an internal consumer list of
datasinks that the kernel broadcasts frames and telemetry to. RPC
methods within this service allow for manipulation of this list.
Top
services/control_service.proto
ArmRequest
ConnectRequest
DisarmRequest
DisconnectRequest
HoldRequest
ImagingSensorConfiguration
Configuration for an imaging sensor.
| Field | Type | Label | Description |
|---|
| id | uint32 | | target imaging sensor ID |
| set_primary | bool | | set this sensor as the primary stream |
| set_fps | uint32 | | target FPS for stream |
JoystickRequest
KillRequest
LandRequest
ReturnToHomeRequest
SetGimbalPoseRequest
SetGimbalPoseTargetRequest
SetGlobalPositionRequest
SetHeadingRequest
SetHomeRequest
SetRelativePositionRequest
SetVelocityRequest
TakeOffRequest
AltitudeMode
Altitude mode switch.
| Name | Number | Description |
|---|
| ABSOLUTE | 0 | meters above Mean Sea Level |
| RELATIVE | 1 | meters above takeoff position |
HeadingMode
Heading mode switch.
| Name | Number | Description |
|---|
| TO_TARGET | 0 | orient towards the target location |
| HEADING_START | 1 | orient towards the given heading |
PoseMode
Pose mode switch.
| Name | Number | Description |
|---|
| ANGLE | 0 | absolute angle |
| OFFSET | 1 | request data // Offset from current |
| VELOCITY | 2 | rotational velocities |
ReferenceFrame
Reference frame mode switch.
| Name | Number | Description |
|---|
| BODY | 0 | vehicle reference frame |
| NEU | 1 | NEU (North, East, Up) reference frame |
Control
Used for low-level control of a vehicle.
This service is hosted by the driver module and represents the global
control interface for the vehicle. Most methods called here will result
in actuation of the vehicle if it is armed (be careful!). Some methods,
like TakeOff, may take some time to complete. For this reason, it is
not advisable to set a timeout/deadline on the RPC call. However, to
ensure that the service is progressing, a client can either check
telemetry or listen for IN_PROGRESS response heartbeats which are
streamed back from the RPC while executing an operation.
| Method Name | Request Type | Response Type | Description |
|---|
| Connect | ConnectRequest | .steeleagle.protocol.common.Response | Connect to the vehicle. Connects to the underlying vehicle hardware. Generally, this method is called by the law authority on startup and is not called by user code. |
| Disconnect | DisconnectRequest | .steeleagle.protocol.common.Response | Disconnect from the vehicle. Disconnects from the underlying vehicle hardware. Generally, this method is called by the law authority when it attempts a driver restart and is not called by user code. |
| Arm | ArmRequest | .steeleagle.protocol.common.Response | Order the vehicle to arm. Arms the vehicle. This is required before any other commands are run, otherwise the methods will return FAILED_PRECONDITION. Once the vehicle is armed, all subsequent actuation methods will move the vehicle. Make sure to go over the manufacturer recommended vehicle-specific pre-operation checklist before arming. |
| Disarm | DisarmRequest | .steeleagle.protocol.common.Response | Order the vehicle to disarm. Disarms the vehicle. Prevents any further actuation methods from executing, unless the vehicle is re-armed. |
| Joystick | JoystickRequest | .steeleagle.protocol.common.Response | Send a joystick command to the vehicle. Causes the vehicle to accelerate towards a provided velocity setpoint over a provided duration. This is useful for fine-grained control based on streamed datasink results or for tele-operating the vehicle from a remote commander. |
| TakeOff | TakeOffRequest | .steeleagle.protocol.common.Response stream | Order the vehicle to take off. Causes the vehicle to take off to a specified take off altitude. If the vehicle is not a UAV, this method will be unimplemented. |
| Land | LandRequest | .steeleagle.protocol.common.Response stream | Order the vehicle to land. Causes the vehicle to land at its current location. If the vehicle is not a UAV, this method will be unimplemented. |
| Hold | HoldRequest | .steeleagle.protocol.common.Response stream | Order the vehicle to hold/loiter. Causes the vehicle to hold at its current location and to cancel any ongoing movement commands (ReturnToHome e.g.). |
| Kill | KillRequest | .steeleagle.protocol.common.Response stream | Orders an emergency shutdown of the vehicle motors. Causes the vehicle to immediately turn off its motors. If the vehicle is a UAV, this will result in a freefall. Use this method only in emergency situations. |
| SetHome | SetHomeRequest | .steeleagle.protocol.common.Response | Set the home location of the vehicle. Changes the home location of the vehicle. Future ReturnToHome commands will move the vehicle to the provided location instead of its starting position. |
| ReturnToHome | ReturnToHomeRequest | .steeleagle.protocol.common.Response stream | Order the vehicle to return to its home position. Causes the vehicle to return to its home position. If the home position has not been explicitly set, this will be its start position (defined as its takeoff position for UAVs). If the home position has been explicitly set, by SetHome, the vehicle will return to that position instead. |
| SetGlobalPosition | SetGlobalPositionRequest | .steeleagle.protocol.common.Response stream | Order the vehicle to move to a global position. Causes the vehicle to transit to the provided global position. The vehicle will interpret the heading of travel according to heading_mode: - TO_TARGET -> turn to face the target position bearing - HEADING_START -> turn to face the provided heading in the global position object. This will be the heading the vehicle maintains for the duration of transit. Generally only UAVs will support HEADING_START. The vehicle will move towards the target at the specified maximum velocity until the vehicle has reached its destination. Error tolerance is determined by the driver. Maximum velocity is interpreted from max_velocity as follows: - x_vel -> maximum horizontal velocity - y_vel -> ignored - z_vel -> maximum vertical velocity (UAV only) If no maximum velocity is provided, the driver will use a preset speed usually determined by the manufacturer or hardware settings. (UAV only) During motion, the vehicle will also ascend or descend towards the target altitude, linearly interpolating this movement over the duration of travel. The vehicle will interpret altitude from altitude_mode as follows: - ABSOLUTE -> altitude is relative to MSL (Mean Sea Level) - RELATIVE -> altitude is relative to take off position |
| SetRelativePosition | SetRelativePositionRequest | .steeleagle.protocol.common.Response stream | Order the vehicle to move to a relative position. Causes the vehicle to transit to the provided relative position. The vehicle will interpret the input position according to frame as follows: - BODY -> (x, y, z) = (forward offset, right offset, up offset) from current position - NEU -> (x, y, z) = (north offset, east offset, up offset) from start position The vehicle will move towards the target at the specified maximum velocity until the vehicle has reached its destination. Error tolerance is determined by the driver. Maximum velocity is interpreted from max_velocity as follows: - x_vel -> maximum horizontal velocity - y_vel -> ignored - z_vel -> maximum vertical velocity (UAV only) If no maximum velocity is provided, the driver will use a preset speed usually determined by the manufacturer or hardware settings. |
| SetVelocity | SetVelocityRequest | .steeleagle.protocol.common.Response stream | Order the vehicle to accelerate to a velocity. Causes the vehicle to accelerate until it reaches a provided velocity. Error tolerance is determined by the driver. The vehicle will interpret the input velocity according to frame as follows: - BODY -> (x_vel, y_vel, z_vel) = (forward velocity, right velocity, up velocity) - NEU -> (x_vel, y_vel, z_vel) = (north velocity, east velocity, up velocity) |
| SetHeading | SetHeadingRequest | .steeleagle.protocol.common.Response stream | Order the vehicle to set a new heading. Causes the vehicle to turn to face the provided global position. The vehicle will interpret the final heading according to heading_mode: - TO_TARGET -> turn to face the target position bearing - HEADING_START -> turn to face the provided heading in the global position object. |
| SetGimbalPose | SetGimbalPoseRequest | .steeleagle.protocol.common.Response stream | Order the vehicle to set the pose of a gimbal. Causes the vehicle to actuate a gimbal to a new pose. The vehicle will interpret the new pose type from pose_mode as follows: - ABSOLUTE -> absolute angle - RELATIVE -> angle relative to current position - VELOCITY -> angular velocities The vehicle will interpret the new pose angles according to frame as follows: - BODY -> (pitch, roll, yaw) = (body pitch, body roll, body yaw) - NEU -> (pitch, roll, yaw) = (body pitch, body roll, global yaw) |
| SetGimbalPoseTarget | SetGimbalPoseTargetRequest | .steeleagle.protocol.common.Response | Order the vehicle to set the pose of a gimbal asynchronously. Causes the vehicle to actuate a gimbal to a new pose. The vehicle will interpret the new pose type from pose_mode as follows: - ABSOLUTE -> absolute angle - RELATIVE -> angle relative to current position - VELOCITY -> angular velocities The vehicle will interpret the new pose angles according to frame as follows: - BODY -> (pitch, roll, yaw) = (body pitch, body roll, body yaw) - NEU -> (pitch, roll, yaw) = (body pitch, body roll, global yaw) |
| ConfigureImagingSensorStream | ConfigureImagingSensorStreamRequest | .steeleagle.protocol.common.Response | Configure the vehicle imaging stream. Sets which imaging sensors are streaming and sets their target frame rates. |
| ConfigureTelemetryStream | ConfigureTelemetryStreamRequest | .steeleagle.protocol.common.Response | Configure the vehicle telemetry stream. Sets the frequency of the telemetry stream. |
Top
services/flight_log_service.proto
LogMessage
Basic log message.
| Field | Type | Label | Description |
|---|
| type | LogType | | type of the log |
| msg | string | | message content |
LogProtoRequest
LogRequest
ReqRepProto
Protobuf object that is either a Request/Response type.
LogType
Log types (follows Python convention).
| Name | Number | Description |
|---|
| DEBUG | 0 | for debugging |
| INFO | 1 | information |
| PROTO | 2 | Protobuf objects |
| WARNING | 3 | warnings |
| ERROR | 4 | errors |
| CRITICAL | 5 | critical errors |
FlightLog
Used to log to a flight log.
This service is hosted by a logger instance and is responsible
for writing all system logs to an MCAP file for mission playback.
Top
services/mission_service.proto
MissionData
| Field | Type | Label | Description |
|---|
| content | string | | URI, either local or remote, of a mission file |
| map | bytes | | kml object |
NotifyRequest
StartRequest
StopRequest
UploadRequest
Mission
Used to start a new mission or stop an active mission
Top
services/remote_service.proto
CommandRequest
| Field | Type | Label | Description |
|---|
| sequence_number | uint32 | optional | Since command sequencing is not built-in to ZeroMQ, it must be done manually; this will be set automatically by the server |
| request | google.protobuf.Any | | Contains request data for an RPC call |
| method_name | string | | Fully qualified method name |
| identity | string | | Identity of the sender |
| vehicle_id | string | | Target vehicle to send to |
CommandResponse
| Field | Type | Label | Description |
|---|
| sequence_number | uint32 | | This response is not seen by the client, but is a wrapper around a normal response; this is done for sequence_number correlation |
| response | steeleagle.protocol.common.Response | | Generic response |
CompileMissionRequest
| Field | Type | Label | Description |
|---|
| dsl_content | string | | |
CompileMissionResponse
Remote
Used to control a vehicle remotely over ZeroMQ, usually hosted
on the server
Top
services/report_service.proto
ReportMessage
Message container for a report.
| Field | Type | Label | Description |
|---|
| report_code | int32 | | integer report code, interpreted by the backend |
SendReportRequest
Report
Used to report messages to the Swarm Controller server.
Top
testing/testing.proto
ServiceReady
| Field | Type | Label | Description |
|---|
| readied_service | ServiceType | | Indicates which service is ready for testing |
ServiceType
Types of test messages for testing infrastructure
| Name | Number | Description |
|---|
| CORE_SERVICES | 0 | |
| STREAM_SERVICES | 1 | |
| MISSION_SERVICE | 2 | |
| DRIVER_CONTROL_SERVICE | 3 | |
Scalar Value Types
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
|---|
| double | | double | double | float | float64 | double | float | Float |
| float | | float | float | float | float32 | float | float | Float |
| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) |
| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) |
| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) |
| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum |
| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) |
| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum |
| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass |
| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) |
| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) |