Commit d367883d authored by Trishna Saeharaseelan's avatar Trishna Saeharaseelan
Browse files

feat: add new autonomy message type

3 merge requests!59Release v2.0.0,!57Add new Autonomy message type,!36Resolve "Create temporary mas-dt branch for initial schema refactor"
Pipeline #261484 failed with stages
in 34 seconds
......@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Added
- New message type "autonomy". Long term plan is to integrate this as an object into the planning configuration schema, where if an operation has autonomy, the metadata, configurations, any instructions / default settings shall be within this message structure section.
- Additional_data field to platform_status to input any other data from a platform to be published
- Goal object in mission_plan message that consists of a GeoJSON feature (representing the part of primitive that is currently the goal of the given mission plan).
- A `partial` flag that indicates if a mission plan is a partial plan or the entire mission plan
......
{
"header":{
"message_ID": "a127003c-0000-11aa-a1eb-b1cdf2342fdd",
"timestamp": "2025-02-07T00:00:00Z",
"version": "v2.0.0-beta.11",
"source": "noc-c2",
"destination": "mas-dt",
"delivery_type": "publish",
"encoded": false
},
"payload":{
"message_type": "autonomy",
"planning_config_ID": 1,
"version": "v0.1.2",
"state": "start"
}
}
\ No newline at end of file
"""
schemas: Autonomy related data with Autonomy Engine metadata,
configurations and default instructions
"""
autonomy_schema = {
"type": "object",
"properties": {
"message_type": {
"type": "string",
"description": "Type of message",
"example": "autonomy",
"enum": ["autonomy"],
},
"planning_config_ID": {
"type": "integer",
"description": "Unique identifier of autonomy engine's planning config ID"
+ " configuration plan",
"example": 3,
},
"version": {
"type": "string",
"description": "Version of autonomy engine for given planning config ID",
"example": "v1.0.0",
},
"state": {
"type": "string",
"enum": ["start", "stop"],
"description": "Autonomy engine instruction to start or stop model",
"example": "stop",
},
},
"required": [
"message_type",
"planning_config_ID"
],
}
from formats.header import message_header
from formats.message import message_schema
from formats.autonomy import autonomy_schema
from formats.mission_plan import mission_plan_schema
from formats.mission_plan_encoded import mission_plan_encoded_schema
from formats.observation import observation_schema
......@@ -49,9 +50,9 @@ def get_swagger_config(reload=False):
"swagger_ui": True,
"specs_route": "/",
"info": {
"title": "SoAR Backbone Message Formats",
"title": "Backbone Message Formats",
"version": "1.0",
"description": "SoAR message protocol in schemas",
"description": "message protocol in schemas",
},
"specs": [
{
......@@ -66,6 +67,7 @@ def get_swagger_config(reload=False):
"MESSAGE": message_schema,
"header": message_header,
"payload": payload_schema,
"autonomy": autonomy_schema,
"mission_plan": mission_plan_schema,
"mission_plan_encoded": mission_plan_encoded_schema,
"observation": observation_schema,
......
......@@ -111,6 +111,42 @@
],
"type": "object"
},
"autonomy": {
"properties": {
"message_type": {
"description": "Type of message",
"enum": [
"autonomy"
],
"example": "autonomy",
"type": "string"
},
"planning_config_ID": {
"description": "Unique identifier of autonomy engine's planning config ID configuration plan",
"example": 3,
"type": "integer"
},
"state": {
"description": "Autonomy engine instruction to start or stop model",
"enum": [
"start",
"stop"
],
"example": "stop",
"type": "string"
},
"version": {
"description": "Version of autonomy engine for given planning config ID",
"example": "v1.0.0",
"type": "string"
}
},
"required": [
"message_type",
"planning_config_ID"
],
"type": "object"
},
"config_file": {
"properties": {
"content": {
......@@ -2908,8 +2944,8 @@
}
},
"info": {
"description": "SoAR message protocol in schemas",
"title": "SoAR Backbone Message Formats",
"description": "message protocol in schemas",
"title": "Backbone Message Formats",
"version": "1.0"
},
"openapi": "3.0.2",
......
{
"components": {
"components": {
"schemas": {
"MESSAGE": {
"description": "Full message definition with message-metadata in `header` and different message type schemas under `payload`",
"properties": {
"header": {
"$ref": "#/components/schemas/header"
},
"payload": {
"$ref": "#/components/schemas/payload"
}
},
"required": [
"header",
"payload"
],
"type": "object"
},
"acknowledgement": {
"properties": {
"approved": {
"description": "Human-in-the-loop approval.1 - Plan approved; 0 - Plan Rejected",
"type": "boolean"
},
"autonomy_engine_plan_ID": {
"description": "Mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform",
"example": 1,
"type": "integer"
},
"message_type": {
"description": "Type of message",
"enum": [
"acknowledgement"
"MESSAGE": {
"description": "Full message definition with message-metadata in `header` and different message type schemas under `payload`",
"properties": {
"header": {
"$ref": "#/components/schemas/header"
},
"payload": {
"$ref": "#/components/schemas/payload"
}
},
"required": [
"header",
"payload"
],
"type": "object"
},
"acknowledgement": {
"properties": {
"approved": {
"description": "Human-in-the-loop approval.1 - Plan approved; 0 - Plan Rejected",
"type": "boolean"
},
"autonomy_engine_plan_ID": {
"description": "Mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform",
"example": 1,
"type": "integer"
},
"message_type": {
"description": "Type of message",
"enum": [
"acknowledgement"
],
"example": "acknowledgement",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
}
},
"required": [
"message_type",
"autonomy_engine_plan_ID",
"platform_ID",
"approved"
],
"type": "object"
},
"alert": {
"properties": {
"code": {
"description": "Alert code",
"example": 345,
"type": "integer"
},
"details": {
"description": "Detailed reason for the alert ",
"example": "Discrepancy between rudder and actuator positions : Rudder Pos=10.31°, Steering Actuator Pos=28.65°, Discrepancy=18.33°",
"type": "string"
},
"message_type": {
"description": "Type of message",
"enum": [
"alert"
],
"example": "alert",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "usvdecibel",
"type": "string"
},
"platform_timestamp": {
"description": "Timestamp for onboard platform status message",
"example": "2022-12-21T00:00:00Z",
"format": "date-time",
"type": "string"
},
"severity": {
"description": "Severity level of alert",
"enum": [
"Emergency",
"Alarm",
"Warning",
"Caution"
],
"example": "Alarm",
"type": "string"
},
"subsystem": {
"description": "System that generated the alert",
"example": "Onboard Fault Monitor",
"type": "string"
},
"summary": {
"description": "High level description of the alert",
"example": "Steering Damage - Port Side",
"type": "string"
}
},
"required": [
"message_type",
"platform_ID",
"code",
"severity"
],
"type": "object"
},
"autonomy": {
"properties": {
"message_type": {
"description": "Type of message",
"enum": [
"autonomy"
],
"example": "autonomy",
"type": "string"
},
"planning_config_ID": {
"description": "Unique identifier of autonomy engine's planning config ID configuration plan",
"example": 3,
"type": "integer"
},
"state": {
"description": "Autonomy engine instruction to start or stop model",
"enum": [
"start",
"stop"
],
"example": "stop",
"type": "string"
},
"version": {
"description": "Version of autonomy engine for given planning config ID",
"example": "v1.0.0",
"type": "string"
}
},
"required": [
"message_type",
"planning_config_ID"
],
"type": "object"
},
"config_file": {
"properties": {
"content": {
"description": "Base64 encoded file content",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "text/plain",
"type": "string"
},
"name": {
"description": "Name of file",
"example": "yo95.ma",
"type": "string"
},
"static": {
"description": "list of the fixed values set by the config file",
"type": "object"
}
},
"required": [
"name",
"content"
],
"type": "object"
},
"geojson.org.schema.Feature.json": {
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"geometry": {
"oneOf": [
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"type": {
"enum": [
"Point"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"example": "acknowledgement",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
}
},
"required": [
"message_type",
"autonomy_engine_plan_ID",
"platform_ID",
"approved"
],
"type": "object"
},
"alert": {
"properties": {
"code": {
"description": "Alert code",
"example": 345,
"type": "integer"
},
"details": {
"description": "Detailed reason for the alert ",
"example": "Discrepancy between rudder and actuator positions : Rudder Pos=10.31\u00b0, Steering Actuator Pos=28.65\u00b0, Discrepancy=18.33\u00b0",
"type": "string"
},
"message_type": {
"description": "Type of message",
"enum": [
"alert"
"title": "GeoJSON Point",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 2,
"type": "array"
},
"type": {
"enum": [
"LineString"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"example": "alert",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "usvdecibel",
"type": "string"
},
"platform_timestamp": {
"description": "Timestamp for onboard platform status message",
"example": "2022-12-21T00:00:00Z",
"format": "date-time",
"type": "string"
},
"severity": {
"description": "Severity level of alert",
"enum": [
"Emergency",
"Alarm",
"Warning",
"Caution"
"title": "GeoJSON LineString",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 4,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"Polygon"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"example": "Alarm",
"type": "string"
},
"subsystem": {
"description": "System that generated the alert",
"example": "Onboard Fault Monitor",
"type": "string"
},
"summary": {
"description": "High level description of the alert",
"example": "Steering Damage - Port Side",
"type": "string"
}
},
"required": [
"message_type",
"platform_ID",
"code",
"severity"
],
"type": "object"
},
"header": {
"discriminator": {
"propertyName": "message_type"
},
"properties": {
"delivery_type": {
"default": "publish",
"description": "To publish or broadcast this message.",
"enum": [
"broadcast",
"publish"
"title": "GeoJSON Polygon",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiPoint"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"example": "publish",
"type": "string"
},
"destination": {
"description": "Publisher topic; What is the destination of this message",
"example": "ah1",
"type": "string"
},
"encoded": {
"description": "Indicate that message raw (encoded) or decoded. Options: encoded=true, decoded=false",
"example": false,
"type": "boolean"
},
"message_ID": {
"description": "An identifier for the type of message received.",
"example": "b427003c-0000-11aa-a1eb-b1cdf2342fdd",
"type": "string"
},
"source": {
"description": "The sender; Where is this message from",
"example": "autonomy_engine",
"type": "string"
},
"timestamp": {
"description": "Timestamp of message",
"example": "2022-11-16T00:00:00Z",
"format": "date-time",
"type": "string"
},
"version": {
"description": "Version of comms backbone message format protocol",
"example": 2.0,
"format": "float",
"title": "GeoJSON MultiPoint",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiLineString"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiLineString",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 4,
"type": "array"
},
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiPolygon"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiPolygon",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"geometries": {
"items": {
"oneOf": [
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"type": {
"enum": [
"Point"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON Point",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 2,
"type": "array"
},
"type": {
"enum": [
"LineString"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON LineString",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 4,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"Polygon"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON Polygon",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiPoint"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiPoint",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiLineString"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiLineString",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 4,
"type": "array"
},
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiPolygon"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiPolygon",
"type": "object"
}
]
},
"type": "array"
},
"type": {
"enum": [
"GeometryCollection"
],
"type": "string"
}
},
"required": [
"type",
"geometries"
],
"title": "GeoJSON GeometryCollection",
"type": "object"
}
]
},
"id": {
"oneOf": [
{
"type": "number"
}
},
{
"type": "string"
}
]
},
"type": "object"
},
"mission_plan": {
"properties": {
"autonomy_engine_plan_ID": {
"description": "Unique identifier for this plangenerated by the Autonomy Engine",
"example": 3,
"type": "integer"
},
"emergency": {
"default": false,
"description": "To indicate if this is an emergency. true = emergency and false = no emergency",
"example": false,
"type": "boolean"
},
"message_type": {
"description": "Type of message",
"enum": [
"mission_plan"
],
"example": "mission_plan",
"type": "string"
},
"plan": {
"items": {
"properties": {
"action": {
"description": "Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.",
"enum": [
"move",
"payload",
"dive",
"send_hits",
"scanline",
"scanpoint",
"go_home",
"surface_now",
"stop_mission",
"abort_now"
],
"example": "move",
"type": "string"
},
"activate_payload": {
"description": "To activate/deactivate sensor for Autosub Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`",
"example": true,
"type": "boolean"
"oneOf": [
{
"type": "object"
}
]
},
"type": {
"enum": [
"Feature"
],
"type": "string"
}
},
"required": [
"type",
"properties",
"geometry"
],
"title": "GeoJSON Feature",
"type": "object"
},
"geojson.org.schema.FeatureCollection.json": {
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"features": {
"items": {
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"geometry": {
"oneOf": [
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"type": {
"enum": [
"Point"
],
"type": "string"
}
},
"altitude": {
"description": "Altitude of next action",
"example": 15.0,
"format": "float",
"type": "number"
"required": [
"type",
"coordinates"
],
"title": "GeoJSON Point",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 2,
"type": "array"
},
"type": {
"enum": [
"LineString"
],
"type": "string"
}
},
"depth": {
"description": "Depth of next action",
"example": 15.0,
"format": "float",
"type": "number"
"required": [
"type",
"coordinates"
],
"title": "GeoJSON LineString",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 4,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"Polygon"
],
"type": "string"
}
},
"start_point_latitude": {
"description": "Start point, y-coordinate",
"example": 50.37072283932642,
"format": "float",
"type": "number"
"required": [
"type",
"coordinates"
],
"title": "GeoJSON Polygon",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiPoint"
],
"type": "string"
}
},
"start_point_longitude": {
"description": "Start point, x-coordinate",
"example": -4.187143188645706,
"format": "float",
"type": "number"
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiPoint",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiLineString"
],
"type": "string"
}
},
"target_waypoint_latitude": {
"description": "Target waypoint, y-coordinate",
"example": 50.37072283932642,
"format": "float",
"type": "number"
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiLineString",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 4,
"type": "array"
},
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiPolygon"
],
"type": "string"
}
},
"target_waypoint_longitude": {
"description": "Target waypoint, x-coordinate",
"example": -4.187143188645706,
"format": "float",
"type": "number"
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiPolygon",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"geometries": {
"items": {
"oneOf": [
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"type": {
"enum": [
"Point"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON Point",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 2,
"type": "array"
},
"type": {
"enum": [
"LineString"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON LineString",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 4,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"Polygon"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON Polygon",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiPoint"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiPoint",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiLineString"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiLineString",
"type": "object"
},
{
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 4,
"type": "array"
},
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiPolygon"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiPolygon",
"type": "object"
}
]
},
"type": "array"
},
"type": {
"enum": [
"GeometryCollection"
],
"type": "string"
}
},
"timeout": {
"description": "Timeout set to perform action",
"example": 1800.0,
"format": "float",
"type": "number"
}
},
"required": [
"target_waypoint_latitude",
"target_waypoint_longitude"
],
"type": "object"
"required": [
"type",
"geometries"
],
"title": "GeoJSON GeometryCollection",
"type": "object"
}
]
},
"type": "array"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
}
},
"required": [
"message_type",
"autonomy_engine_plan_ID",
"platform_ID",
"plan"
],
"type": "object"
},
"mission_plan_encoded": {
"properties": {
"data": {
"description": "encoded string. E.g. Base64 encoded",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"file_name": {
"description": "Name of file",
"example": "ah1-0238126349247372.bin",
"type": "string"
},
"is_binary": {
"description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example": true,
"type": "boolean"
},
"message_type": {
"description": "Type of message",
"enum": [
"mission_plan_encoded"
],
"example": "mission_plan_encoded",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "application/gzip",
"type": "string"
}
},
"required": [
"data",
"is_binary"
],
"type": "object"
},
"observation": {
"properties": {
"additional_data": {
"description": "Placeholder field for any additional data",
"example": {
"sensor_payload": false
"id": {
"oneOf": [
{
"type": "number"
},
{
"type": "string"
}
]
},
"properties": {
"oneOf": [
{
"type": "object"
}
]
},
"type": {
"enum": [
"Feature"
],
"type": "string"
}
},
"message_type": {
"description": "Type of message",
"enum": [
"observation"
],
"example": "observation",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
},
"points_of_interest": {
"description": "Points from features of interest identified by platform if any found.",
},
"required": [
"type",
"properties",
"geometry"
],
"title": "GeoJSON Feature",
"type": "object"
},
"type": "array"
},
"type": {
"enum": [
"FeatureCollection"
],
"type": "string"
}
},
"required": [
"type",
"features"
],
"title": "GeoJSON FeatureCollection",
"type": "object"
},
"geojson.org.schema.LineString.json": {
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 2,
"type": "array"
},
"type": {
"enum": [
"LineString"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON LineString",
"type": "object"
},
"geojson.org.schema.MultiLineString.json": {
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"properties": {
"latitude": {
"description": "Identified y-coordinate of point of interest",
"example": 178.2,
"format": "float",
"type": "number"
},
"longitude": {
"description": "Identified x-coordinate of point of interest",
"example": -10.122,
"format": "float",
"type": "number"
},
"quality_of_point": {
"description": "Quality/strength of points from features of interest identified by platform.",
"example": 0.98,
"format": "float",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"type": "object"
"type": "number"
},
"minItems": 2,
"type": "array"
},
"region_surveyed": {
"description": "Region surveyed by given platform. GEOJSON",
"example": "",
"nullable": true
}
},
"required": [
"message_type",
"platform_ID"
],
"type": "object"
},
"observation_encoded": {
"properties": {
"data": {
"description": "encoded string. E.g. Base64 encoded",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
},
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiLineString"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiLineString",
"type": "object"
},
"geojson.org.schema.MultiPoint.json": {
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiPoint"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiPoint",
"type": "object"
},
"geojson.org.schema.MultiPolygon.json": {
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 4,
"type": "array"
},
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"MultiPolygon"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON MultiPolygon",
"type": "object"
},
"geojson.org.schema.Point.json": {
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"type": {
"enum": [
"Point"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON Point",
"type": "object"
},
"geojson.org.schema.Polygon.json": {
"properties": {
"bbox": {
"items": {
"type": "number"
},
"minItems": 4,
"type": "array"
},
"coordinates": {
"items": {
"items": {
"items": {
"type": "number"
},
"minItems": 2,
"type": "array"
},
"minItems": 4,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"Polygon"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"title": "GeoJSON Polygon",
"type": "object"
},
"header": {
"oneOf": [
{
"properties": {
"version": {
"pattern": "^(v{0,1}(0|[1-9][0-9]*)[.](0|[1-9][0-9]*)[.](0|[1-9][0-9]*)(?:-(alpha|beta)[.](0|[1-9][0-9]*))?)$",
"type": "string"
},
"file_name": {
"description": "Name of file",
"example": "ah1-0238126349247372.bin",
}
},
"required": [
"version"
],
"type": "object"
},
{
"properties": {
"version": {
"pattern": "^([0-9a-f]+)$",
"type": "string"
},
"is_binary": {
"description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example": true,
"type": "boolean"
},
"message_type": {
"description": "Type of message",
}
},
"required": [
"version"
],
"type": "object"
},
{
"properties": {
"version": {
"enum": [
"observation_encoded"
"dev",
"master",
"latest"
],
"example": "observation_encoded",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "application/gzip",
"type": "string"
}
},
"required": [
"data",
"is_binary"
],
"type": "object"
},
"payload": {
"discriminator": {
"mapping": {
"acknowledgement": "#/components/schemas/acknowledgement",
"alert": "#/components/schemas/alert",
"mission_plan": "#/components/schemas/mission_plan",
"mission_plan_encoded": "#/components/schemas/mission_plan_encoded",
"observation": "#/components/schemas/observation",
"observation_encoded": "#/components/schemas/observation_encoded",
"planning_configuration": "#/components/schemas/planning_configuration",
"platform_status": "#/components/schemas/platform_status",
"platform_status_encoded": "#/components/schemas/platform_status_encoded",
"survey": "#/components/schemas/survey",
"survey_encoded": "#/components/schemas/survey_encoded"
},
"propertyName": "message_type"
},
"oneOf": [
{
"$ref": "#/components/schemas/alert"
},
{
"$ref": "#/components/schemas/acknowledgement"
},
{
"$ref": "#/components/schemas/mission_plan"
},
{
"$ref": "#/components/schemas/mission_plan_encoded"
},
{
"$ref": "#/components/schemas/observation"
},
{
"$ref": "#/components/schemas/observation_encoded"
},
{
"$ref": "#/components/schemas/planning_configuration"
},
{
"$ref": "#/components/schemas/platform_status"
},
{
"$ref": "#/components/schemas/platform_status_encoded"
},
{
"$ref": "#/components/schemas/survey"
},
{
"$ref": "#/components/schemas/survey_encoded"
}
]
},
"planning_configuration": {
"properties": {
"exclusion_zones": {
"description": "Exclusion zones for all platforms",
"items": {
"description": "Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)",
"properties": {
"geometry_coordinates": {
"example": [
[
[
-4.1777839187560915,
50.34173405662855
],
[
-4.1777839187560915,
50.33820949229701
],
[
-4.143667777943875,
50.33820949229701
],
[
-4.143667777943875,
50.34173405662855
],
[
-4.1777839187560915,
50.34173405662855
]
]
],
"type": "array"
}
},
"type": "object"
}
},
"required": [
"version"
],
"type": "object"
},
{
"properties": {
"version": {
"example": 2,
"format": "float",
"type": "number"
}
},
"required": [
"version"
],
"type": "object"
}
],
"properties": {
"delivery_type": {
"default": "publish",
"description": "To publish or broadcast this message.",
"enum": [
"broadcast",
"publish"
],
"example": "publish",
"type": "string"
},
"destination": {
"description": "Publisher topic; What is the destination of this message",
"example": "ah1",
"type": "string"
},
"encoded": {
"description": "Indicate that message raw (encoded) or decoded. Options: encoded=true, decoded=false",
"example": false,
"type": "boolean"
},
"message_ID": {
"description": "An identifier for the type of message received.",
"example": "b427003c-0000-11aa-a1eb-b1cdf2342fdd",
"format": "uuid",
"pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",
"type": "string"
},
"source": {
"description": "The sender; Where is this message from",
"example": "autonomy_engine",
"type": "string"
},
"timestamp": {
"description": "Timestamp of message",
"example": "2022-11-16T00:00:00Z",
"format": "date-time",
"type": "string"
}
},
"required": [
"message_ID",
"timestamp",
"source",
"destination",
"delivery_type",
"encoded"
],
"type": "object"
},
"instruction_set": {
"properties": {
"categories": {
"type": "object"
},
"files": {
"items": {
"properties": {
"content": {
"description": "Base64 encoded file content",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"type": "array"
},
"message_type": {
"description": "Type of message",
"enum": [
"planning_configuration"
],
"example": "planning_configuration",
"mime_type": {
"description": "MIME type",
"example": "text/plain",
"type": "string"
},
"name": {
"description": "Name of file",
"example": "yo95.ma",
"type": "string"
},
"static": {
"description": "list of the fixed values set by the config file",
"type": "object"
}
},
"required": [
"name",
"content"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"files"
],
"type": "object"
},
"mission_plan": {
"oneOf": [
{
"properties": {
"autonomy_engine_plan_ID": {
"description": "Unique identifier for this plangenerated by the Autonomy Engine",
"format": "uuid",
"pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",
"type": "string"
},
"planning_config_ID": {
"description": "Unique identifier tagged to version of this configuration plan",
}
}
},
{
"properties": {
"autonomy_engine_plan_ID": {
"description": "Unique identifier for this plangenerated by the Autonomy Engine",
"example": 3,
"type": "integer"
},
"region_of_interest": {
"description": "Region of interest for the entire operation",
"items": {
"description": "Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)",
"properties": {
"geometry_coordinates": {
"example": [
[
[
-4.1777839187560915,
50.34173405662855
],
[
-4.1777839187560915,
50.33820949229701
],
[
-4.143667777943875,
50.33820949229701
],
[
-4.143667777943875,
50.34173405662855
],
[
-4.1777839187560915,
50.34173405662855
]
]
],
"type": "array"
}
}
}
],
"properties": {
"emergency": {
"default": false,
"description": "To indicate if this is an emergency. true = emergency and false = no emergency",
"example": false,
"type": "boolean"
},
"goal": {
"properties": {
"feature": {
"$ref": "#/components/schemas/geojson.org.schema.Feature.json"
},
"timestamp": {
"description": "Timestamp of last state change when autonomy model sets this goal",
"example": "2024-11-21T00:00:00Z",
"format": "date-time",
"type": "string"
}
},
"type": "object"
},
"message_type": {
"description": "Type of message",
"enum": [
"mission_plan"
],
"example": "mission_plan",
"type": "string"
},
"partial": {
"description": "To indicate if this mission plan represents a partial (`true`) or the entire (`false`) mission plan. E.g.Partial would be `true` if a full mission plan is broken down into multiple plans.",
"example": false,
"type": "boolean"
},
"plan": {
"items": {
"oneOf": [
{
"properties": {
"start": {
"$ref": "#/components/schemas/geojson.org.schema.Point.json"
},
"target": {
"$ref": "#/components/schemas/geojson.org.schema.Point.json"
}
},
"required": [
"target"
],
"type": "object"
},
{
"properties": {
"altitude": {
"description": "Altitude of next action",
"example": 15,
"format": "float",
"type": "number"
},
"depth": {
"description": "Depth of next action",
"example": 15,
"format": "float",
"type": "number"
},
"start_point_latitude": {
"description": "Start point, y-coordinate",
"example": 50.3707228393264,
"format": "float",
"type": "number"
},
"start_point_longitude": {
"description": "Start point, x-coordinate",
"example": -4.18714318864571,
"format": "float",
"type": "number"
},
"target_waypoint_latitude": {
"description": "Target waypoint, y-coordinate",
"example": 50.3707228393264,
"format": "float",
"type": "number"
},
"target_waypoint_longitude": {
"description": "Target waypoint, x-coordinate",
"example": -4.18714318864571,
"format": "float",
"type": "number"
}
},
"required": [
"target_waypoint_latitude",
"target_waypoint_longitude"
],
"type": "object"
}
],
"properties": {
"action": {
"description": "Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.",
"enum": [
"move",
"payload",
"dive",
"send_hits",
"scanline",
"scanpoint",
"go_home",
"surface_now",
"stop_mission",
"abort_now"
],
"example": "move",
"type": "string"
},
"activate_payload": {
"description": "To activate/deactivate sensor for Autosub Hover-1 --\u003E `MBES` sensor and for EcoSUB --\u003E `Sidescan`",
"example": true,
"type": "boolean"
},
"timeout": {
"description": "Timeout set to perform action",
"example": 1800,
"format": "float",
"type": "number"
}
},
"type": "object"
},
"type": "array"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
}
},
"required": [
"message_type",
"autonomy_engine_plan_ID",
"platform_ID",
"plan"
],
"type": "object"
},
"mission_plan_encoded": {
"properties": {
"data": {
"description": "encoded string. E.g. Base64 encoded",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"file_name": {
"description": "Name of file",
"example": "ah1-0238126349247372.bin",
"type": "string"
},
"is_binary": {
"description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example": true,
"type": "boolean"
},
"message_type": {
"description": "Type of message",
"enum": [
"mission_plan_encoded"
],
"example": "mission_plan_encoded",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "application/gzip",
"type": "string"
}
},
"required": [
"data",
"is_binary"
],
"type": "object"
},
"observation": {
"properties": {
"additional_data": {
"description": "Placeholder field for any additional data",
"example": {
"sensor_payload": false
}
},
"message_type": {
"description": "Type of message",
"enum": [
"observation"
],
"example": "observation",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
},
"points_of_interest": {
"description": "Points from features of interest identified by platform if any found.",
"items": {
"properties": {
"latitude": {
"description": "Identified y-coordinate of point of interest",
"example": 178.2,
"format": "float",
"type": "number"
},
"longitude": {
"description": "Identified x-coordinate of point of interest",
"example": -10.122,
"format": "float",
"type": "number"
},
"quality_of_point": {
"description": "Quality/strength of points from features of interest identified by platform.",
"example": 0.98,
"format": "float",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"type": "object"
},
"type": "array"
},
"region_surveyed": {
"description": "Region surveyed by given platform. GEOJSON",
"example": "",
"nullable": true
}
},
"required": [
"message_type",
"platform_ID"
],
"type": "object"
},
"observation_encoded": {
"properties": {
"data": {
"description": "encoded string. E.g. Base64 encoded",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"file_name": {
"description": "Name of file",
"example": "ah1-0238126349247372.bin",
"type": "string"
},
"is_binary": {
"description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example": true,
"type": "boolean"
},
"message_type": {
"description": "Type of message",
"enum": [
"observation_encoded"
],
"example": "observation_encoded",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "application/gzip",
"type": "string"
}
},
"required": [
"data",
"is_binary"
],
"type": "object"
},
"payload": {
"discriminator": {
"mapping": {
"acknowledgement": "#/components/schemas/acknowledgement",
"alert": "#/components/schemas/alert",
"mission_plan": "#/components/schemas/mission_plan",
"mission_plan_encoded": "#/components/schemas/mission_plan_encoded",
"observation": "#/components/schemas/observation",
"observation_encoded": "#/components/schemas/observation_encoded",
"planning_configuration": "#/components/schemas/planning_configuration",
"platform_instruction_set": "#/components/schemas/platform_instruction_set",
"platform_status": "#/components/schemas/platform_status",
"platform_status_encoded": "#/components/schemas/platform_status_encoded",
"survey": "#/components/schemas/survey",
"survey_encoded": "#/components/schemas/survey_encoded",
"waypoints": "#/components/schemas/waypoints"
},
"propertyName": "message_type"
},
"oneOf": [
{
"$ref": "#/components/schemas/alert"
},
{
"$ref": "#/components/schemas/acknowledgement"
},
{
"$ref": "#/components/schemas/mission_plan"
},
{
"$ref": "#/components/schemas/mission_plan_encoded"
},
{
"$ref": "#/components/schemas/observation"
},
{
"$ref": "#/components/schemas/observation_encoded"
},
{
"$ref": "#/components/schemas/planning_configuration"
},
{
"$ref": "#/components/schemas/platform_instruction_set"
},
{
"$ref": "#/components/schemas/platform_status"
},
{
"$ref": "#/components/schemas/platform_status_encoded"
},
{
"$ref": "#/components/schemas/survey"
},
{
"$ref": "#/components/schemas/survey_encoded"
},
{
"$ref": "#/components/schemas/waypoints"
}
]
},
"planning_configuration": {
"properties": {
"instructions": {
"items": {
"properties": {
"categories": {
"type": "object"
},
"files": {
"items": {
"properties": {
"content": {
"description": "Base64 encoded file content",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "text/plain",
"type": "string"
},
"name": {
"description": "Name of file",
"example": "yo95.ma",
"type": "string"
},
"static": {
"description": "list of the fixed values set by the config file",
"type": "object"
}
},
"type": "object"
},
"required": [
"name",
"content"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"files"
],
"type": "object"
},
"type": "array"
},
"message_type": {
"description": "Type of message",
"enum": [
"planning_configuration"
],
"example": "planning_configuration",
"type": "string"
},
"planning_config_ID": {
"description": "Unique identifier tagged to version of this configuration plan",
"example": 3,
"type": "integer"
},
"primitives": {
"description": "Specification primitives - campaign-wide such as operating area and obstacles",
"items": {
"oneOf": [
{
"properties": {
"feature": {
"$ref": "#/components/schemas/geojson.org.schema.Feature.json"
},
"instruction": {
"description": "How the associated feature should be used",
"enum": [
"navigate_to",
"follow"
],
"type": "string"
},
"options": {
"properties": {
"acceptance_radius_m": {
"description": "Acceptance radius (if applicable) to points of geometry in metres",
"example": 10000,
"format": "float",
"type": "number"
},
"repeat": {
"description": "Repeat these set of primitives in order (e.g. 1-\u003E2-\u003E3-\u003E1-\u003E2...)",
"example": true,
"type": "boolean"
},
"reverse": {
"description": "Loop backwards through the set of primitives (e.g 1-\u003E2-\u003E-3-\u003E2-\u003E1...)",
"example": true,
"type": "boolean"
}
},
"type": "object"
}
},
"required": [
"feature",
"instruction"
]
},
"type": "array"
},
"squads": {
"items": {
"properties": {
"no_of_platforms": {
"description": "Number of platforms",
"example": 3,
"type": "integer"
{
"properties": {
"feature": {
"$ref": "#/components/schemas/geojson.org.schema.Feature.json"
},
"instruction": {
"description": "How the associated feature should be used",
"enum": [
"stay_inside",
"stay_outside",
"cover",
"informational"
],
"type": "string"
}
},
"required": [
"feature",
"instruction"
]
}
]
},
"type": "array"
},
"squads": {
"items": {
"properties": {
"no_of_platforms": {
"description": "Number of platforms",
"example": 3,
"type": "integer"
},
"platforms": {
"description": "Squad consists of these platforms",
"items": {
"properties": {
"active": {
"description": "If platform is active = True, and inactive = False",
"example": true,
"type": "boolean"
},
"additional_data": {
"description": "Any addition fields/data to be added here",
"example": {
"new_sensor_a": "test_sensor",
"range": 10
},
"type": "object"
},
"beacon_ID": {
"description": "Unique identifier (number) for the beacon associated to this platform",
"example": 2407,
"type": "number"
},
"emergency": {
"properties": {
"safe_command": {
"description": "Command/Action that is native to respective partner's platform/C2",
"enum": [
"go_home",
"abort_now",
"stop_now",
"surface_now"
],
"example": "go_home",
"type": "string"
},
"target_depth": {
"description": "Z-coordinate safe place for respective platform . If platform to NOT stay at depth, key in `0.0`",
"example": 10,
"format": "float",
"type": "number"
},
"target_waypoint_latitude": {
"description": "Y-coordinate safe place for respective platform",
"example": 50.365,
"format": "float",
"type": "number"
},
"target_waypoint_longitude": {
"description": "X-coordinate safe place for respective platform",
"example": -7.432,
"format": "float",
"type": "number"
}
},
"required": [
"target_waypoint_latitude",
"target_waypoint_longitude"
],
"type": "object"
},
"endurance_relative_to_water_speed": {
"properties": {
"avg_battery_rating": {
"description": "Battery endurance rating during standard operational speed usage (m/s)",
"example": 1.9,
"format": "float",
"type": "number"
},
"max_battery_rating": {
"description": "Battery endurance rating during maximum speed usage (m/s)",
"example": 1.23,
"format": "float",
"type": "number"
},
"min_battery_rating": {
"description": "Battery endurance rating during maximum speed usage (m/s)",
"example": 3.32,
"format": "float",
"type": "number"
}
},
"type": "object"
},
"max_velocity": {
"description": "Maximum velocity set for platform",
"example": 0.9,
"format": "float",
"type": "number"
},
"min_altitude": {
"description": "Minimum altitude set for platform",
"example": 15.2,
"format": "float",
"type": "number"
},
"min_velocity": {
"description": "Minimum velocity set for platform",
"example": 0.1,
"format": "float",
"type": "number"
},
"model": {
"example": "reav",
"type": "string"
},
"operator": {
"description": "Operator of platform",
"example": "noc",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
},
"scan_sensor": {
"properties": {
"angle": {
"description": "Angle of range of swath width (in degrees)",
"example": 140,
"format": "float",
"type": "number"
},
"frequency": {
"description": "Frequency of scanning sensor (in kHz)",
"example": 700,
"format": "float",
"type": "number"
},
"sensor_type": {
"description": "Unique identifier for this platform",
"enum": [
"SIDESCAN",
"MBES"
],
"example": "MBES",
"type": "string"
},
"swath_width": {
"description": "Function of `target_altitude` for the platform's swath width (in metres)",
"example": 38,
"format": "float",
"type": "number"
},
"warmup_time": {
"description": "Warmup time (seconds) for sensor to start up.",
"example": 180,
"format": "float",
"type": "number"
}
},
"type": "object"
},
"platforms": {
"description": "Squad consists of these platforms",
"items": {
"target_altitude": {
"description": "Target altitude set for platform. This affects swath width",
"example": 15,
"format": "float",
"type": "number"
},
"turning_radius": {
"description": "Turning radius of platform (in metres)",
"example": 1,
"format": "float",
"type": "number"
}
},
"required": [
"operator",
"platform_ID",
"active",
"model"
],
"type": "object"
},
"type": "array"
},
"primitives": {
"description": "Squad primitives - includes platform group navigation instructions",
"items": {
"oneOf": [
{
"properties": {
"feature": {
"$ref": "#/components/schemas/geojson.org.schema.Feature.json"
},
"instruction": {
"description": "How the associated feature should be used",
"enum": [
"navigate_to",
"follow"
],
"type": "string"
},
"options": {
"properties": {
"active": {
"description": "If platform is active = True, and inactive = False",
"example": true,
"type": "boolean"
},
"additional_data": {
"description": "Any addition fields/data to be added here",
"example": {
"new_sensor_a": "test_sensor",
"range": 10.0
},
"type": "object"
},
"beacon_ID": {
"description": "Unique identifier (number) for the beacon associated to this platform",
"example": 2407,
"type": "number"
},
"emergency": {
"properties": {
"safe_command": {
"description": "Command/Action that is native to respective partner's platform/C2",
"enum": [
"go_home",
"abort_now",
"stop_now",
"surface_now"
],
"example": "go_home",
"type": "string"
},
"target_depth": {
"description": "Z-coordinate safe place for respective platform . If platform to NOT stay at depth, key in `0.0`",
"example": 10.0,
"format": "float",
"type": "number"
},
"target_waypoint_latitude": {
"description": "Y-coordinate safe place for respective platform",
"example": 50.365,
"format": "float",
"type": "number"
},
"target_waypoint_longitude": {
"description": "X-coordinate safe place for respective platform",
"example": -7.432,
"format": "float",
"type": "number"
}
},
"required": [
"target_waypoint_latitude",
"target_waypoint_longitude",
"target_depth"
],
"type": "object"
},
"endurance_relative_to_water_speed": {
"properties": {
"avg_battery_rating": {
"description": "Battery endurance rating during standard operational speed usage (m/s)",
"example": 1.9,
"format": "float",
"type": "number"
},
"max_battery_rating": {
"description": "Battery endurance rating during maximum speed usage (m/s)",
"example": 1.23,
"format": "float",
"type": "number"
},
"min_battery_rating": {
"description": "Battery endurance rating during maximum speed usage (m/s)",
"example": 3.32,
"format": "float",
"type": "number"
}
},
"type": "object"
},
"max_velocity": {
"description": "Maximum velocity set for platform",
"example": 0.9,
"format": "float",
"type": "number"
},
"min_altitude": {
"description": "Minimum altitude set for platform",
"example": 15.2,
"format": "float",
"type": "number"
},
"min_velocity": {
"description": "Minimum velocity set for platform",
"example": 0.1,
"format": "float",
"type": "number"
},
"model": {
"example": "reav",
"type": "string"
},
"operator": {
"description": "Operator of platform",
"example": "noc",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
},
"scan_sensor": {
"properties": {
"angle": {
"description": "Angle of range of swath width (in degrees)",
"example": 140.0,
"format": "float",
"type": "number"
},
"frequency": {
"description": "Frequency of scanning sensor (in kHz)",
"example": 700.0,
"format": "float",
"type": "number"
},
"sensor_type": {
"description": "Unique identifier for this platform",
"enum": [
"SIDESCAN",
"MBES"
],
"example": "MBES",
"type": "string"
},
"swath_width": {
"description": "Function of `target_altitude` for the platform's swath width (in metres)",
"example": 38.0,
"format": "float",
"type": "number"
},
"warmup_time": {
"description": "Warmup time (seconds) for sensor to start up.",
"example": 180.0,
"format": "float",
"type": "number"
}
},
"type": "object"
},
"target_altitude": {
"description": "Target altitude set for platform. This affects swath width",
"example": 15.0,
"format": "float",
"type": "number"
},
"turning_radius": {
"description": "Turning radius of platform (in metres)",
"example": 1.0,
"format": "float",
"type": "number"
}
"acceptance_radius_m": {
"description": "Acceptance radius (if applicable) to points of geometry in metres",
"example": 10000,
"format": "float",
"type": "number"
},
"repeat": {
"description": "Repeat these set of primitives in order (e.g. 1-\u003E2-\u003E3-\u003E1-\u003E2...)",
"example": true,
"type": "boolean"
},
"reverse": {
"description": "Loop backwards through the set of primitives (e.g 1-\u003E2-\u003E-3-\u003E2-\u003E1...)",
"example": true,
"type": "boolean"
}
},
"required": [
"operator",
"platform_ID",
"active",
"model"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"feature",
"instruction"
]
},
"squad_ID": {
"description": "Identifier of given squad",
"example": 23,
"type": "integer"
},
"squad_mission_type": {
"description": "Mission of given squad: `tracking`, `survey`, `inspection`",
"enum": [
"tracking",
"survey",
"inspection"
],
"example": "survey",
"type": "string"
{
"properties": {
"feature": {
"$ref": "#/components/schemas/geojson.org.schema.Feature.json"
},
"instruction": {
"description": "How the associated feature should be used",
"enum": [
"stay_inside",
"stay_outside",
"cover",
"informational"
],
"type": "string"
}
},
"required": [
"feature",
"instruction"
]
}
},
"required": [
"squad_ID",
"no_of_platforms",
"platforms",
"squad_mission_type"
],
"type": "object"
]
},
"type": "array"
},
"squad_ID": {
"description": "Identifier of given squad",
"example": 23,
"type": "integer"
},
"squad_mission_type": {
"description": "Mission of given squad: `tracking`, `survey`, `inspection`",
"enum": [
"tracking",
"survey",
"inspection",
"profiling"
],
"example": "survey",
"type": "string"
}
},
"required": [
"squad_ID",
"no_of_platforms",
"platforms",
"squad_mission_type"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"message_type",
"planning_config_ID",
"squads",
"primitives"
],
"type": "object"
},
"platform_instruction_set": {
"properties": {
"instruction_set": {
"properties": {
"categories": {
"type": "object"
},
"files": {
"items": {
"properties": {
"content": {
"description": "Base64 encoded file content",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "text/plain",
"type": "string"
},
"name": {
"description": "Name of file",
"example": "yo95.ma",
"type": "string"
},
"static": {
"description": "list of the fixed values set by the config file",
"type": "object"
}
},
"required": [
"name",
"content"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"message_type",
"planning_config_ID",
"squads",
"exclusion_zones",
"region_of_interest"
],
"type": "object"
},
"platform_status": {
"properties": {
"altitude": {
}
},
"required": [
"files"
],
"type": "object"
},
"message_type": {
"description": "Type of message",
"enum": [
"platform_instruction_set"
],
"example": "platform_instruction_set",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
}
},
"required": [
"message_type",
"platform_ID",
"instruction_set"
],
"type": "object"
},
"platform_status": {
"oneOf": [
{
"properties": {
"no_position_reason": {
"description": "Why position data is unavailable",
"enum": [
"missing",
"invalid",
"old",
"poor_fix",
"unavailable",
"not_applicable"
],
"example": "invalid",
"type": "string"
}
},
"required": [
"no_position_reason"
],
"type": "object"
},
{
"properties": {
"position": {
"$ref": "#/components/schemas/geojson.org.schema.Point.json"
},
"waypoint": {
"$ref": "#/components/schemas/geojson.org.schema.Point.json"
}
},
"required": [
"position"
],
"type": "object"
},
{
"properties": {
"altitude": {
"description": "Target altitude in metres",
"example": 20.0,
"example": 20,
"format": "float",
"type": "number"
},
"autonomy_engine_plan_ID": {
"description": "Last mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform",
"example": 1,
"type": "integer"
},
"battery_output": {
"description": "Battery output in kW",
"example": 80.2,
"format": "float",
"type": "number"
},
"battery_remaining_capacity": {
"description": "Battery remaining % provided by respective C2",
"example": 80.2,
"format": "float",
"type": "number"
},
"depth": {
"default": 0.0,
},
"depth": {
"default": 0,
"description": "Target depth in metres",
"example": 50.0,
"format": "float",
"type": "number"
},
"endurance": {
"description": "Estimate of hours of operation remaining based on present output or performance",
"example": 7.4,
"format": "float",
"type": "number"
},
"fuel_remaining_capacity": {
"description": "Percentage remaining capacity",
"example": 80.2,
"example": 50,
"format": "float",
"type": "number"
},
"fuel_volume": {
"description": "Litres of liquid fuel",
"example": 12.5,
"format": "float",
"type": "number"
},
"heading": {
"description": "Angular distance relative to north, usually 000\u00b0 at north, clockwise through 359\u00b0, in degrees",
"example": 124.3,
"format": "float",
"type": "number"
},
"health_status": {
"description": "Health status where 0 is OK, 1 is platform has an ERROR",
"example": false,
"type": "boolean"
},
"latitude": {
},
"latitude": {
"description": "Latitude (Y-coordinate) in decimal degrees.",
"example": 178.2,
"format": "float",
"type": "number"
},
"localisation_east_error": {
"description": "Difference in EAST between deadreckoningand USBL update.",
"example": 0.000129,
"format": "float",
"type": "number"
},
"localisation_north_error": {
"description": "Difference in NORTH between deadreckoning and USBL update.",
"example": 0.000129,
"format": "float",
"type": "number"
},
"longitude": {
},
"longitude": {
"description": "Longitude (X-coordinate) in decimal degrees.",
"example": -10.122,
"format": "float",
"type": "number"
},
"message_type": {
"description": "Type of message",
"enum": [
"platform_status"
],
"example": "platform_status",
"type": "string"
},
"mission_plan_ID": {
"description": "Mission plan ID according to platform-C2 system",
"example": 1,
"type": "integer"
},
"mission_track_ID": {
"description": "Track number - stage in mission (e.g. 4 --> Waypoint 3 to Waypoint 4)",
"example": 4,
"type": "integer"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
},
"platform_state": {
"description": "Current state executed by platform. E.g. STOP, IDLE, ABORT.",
"example": "ABORT",
"type": "string"
},
"platform_timestamp": {
"description": "Timestamp for onboard platform status message",
"example": "2022-12-21T00:00:00Z",
"format": "date-time",
"type": "string"
},
"range_to_go": {
"description": "Estimated distance to reach next waypoint",
"example": 124.3,
"format": "float",
"type": "number"
},
"sensor_config": {
"description": "Scanning sensor on platform available to be controlled by the Autonomy Engine",
"properties": {
"additional_data": {
"description": "Any addition fields/data to be added here",
"example": {
"payload": [
1.2,
434
]
},
"type": "object"
},
"sensor_on": {
"description": "Sensor switched on (true) or off (false)",
"example": true,
"type": "boolean"
},
"sensor_serial": {
"description": "serial number of sensor",
"example": "mbes-002a",
"type": "string"
}
},
"type": "object"
},
"speed_over_ground": {
"description": "Speed over ground",
"example": 124.3,
"format": "float",
"type": "number"
},
"status_source": {
"description": "Indicate if this status message is from the platform or USBL",
"enum": [
"usbl",
"onboard_platform"
],
"example": "usbl",
"type": "string"
},
"thrust_applied": {
"description": "Thrust applied",
"example": 124.3,
"format": "float",
"type": "number"
},
"transmission_mode": {
"description": "Mode in which status message was transmitted when on the surface (e.g. iridium/wifi) or underwater (e.g. acoustics)",
"enum": [
"acoustics",
"iridium",
"wifi",
"starlink"
],
"example": "wifi",
"type": "string"
},
"usbl_fix_seconds_ago": {
"description": "USBL Fix received x second ago.",
"example": 10.0,
"format": "float",
"type": "number"
},
"water_current_velocity": {
"description": "Water current magnitude and direction",
"example": "124.3NE",
"type": "string"
}
},
"required": [
"message_type",
"platform_ID",
"status_source",
"platform_timestamp",
"latitude",
"longitude"
],
"type": "object"
},
"platform_status_encoded": {
"properties": {
"data": {
"description": "encoded string. E.g. Base64 encoded",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"file_name": {
"description": "Name of file",
"example": "ah1-0238126349247372.bin",
"type": "string"
},
"is_binary": {
"description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example": true,
"type": "boolean"
},
"message_type": {
"description": "Type of message",
"enum": [
"platform_status_encoded"
],
"example": "platform_status_encoded",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "application/gzip",
"type": "string"
}
},
"required": [
"data",
"is_binary"
],
"type": "object"
},
"survey": {
"properties": {
"latitude_A": {
"description": "Latitude of point A(intersection of normal)from waypoint A to survey line",
"example": 178.2,
"format": "float",
"type": "number"
},
"latitude_B": {
"description": "Latitude of point B(intersection of normal)from waypoint B to survey line",
"example": 178.2,
"format": "float",
"type": "number"
},
"latitude_C": {
"description": "Latitude of point C(intersection of normal)from waypoint C to survey line",
"example": 178.2,
},
"waypoint_altitude": {
"description": "Target altitude in metres",
"example": 20,
"format": "float",
"type": "number"
},
"latitude_D": {
"description": "Latitude of point D(intersection of normal)from waypoint D to survey line",
"example": 178.2,
},
"waypoint_depth": {
"default": 0,
"description": "Target depth in metres",
"example": 50,
"format": "float",
"type": "number"
},
"latitude_E": {
"description": "Latitude of point E(intersection of normal)from waypoint E to survey line",
},
"waypoint_latitude": {
"description": "Latitude (Y-coordinate) in decimal degrees.",
"example": 178.2,
"format": "float",
"type": "number"
},
"longitude_A": {
"description": "Longitude of point A(intersection of normal)from waypoint A to survey line",
"example": -10.122,
"format": "float",
"type": "number"
},
"longitude_B": {
"description": "Longitude of point B(intersection of normal)from waypoint B to survey line",
"example": -10.122,
"format": "float",
"type": "number"
},
"longitude_C": {
"description": "Longitude of point C(intersection of normal)from waypoint C to survey line",
"example": -10.122,
"format": "float",
"type": "number"
},
"longitude_D": {
"description": "Longitude of point D(intersection of normal)from waypoint D to survey line",
"example": -10.122,
"format": "float",
"type": "number"
},
"longitude_E": {
"description": "Longitude of point E(intersection of normal)from waypoint E to survey line",
},
"waypoint_longitude": {
"description": "Longitude (X-coordinate) in decimal degrees.",
"example": -10.122,
"format": "float",
"type": "number"
},
"message_type": {
"description": "Type of message",
"enum": [
"survey"
],
"example": "survey",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "ecosub-2",
"type": "string"
},
"timestamp": {
"description": "Timestamp for onboard message",
"example": "2022-12-21T00:00:00Z",
"format": "date-time",
"type": "string"
},
"track_ID": {
"description": "Track number of action(s) currently executed by platform",
"example": 1,
"type": "integer"
}
},
"required": [
"latitude_A",
"longitude_A",
"latitude_B",
"longitude_B",
"platform_ID"
],
"type": "object"
},
"survey_encoded": {
"properties": {
"data": {
"description": "encoded string. E.g. Base64 encoded",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"file_name": {
"description": "Name of file",
"example": "ah1-0238126349247372.bin",
"type": "string"
},
"is_binary": {
"description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
}
},
"required": [
"latitude",
"longitude"
],
"type": "object"
}
],
"properties": {
"additional_data": {
"description": "Any addition fields/data to be added here",
"example": {
"m_coulomb_amphr_total": 95.45837
},
"type": "object"
},
"autonomy_engine_plan_ID": {
"description": "Last mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform",
"example": 1,
"type": "integer"
},
"battery_output": {
"description": "Battery output in kW",
"example": 80.2,
"format": "float",
"type": "number"
},
"battery_remaining_capacity": {
"description": "Battery remaining % provided by respective C2",
"example": 80.2,
"format": "float",
"type": "number"
},
"endurance": {
"description": "Estimate of hours of operation remaining based on present output or performance",
"example": 7.4,
"format": "float",
"type": "number"
},
"fuel_remaining_capacity": {
"description": "Percentage remaining capacity",
"example": 80.2,
"format": "float",
"type": "number"
},
"fuel_volume": {
"description": "Litres of liquid fuel",
"example": 12.5,
"format": "float",
"type": "number"
},
"heading": {
"description": "Angular distance relative to north, usually 000° at north, clockwise through 359°, in degrees",
"example": 124.3,
"format": "float",
"type": "number"
},
"health_status": {
"description": "Health status where 0 is OK, 1 is platform has an ERROR",
"example": false,
"type": "boolean"
},
"localisation_east_error": {
"description": "Difference in EAST between deadreckoningand USBL update.",
"example": 0.000129,
"format": "float",
"type": "number"
},
"localisation_north_error": {
"description": "Difference in NORTH between deadreckoning and USBL update.",
"example": 0.000129,
"format": "float",
"type": "number"
},
"message_type": {
"description": "Type of message",
"enum": [
"platform_status"
],
"example": "platform_status",
"type": "string"
},
"mission_plan_ID": {
"description": "Mission plan ID according to platform-C2 system",
"example": 1,
"type": "integer"
},
"mission_track_ID": {
"description": "Track number - stage in mission (e.g. 4 --\u003E Waypoint 3 to Waypoint 4)",
"example": 4,
"type": "integer"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
},
"platform_state": {
"description": "Current state executed by platform. E.g. STOP, IDLE, ABORT.",
"example": "ABORT",
"type": "string"
},
"platform_timestamp": {
"description": "Timestamp for onboard platform status message",
"example": "2022-12-21T00:00:00Z",
"format": "date-time",
"type": "string"
},
"range_to_go": {
"description": "Estimated distance to reach next waypoint",
"example": 124.3,
"format": "float",
"type": "number"
},
"sensor_config": {
"description": "Scanning sensor on platform available to be controlled by the Autonomy Engine",
"properties": {
"additional_data": {
"description": "Any addition fields/data to be added here",
"example": {
"payload": [1.2, 434]
},
"type": "object"
},
"sensor_on": {
"description": "Sensor switched on (true) or off (false)",
"example": true,
"type": "boolean"
},
"message_type": {
"description": "Type of message",
"enum": [
"survey_encoded"
],
"example": "survey_encoded",
},
"sensor_serial": {
"description": "serial number of sensor",
"example": "mbes-002a",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "application/gzip",
"type": "string"
}
},
"required": [
"data",
"is_binary"
],
"type": "object"
}
}
},
"type": "object"
},
"speed_over_ground": {
"description": "Speed over ground",
"example": 124.3,
"format": "float",
"type": "number"
},
"status_source": {
"description": "Indicate if this status message is from the platform or USBL",
"enum": [
"usbl",
"onboard_platform",
"simulated"
],
"example": "usbl",
"type": "string"
},
"thrust_applied": {
"description": "Thrust applied",
"example": 124.3,
"format": "float",
"type": "number"
},
"transmission_mode": {
"description": "Mode in which status message was transmitted when on the surface (e.g. iridium/wifi) or underwater (e.g. acoustics)",
"enum": [
"acoustics",
"iridium",
"wifi",
"starlink"
],
"example": "wifi",
"type": "string"
},
"usbl_fix_seconds_ago": {
"description": "USBL Fix received x second ago.",
"example": 10,
"format": "float",
"type": "number"
},
"water_current_velocity": {
"description": "Water current magnitude and direction",
"example": "124.3NE",
"type": "string"
}
},
"required": [
"message_type",
"platform_ID",
"status_source",
"platform_timestamp"
],
"type": "object"
},
"platform_status_encoded": {
"properties": {
"data": {
"description": "encoded string. E.g. Base64 encoded",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"file_name": {
"description": "Name of file",
"example": "ah1-0238126349247372.bin",
"type": "string"
},
"is_binary": {
"description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example": true,
"type": "boolean"
},
"message_type": {
"description": "Type of message",
"enum": [
"platform_status_encoded"
],
"example": "platform_status_encoded",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "application/gzip",
"type": "string"
}
},
"required": [
"data",
"is_binary"
],
"type": "object"
},
"survey": {
"properties": {
"latitude_A": {
"description": "Latitude of point A(intersection of normal)from waypoint A to survey line",
"example": 178.2,
"format": "float",
"type": "number"
},
"latitude_B": {
"description": "Latitude of point B(intersection of normal)from waypoint B to survey line",
"example": 178.2,
"format": "float",
"type": "number"
},
"latitude_C": {
"description": "Latitude of point C(intersection of normal)from waypoint C to survey line",
"example": 178.2,
"format": "float",
"type": "number"
},
"latitude_D": {
"description": "Latitude of point D(intersection of normal)from waypoint D to survey line",
"example": 178.2,
"format": "float",
"type": "number"
},
"latitude_E": {
"description": "Latitude of point E(intersection of normal)from waypoint E to survey line",
"example": 178.2,
"format": "float",
"type": "number"
},
"longitude_A": {
"description": "Longitude of point A(intersection of normal)from waypoint A to survey line",
"example": -10.122,
"format": "float",
"type": "number"
},
"longitude_B": {
"description": "Longitude of point B(intersection of normal)from waypoint B to survey line",
"example": -10.122,
"format": "float",
"type": "number"
},
"longitude_C": {
"description": "Longitude of point C(intersection of normal)from waypoint C to survey line",
"example": -10.122,
"format": "float",
"type": "number"
},
"longitude_D": {
"description": "Longitude of point D(intersection of normal)from waypoint D to survey line",
"example": -10.122,
"format": "float",
"type": "number"
},
"longitude_E": {
"description": "Longitude of point E(intersection of normal)from waypoint E to survey line",
"example": -10.122,
"format": "float",
"type": "number"
},
"message_type": {
"description": "Type of message",
"enum": [
"survey"
],
"example": "survey",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "ecosub-2",
"type": "string"
},
"timestamp": {
"description": "Timestamp for onboard message",
"example": "2022-12-21T00:00:00Z",
"format": "date-time",
"type": "string"
},
"track_ID": {
"description": "Track number of action(s) currently executed by platform",
"example": 1,
"type": "integer"
}
},
"required": [
"latitude_A",
"longitude_A",
"latitude_B",
"longitude_B",
"platform_ID"
],
"type": "object"
},
"survey_encoded": {
"properties": {
"data": {
"description": "encoded string. E.g. Base64 encoded",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type": "string"
},
"file_name": {
"description": "Name of file",
"example": "ah1-0238126349247372.bin",
"type": "string"
},
"is_binary": {
"description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example": true,
"type": "boolean"
},
"message_type": {
"description": "Type of message",
"enum": [
"survey_encoded"
],
"example": "survey_encoded",
"type": "string"
},
"mime_type": {
"description": "MIME type",
"example": "application/gzip",
"type": "string"
}
},
"required": [
"data",
"is_binary"
],
"type": "object"
},
"waypoints": {
"properties": {
"message_type": {
"description": "Type of message",
"enum": [
"waypoints"
],
"example": "waypoints",
"type": "string"
},
"platform_ID": {
"description": "Unique identifier for this platform",
"example": "reav-x-1",
"type": "string"
},
"platform_timestamp": {
"description": "Timestamp for onboard platform status message",
"example": "2022-12-21T00:00:00Z",
"format": "date-time",
"type": "string"
},
"status_source": {
"description": "Indicate if this status message is from the platform or USBL",
"enum": [
"onboard_platform",
"simulated",
"autonomy"
],
"example": "usbl",
"type": "string"
},
"waypoints": {
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/geojson.org.schema.Point.json"
},
{
"properties": {
"altitude": {
"description": "Target altitude in metres",
"example": 20,
"format": "float",
"type": "number"
},
"depth": {
"default": 0,
"description": "Target depth in metres",
"example": 50,
"format": "float",
"type": "number"
},
"latitude": {
"description": "Latitude (Y-coordinate) in decimal degrees.",
"example": 178.2,
"format": "float",
"type": "number"
},
"longitude": {
"description": "Longitude (X-coordinate) in decimal degrees.",
"example": -10.122,
"format": "float",
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"type": "object"
}
],
"type": "object"
},
"type": "array"
}
},
"required": [
"message_type",
"platform_ID",
"status_source",
"platform_timestamp",
"waypoints"
],
"type": "object"
}
}
},
"info":{
"description":"SoAR message protocol in schemas",
"title":"SoAR Backbone Message Formats",
"version":"0.2"
},
"openapi": "3.0.2",
"paths": {}
}
\ No newline at end of file
},
"info": {
"description": "SoAR message protocol in schemas",
"title": "SoAR Backbone Message Formats",
"version": "1.0"
},
"openapi": "3.0.2",
"paths": {
}
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment