Commit 04128aa8 authored by Trishna Saeharaseelan's avatar Trishna Saeharaseelan
Browse files

feat: support binary payload

{
"header": {
"message_ID": "t1237003c-0000-11aa-a1eb-bvcdfghjgfdd",
"timestamp": "2023-03-16T00:00:00Z",
"version": 2,
"source": "autonomy_engine",
"destination": "soar.hermes.autosub.alr-52.send.mission_plan_encoded",
"delivery_type": "publish",
"encoded": true
},
"payload": {
"message_type": "mission_plan_encoded",
"data": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBlB/tRYQW3nez5HWYFBAAD+zwBySUAAAADVek72v1N2lUQAAAABAQAAAAAAAAAAAAAAAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"file_name": "ah1_03837434286438.sbd",
"is_binary": true
}
}
{
"header": {
"message_ID": "e1237003c-0000-11aa-a1eb-bvcdfghjgfdd",
"timestamp": "2023-03-16T00:00:00Z",
"version": 2,
"source": "hermes.ecosub2",
"destination": "soar.planet-ocean.ecosub.ecosub-2.receive.observation_encoded",
"delivery_type": "publish",
"encoded": true
},
"payload": {
"message_type": "observation_encoded",
"data": "T1N2lUQAAAABAQAAAAAAAAAAAAAAAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"file_name": "ecosub1_200002114.txt",
"is_binary": true
}
}
{
"header": {
"message_ID": "t1237003c-0000-11aa-a1eb-bvcdfghjgfdd",
"timestamp": "2023-03-16T00:00:00Z",
"version": 2,
"source": "hermes.ah1",
"destination": "soar.noc.autosub.alr-52.receive.platform_status_encoded",
"delivery_type": "publish",
"encoded": true
},
"payload": {
"message_type": "platform_status_encoded",
"data": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBlB/tRYQW3nez5HWYFBAAD+zwBySUAAAADVek72v1N2lUQAAAABAQAAAAAAAAAAAAAAAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"file_name": "ah1_03837434286438.sbd",
"is_binary": true
}
}
{
"header": {
"message_ID": "e1237003c-0000-11aa-a1eb-bvcdfghjgfdd",
"timestamp": "2023-03-16T00:00:00Z",
"version": 2,
"source": "hermes.ecosub2",
"destination": "soar.planet-ocean.ecosub.ecosub-2.receive.observation_encoded",
"delivery_type": "publish",
"encoded": true
},
"payload": {
"message_type": "observation_encoded",
"data": "T1N2lUQAAAABAQAAAAAAAAAAAAAAAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"file_name": "ecosub1_200002114.txt",
"is_binary": true
}
}
"""
schemas: Encoded (compiled) type messages that are applicable to compiled
platform statuses and observations (from the platform), and compiled
mission plans (to the platform). This encoded schema is applicable to the
different message types: mission_plan_encoded, observation_encoded, and
platform_status_encoded.
"""
encoded_schema = {
"type": "object",
"properties": {
"message_type": {
"type": "string",
"description": "Type of message",
"example": "mission_plan",
"enum": [
"mission_plan_encoded",
"observation_encoded",
"platform_status_encoded",
],
},
"data": {
"type": "string",
"description": "Base64 encoded string",
"example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcB"
+ "AAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
},
"file_name": {
"type": "string",
"description": "Name of file",
"example": "ah1-0238126349247372.bin",
},
"mime_type": {
"type": "string",
"description": "MIME type",
"example": "", # TODO: Add example
},
"is_binary": {
"type": "boolean",
"description": "Base64 encrypted binary data",
"example": True,
},
},
"required": ["data", "is_binary"],
}
from formats import message_header from formats import message_header
from formats.encoded import encoded_schema
from formats.mission_plan import mission_plan_schema from formats.mission_plan import mission_plan_schema
from formats.observation import observation_schema from formats.observation import observation_schema
from formats.planning_configuration import planning_configuration_schema from formats.planning_configuration import planning_configuration_schema
...@@ -51,26 +52,38 @@ swagger_config = { ...@@ -51,26 +52,38 @@ swagger_config = {
"propertyName": "message_type", "propertyName": "message_type",
"mapping": { "mapping": {
"mission_plan": "#/components/schemas/mission_plan", "mission_plan": "#/components/schemas/mission_plan",
"mission_plan_encoded": "#/components/schemas/"
+ "mission_plan_encoded",
"observation": "#/components/schemas/observation", "observation": "#/components/schemas/observation",
"observation_encoded": "#/components/schemas/"
+ "observation_encoded",
"planning_configuration": "#/components/schemas/" "planning_configuration": "#/components/schemas/"
+ "planning_configuration", + "planning_configuration",
"platform_status": "#/components/schemas/platform_status", "platform_status": "#/components/schemas/platform_status",
"platform_status_encoded": "#/components/schemas/"
+ "platform_status_encoded",
"acknowledgement": "#/components/schemas/acknowledgement", "acknowledgement": "#/components/schemas/acknowledgement",
}, },
}, },
"oneOf": [ "oneOf": [
{"$ref": "#/components/schemas/acknowledgement"}, {"$ref": "#/components/schemas/acknowledgement"},
{"$ref": "#/components/schemas/mission_plan"}, {"$ref": "#/components/schemas/mission_plan"},
{"$ref": "#/components/schemas/mission_plan_encoded"},
{"$ref": "#/components/schemas/observation"}, {"$ref": "#/components/schemas/observation"},
{"$ref": "#/components/schemas/observation_encoded"},
{"$ref": "#/components/schemas/planning_configuration"}, {"$ref": "#/components/schemas/planning_configuration"},
{"$ref": "#/components/schemas/platform_status"}, {"$ref": "#/components/schemas/platform_status"},
{"$ref": "#/components/schemas/platform_status_encoded"},
], ],
}, },
"header": message_header, "header": message_header,
"mission_plan": mission_plan_schema, "mission_plan": mission_plan_schema,
"mission_plan_encoded": encoded_schema,
"observation": observation_schema, "observation": observation_schema,
"observation_encoded": encoded_schema,
"planning_configuration": planning_configuration_schema, "planning_configuration": planning_configuration_schema,
"platform_status": platform_status_schema, "platform_status": platform_status_schema,
"platform_status_encoded": encoded_schema,
"acknowledgement": acknowledgement_schema, "acknowledgement": acknowledgement_schema,
} }
}, },
......
{ {
"components":{ "components":{
"schemas":{ "schemas":{
"MESSAGE":{ "MESSAGE":{
"description":"Full message definition with message-metadata in `header` and different message type schemas under `payload`", "description":"Full message definition with message-metadata in `header` and different message type schemas under `payload`",
"properties":{ "properties":{
"header":{ "header":{
"$ref":"#/components/schemas/header" "$ref":"#/components/schemas/header"
}, },
"payload":{ "payload":{
"$ref":"#/components/schemas/payload" "$ref":"#/components/schemas/payload"
} }
}, },
"required":[ "required":[
"header", "header",
"payload" "payload"
], ],
"type":"object" "type":"object"
}, },
"acknowledgement":{ "acknowledgement":{
"properties":{ "properties":{
"approved":{ "approved":{
"description":"Human-in-the-loop approval.1 - Plan approved; 0 - Plan Rejected", "description":"Human-in-the-loop approval.1 - Plan approved; 0 - Plan Rejected",
"type":"boolean" "type":"boolean"
}, },
"autonomy_engine_plan_ID":{ "autonomy_engine_plan_ID":{
"description":"Mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", "description":"Mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform",
"example":1, "example":1,
"type":"integer" "type":"integer"
}, },
"message_type":{ "message_type":{
"description":"Type of message", "description":"Type of message",
"example":"acknowledgement", "enum":[
"type":"string", "acknowledgement"
"enum": ["acknowledgement"] ],
}, "example":"acknowledgement",
"platform_ID":{ "type":"string"
"description":"Unique identifier for this platform", },
"example":"reav-x-1", "platform_ID":{
"type":"string" "description":"Unique identifier for this platform",
} "example":"reav-x-1",
}, "type":"string"
"required":[ }
"message_type", },
"autonomy_engine_plan_ID", "required":[
"platform_ID", "message_type",
"approved" "autonomy_engine_plan_ID",
], "platform_ID",
"type":"object" "approved"
}, ],
"header":{ "type":"object"
"discriminator":{ },
"propertyName":"message_type" "header":{
}, "discriminator":{
"properties":{ "propertyName":"message_type"
"delivery_type":{ },
"default":"publish", "properties":{
"description":"To publish or broadcast this message.", "delivery_type":{
"enum":[ "default":"publish",
"broadcast", "description":"To publish or broadcast this message.",
"publish" "enum":[
], "broadcast",
"example":"publish", "publish"
"type":"string" ],
}, "example":"publish",
"destination":{ "type":"string"
"description":"Publisher topic; What is the destination of this message", },
"example":"ah1", "destination":{
"type":"string" "description":"Publisher topic; What is the destination of this message",
}, "example":"ah1",
"encoded":{ "type":"string"
"description":"Indicate that message raw (encoded) or decoded. Options: encoded=True, decoded=False", },
"example":false, "encoded":{
"type":"boolean" "description":"Indicate that message raw (encoded) or decoded. Options: encoded=True, decoded=False",
}, "example":false,
"message_ID":{ "type":"boolean"
"description":"An identifier for the type of message received.", },
"example":"b427003c-0000-11aa-a1eb-bvcdfghjgfdd", "message_ID":{
"type":"string" "description":"An identifier for the type of message received.",
}, "example":"b427003c-0000-11aa-a1eb-bvcdfghjgfdd",
"source":{ "type":"string"
"description":"The sender; Where is this message from", },
"example":"autonomy_engine", "source":{
"type":"string" "description":"The sender; Where is this message from",
}, "example":"autonomy_engine",
"timestamp":{ "type":"string"
"description":"Timestamp of message", },
"example":"2022-11-16T00:00:00Z", "timestamp":{
"format":"date-time", "description":"Timestamp of message",
"type":"string" "example":"2022-11-16T00:00:00Z",
}, "format":"date-time",
"version":{ "type":"string"
"description":"Version of comms backbone message format protocol", },
"example":2.0, "version":{
"format":"float", "description":"Version of comms backbone message format protocol",
"type":"number" "example":2.0,
} "format":"float",
}, "type":"number"
"type":"object" }
}, },
"mission_plan":{ "type":"object"
"properties":{ },
"autonomy_engine_plan_ID":{ "mission_plan":{
"description":"Unique identifier for this plangenerated by the Autonomy Engine", "properties":{
"example":3, "autonomy_engine_plan_ID":{
"type":"integer" "description":"Unique identifier for this plangenerated by the Autonomy Engine",
}, "example":3,
"message_type":{ "type":"integer"
"description":"Type of message", },
"example":"mission_plan", "message_type":{
"type":"string", "description":"Type of message",
"enum": ["mission_plan"] "enum":[
}, "mission_plan"
"plan":{ ],
"items":{ "example":"mission_plan",
"properties":{ "type":"string"
"action":{ },
"description":"Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.", "plan":{
"example":"move", "items":{
"type":"string" "properties":{
}, "action":{
"activate_payload":{ "description":"Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.",
"description":"To activate/deactivate sensor for Autosub Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`", "example":"move",
"example":true, "type":"string"
"type":"boolean" },
}, "activate_payload":{
"timeout": { "description":"To activate/deactivate sensor for Autosub Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`",
"description": "Timeout set to perform action", "example":true,
"example": 1800.0, "type":"boolean"
"format": "float", },
"type": "number" "altitude":{
}, "description":"Altitude of next action",
"altitude":{ "example":15.0,
"description":"Altitude of next action", "format":"float",
"example":15.0, "type":"number"
"format":"float", },
"type":"number" "depth":{
}, "description":"Depth of next action",
"depth":{ "example":15.0,
"description":"Depth of next action", "format":"float",
"example":15.0, "type":"number"
"format":"float", },
"type":"number" "start_point_latitude":{
}, "description":"Start point, x-coordinate",
"start_point_latitude":{ "example":-4.187143188645706,
"description":"Start point, x-coordinate", "format":"float",
"example":-4.187143188645706, "type":"number"
"format":"float", },
"type":"number" "start_point_longitude":{
}, "description":"Start point, y-coordinate",
"start_point_longitude":{ "example":50.37072283932642,
"description":"Start point, y-coordinate", "format":"float",
"example":50.37072283932642, "type":"number"
"format":"float", },
"type":"number" "target_waypoint_latitude":{
}, "description":"Target waypoint, x-coordinate",
"target_waypoint_latitude":{ "example":-4.187143188645706,
"description":"Target waypoint, x-coordinate", "format":"float",
"example":-4.187143188645706, "type":"number"
"format":"float", },
"type":"number" "target_waypoint_longitude":{
}, "description":"Target waypoint, y-coordinate",
"target_waypoint_longitude":{ "example":50.37072283932642,
"description":"Target waypoint, y-coordinate", "format":"float",
"example":50.37072283932642, "type":"number"
"format":"float", },
"type":"number" "timeout":{
} "description":"Timeout set to perform action",
}, "example":1800.0,
"required":[ "format":"float",
"target_waypoint_latitude", "type":"number"
"target_waypoint_longitude" }
], },
"type":"object" "required":[
}, "target_waypoint_latitude",
"type":"array" "target_waypoint_longitude"
}, ],
"platform_ID":{ "type":"object"
"description":"Unique identifier for this platform", },
"example":"reav-x-1", "type":"array"
"type":"string" },
} "platform_ID":{
}, "description":"Unique identifier for this platform",
"required":[ "example":"reav-x-1",
"message_type", "type":"string"
"autonomy_engine_plan_ID", }
"platform_ID", },
"plan" "required":[
], "message_type",
"type":"object" "autonomy_engine_plan_ID",
}, "platform_ID",
"observation":{ "plan"
"properties":{ ],
"additional_data":{ "type":"object"
"description":"Placeholder field for any additional data", },
"example":{ "mission_plan_encoded":{
"sensor_payload":false "properties":{
} "data":{
}, "description":"Base64 encoded string",
"message_type":{ "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"description":"Type of message", "type":"string"
"example":"observation", },
"type":"string", "file_name":{
"enum": ["observation"] "description":"Name of file",
}, "example":"ah1-0238126349247372.bin",
"platform_ID":{ "type":"string"
"description":"Unique identifier for this platform", },
"example":"reav-x-1", "is_binary":{
"type":"string" "description":"Base64 encrypted binary data",
}, "example":true,
"points_of_interest":{ "type":"boolean"
"description":"Points from features of interest identified by platform if any found.", },
"items":{ "message_type":{
"properties":{ "description":"Type of message",
"latitude":{ "enum":[
"description":"Identified x-coordinate of point of interest", "mission_plan_encoded",
"example":178.2, "observation_encoded",
"format":"float", "platform_status_encoded"
"type":"number" ],
}, "example":"mission_plan",
"longitude":{ "type":"string"
"description":"Identified y-coordinate of point of interest", },
"example":-10.122, "mime_type":{
"format":"float", "description":"MIME type",
"type":"number" "example":"",
}, "type":"string"
"quality_of_point":{ }
"description":"Quality/strength of points from features of interest identified by platform.", },
"example":0.98, "required":[
"format":"float", "data",
"type":"number" "is_binary"
} ],
}, "type":"object"
"required":[ },
"latitude", "observation":{
"longitude" "properties":{
], "additional_data":{
"type":"object" "description":"Placeholder field for any additional data",
}, "example":{
"type":"array" "sensor_payload":false
}, }
"region_surveyed":{ },
"description":"Region surveyed by given platform. GEOJSON", "message_type":{
"example":"", "description":"Type of message",
"nullable":true "enum":[
} "observation"
}, ],
"required":[ "example":"observation",
"message_type", "type":"string"
"platform_ID" },
], "platform_ID":{
"type":"object" "description":"Unique identifier for this platform",
}, "example":"reav-x-1",
"payload":{ "type":"string"
"discriminator":{ },
"mapping":{ "points_of_interest":{
"acknowledgement":"#/components/schemas/acknowledgement", "description":"Points from features of interest identified by platform if any found.",
"mission_plan":"#/components/schemas/mission_plan", "items":{
"observation":"#/components/schemas/observation", "properties":{
"planning_configuration":"#/components/schemas/planning_configuration", "latitude":{
"platform_status":"#/components/schemas/platform_status" "description":"Identified x-coordinate of point of interest",
}, "example":178.2,
"propertyName":"message_type" "format":"float",
}, "type":"number"
"oneOf":[ },
{ "longitude":{
"$ref":"#/components/schemas/acknowledgement" "description":"Identified y-coordinate of point of interest",
}, "example":-10.122,
{ "format":"float",
"$ref":"#/components/schemas/mission_plan" "type":"number"
}, },
{ "quality_of_point":{
"$ref":"#/components/schemas/observation" "description":"Quality/strength of points from features of interest identified by platform.",
}, "example":0.98,
{ "format":"float",
"$ref":"#/components/schemas/planning_configuration" "type":"number"
}, }
{ },
"$ref":"#/components/schemas/platform_status" "required":[
} "latitude",
] "longitude"
}, ],
"planning_configuration":{ "type":"object"
"properties":{ },
"exclusion_zones":{ "type":"array"
"description":"Exclusion zones for all platforms", },
"items":{ "region_surveyed":{
"description":"Using GEOJSON, exact 4-point region (rectangle shaped)", "description":"Region surveyed by given platform. GEOJSON",
"properties":{ "example":"",
"geometry_coordinates":{ "nullable":true
"example":[ }
[ },
[ "required":[
-4.187143188645706, "message_type",
50.37072283932642 "platform_ID"
], ],
[ "type":"object"
-4.202697005964865, },
50.368816892405874 "observation_encoded":{
], "properties":{
[ "data":{
-4.203156724702808, "description":"Base64 encoded string",
50.365640144076906 "example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
], "type":"string"
[ },
-4.19449868846155, "file_name":{
50.362267670845654 "description":"Name of file",
] "example":"ah1-0238126349247372.bin",
] "type":"string"
], },
"type":"array" "is_binary":{
} "description":"Base64 encrypted binary data",
}, "example":true,
"type":"object" "type":"boolean"
}, },
"type":"array" "message_type":{
}, "description":"Type of message",
"message_type":{ "enum":[
"description":"Type of message", "mission_plan_encoded",
"example":"planning_configuration", "observation_encoded",
"type":"string", "platform_status_encoded"
"enum": ["planning_configuration"] ],
}, "example":"mission_plan",
"planning_config_ID":{ "type":"string"
"description":"Unique identifier tagged to version of this configuration plan", },
"example":3, "mime_type":{
"type":"integer" "description":"MIME type",
}, "example":"",
"squads":{ "type":"string"
"items":{ }
"properties":{ },
"no_of_platforms":{ "required":[
"description":"Number of platforms", "data",
"example":3, "is_binary"
"type":"integer" ],
}, "type":"object"
"platforms":{ },
"description":"Squad consists of these platforms", "payload":{
"items":{ "discriminator":{
"properties":{ "mapping":{
"additional_specs":{ "acknowledgement":"#/components/schemas/acknowledgement",
"description":"Any addition fields/data to be added here", "mission_plan":"#/components/schemas/mission_plan",
"example":{ "mission_plan_encoded":"#/components/schemas/mission_plan_encoded",
"scan_type":"DVL", "observation":"#/components/schemas/observation",
"swath_width":10.0 "observation_encoded":"#/components/schemas/observation_encoded",
} "planning_configuration":"#/components/schemas/planning_configuration",
}, "platform_status":"#/components/schemas/platform_status",
"emergency":{ "platform_status_encoded":"#/components/schemas/platform_status_encoded"
"properties":{ },
"additional_data":{ "propertyName":"message_type"
"description":"Any addition fields/data to be added here", },
"example":{ "oneOf":[
{
}, "$ref":"#/components/schemas/acknowledgement"
"type":"object" },
}, {
"safe_command":{ "$ref":"#/components/schemas/mission_plan"
"description":"Command/Action that is native to respective partner's platform/C2", },
"enum":[ {
"go_home", "$ref":"#/components/schemas/mission_plan_encoded"
"abort_now", },
"stop_mission" {
], "$ref":"#/components/schemas/observation"
"example":"go_home", },
"type":"string" {
}, "$ref":"#/components/schemas/observation_encoded"
"target_depth":{ },
"description":"Z-coordinate safe place for respective platform . If platform to NOT stay at depth, key in `0.0`", {
"example":10.0, "$ref":"#/components/schemas/planning_configuration"
"format":"float", },
"type":"number" {
}, "$ref":"#/components/schemas/platform_status"
"target_waypoint_latitude":{ },
"description":"X-coordinate safe place for respective platform", {
"example":-7.432, "$ref":"#/components/schemas/platform_status_encoded"
"format":"float", }
"type":"number" ]
}, },
"target_waypoint_longitude":{ "planning_configuration":{
"description":"Y-coordinate safe place for respective platform", "properties":{
"example":50.365, "exclusion_zones":{
"format":"float", "description":"Exclusion zones for all platforms",
"type":"number" "items":{
} "description":"Using GEOJSON, exact 4-point region (rectangle shaped)",
}, "properties":{
"required":[ "geometry_coordinates":{
"target_waypoint_latitude", "example":[
"target_waypoint_longitude", [
"target_depth" [
], -4.187143188645706,
"type":"object" 50.37072283932642
}, ],
"max_velocity":{ [
"description":"Maximum altitude set for squad.", -4.202697005964865,
"example":0.9, 50.368816892405874
"format":"float", ],
"type":"number" [
}, -4.203156724702808,
"min_altitude":{ 50.365640144076906
"description":"Minimum altitude set for squad.", ],
"example":15.2, [
"format":"float", -4.19449868846155,
"type":"number" 50.362267670845654
}, ]
"min_velocity":{ ]
"description":"Minimum velocity set for squad.", ],
"example":0.1, "type":"array"
"format":"float", }
"type":"number" },
}, "type":"object"
"model":{ },
"example":"reav", "type":"array"
"type":"string" },
}, "message_type":{
"platform_ID":{ "description":"Type of message",
"description":"Unique identifier for this platform", "enum":[
"example":"reav-x-1", "planning_configuration"
"type":"string" ],
} "example":"planning_configuration",
}, "type":"string"
"required":[ },
"platform_ID", "planning_config_ID":{
"model", "description":"Unique identifier tagged to version of this configuration plan",
"emergency", "example":3,
"min_altitude", "type":"integer"
"min_velocity", },
"max_velocity" "squads":{
], "items":{
"type":"object" "properties":{
}, "no_of_platforms":{
"type":"array" "description":"Number of platforms",
}, "example":3,
"region_of_interest":{ "type":"integer"
"description":"Using GEOJSON, exact 4-point region (rectangle shaped)", },
"properties":{ "platforms":{
"geometry_coordinates":{ "description":"Squad consists of these platforms",
"example":[ "items":{
[ "properties":{
[ "additional_specs":{
-4.187143188645706, "description":"Any addition fields/data to be added here",
50.37072283932642 "example":{
], "scan_type":"DVL",
[ "swath_width":10.0
-4.202697005964865, },
50.368816892405874 "type":"object"
], },
[ "emergency":{
-4.203156724702808, "properties":{
50.365640144076906 "additional_data":{
], "description":"Any addition fields/data to be added here",
[ "example":{
-4.19449868846155,
50.362267670845654 }
] },
] "safe_command":{
], "description":"Command/Action that is native to respective partner's platform/C2",
"type":"array" "enum":[
} "go_home",
}, "abort_now",
"type":"object" "stop_mission"
}, ],
"squad_ID":{ "example":"go_home",
"description":"Identifier of given squad", "type":"string"
"example":23, },
"type":"integer" "target_depth":{
}, "description":"Z-coordinate safe place for respective platform . If platform to NOT stay at depth, key in `0.0`",
"squad_mission_type":{ "example":10.0,
"description":"Mission of given squad: `tracking`, `survey`, `inspection`", "format":"float",
"enum":[ "type":"number"
"tracking", },
"survey", "target_waypoint_latitude":{
"inspection" "description":"X-coordinate safe place for respective platform",
], "example":-7.432,
"example":"survey", "format":"float",
"type":"string" "type":"number"
}, },
"squad_state":{ "target_waypoint_longitude":{
"description":"In execution, Waiting.. <define further>", "description":"Y-coordinate safe place for respective platform",
"example":false, "example":50.365,
"type":"string" "format":"float",
} "type":"number"
}, }
"required":[ },
"squad_ID", "required":[
"no_of_platforms", "target_waypoint_latitude",
"platforms", "target_waypoint_longitude",
"squad_mission_type", "target_depth"
"squad_state" ],
], "type":"object"
"type":"object" },
}, "max_velocity":{
"type":"array" "description":"Maximum altitude set for squad.",
} "example":0.9,
}, "format":"float",
"required":[ "type":"number"
"message_type", },
"planning_config_ID", "min_altitude":{
"squads", "description":"Minimum altitude set for squad.",
"exclusion_zones" "example":15.2,
], "format":"float",
"type":"object" "type":"number"
}, },
"platform_status":{ "min_velocity":{
"properties":{ "description":"Minimum velocity set for squad.",
"altitude":{ "example":0.1,
"description":"Target altitude in metres", "format":"float",
"example":20.0, "type":"number"
"format":"float", },
"type":"number" "model":{
}, "example":"reav",
"autonomy_engine_plan_ID":{ "type":"string"
"description":"Last mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", },
"example":1, "platform_ID":{
"type":"integer" "description":"Unique identifier for this platform",
}, "example":"reav-x-1",
"battery_remaining_capacity":{ "type":"string"
"description":"Battery remaining % provided by respective C2", }
"example":80.2, },
"format":"float", "required":[
"type":"number" "platform_ID",
}, "model",
"depth":{ "emergency",
"default":0.0, "min_altitude",
"description":"Target depth in metres", "min_velocity",
"example":50.0, "max_velocity"
"format":"float", ],
"type":"number" "type":"object"
}, },
"heading":{ "type":"array"
"description":"Angular distance relative to north, usually 000\u00b0 at north, clockwise through 359\u00b0, in degrees", },
"example":124.3, "region_of_interest":{
"format":"float", "description":"Using GEOJSON, exact 4-point region (rectangle shaped)",
"type":"number" "properties":{
}, "geometry_coordinates":{
"health_status":{ "example":[
"description":"Health status where 0 is OK, 1 is platform has an ERROR", [
"example":false, [
"type":"boolean" -4.187143188645706,
}, 50.37072283932642
"latitude":{ ],
"description":"Latitude in decimal degrees.", [
"example":178.2, -4.202697005964865,
"format":"float", 50.368816892405874
"type":"number" ],
}, [
"localisation_east_error":{ -4.203156724702808,
"description":"Difference in EAST between deadreckoningand USBL update.", 50.365640144076906
"example":0.000129, ],
"format":"float", [
"type":"number" -4.19449868846155,
}, 50.362267670845654
"localisation_north_error":{ ]
"description":"Difference in NORTH between deadreckoning and USBL update.", ]
"example":0.000129, ],
"format":"float", "type":"array"
"type":"number" }
}, },
"longitude":{ "type":"object"
"description":"Longitude in decimal degrees.", },
"example":-10.122, "squad_ID":{
"format":"float", "description":"Identifier of given squad",
"type":"number" "example":23,
}, "type":"integer"
"message_type":{ },
"description":"Type of message", "squad_mission_type":{
"example":"platform_status", "description":"Mission of given squad: `tracking`, `survey`, `inspection`",
"type":"string", "enum":[
"enum": ["platform_status"] "tracking",
}, "survey",
"mission_plan_ID":{ "inspection"
"description":"Mission plan ID according to platform-C2 system", ],
"example":1, "example":"survey",
"type":"integer" "type":"string"
}, },
"mission_track_ID":{ "squad_state":{
"description":"Track number - stage in mission (e.g. 4 --> Waypoint 3 to Waypoint 4)", "description":"In execution, Waiting.. <define further>",
"example":4, "example":false,
"type":"integer" "type":"string"
}, }
"platform_ID":{ },
"description":"Unique identifier for this platform", "required":[
"example":"reav-x-1", "squad_ID",
"type":"string" "no_of_platforms",
}, "platforms",
"platform_state":{ "squad_mission_type",
"description":"Current state executed by platform. E.g. STOP, IDLE, ABORT.", "squad_state"
"example":"ABORT", ],
"type":"string" "type":"object"
}, },
"platform_timestamp":{ "type":"array"
"description":"Timestamp for onboard platform status message", }
"example":"2022-12-21T00:00:00Z", },
"format":"date-time", "required":[
"type":"string" "message_type",
}, "planning_config_ID",
"range_to_go":{ "squads",
"description":"Estimated distance to reach next waypoint", "exclusion_zones"
"example":124.3, ],
"format":"float", "type":"object"
"type":"number" },
}, "platform_status":{
"sensor_config":{ "properties":{
"description":"Scanning sensor on platform available to be controlled by the Autonomy Engine", "altitude":{
"properties":{ "description":"Target altitude in metres",
"additional_data":{ "example":20.0,
"description":"Any addition fields/data to be added here", "format":"float",
"example":{ "type":"number"
"payload":[ },
1.2, "autonomy_engine_plan_ID":{
434 "description":"Last mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform",
] "example":1,
}, "type":"integer"
"type":"object" },
}, "battery_remaining_capacity":{
"sensor_on":{ "description":"Battery remaining % provided by respective C2",
"description":"Sensor switched on (True) or off (False)", "example":80.2,
"example":true, "format":"float",
"type":"boolean" "type":"number"
}, },
"sensor_serial":{ "depth":{
"description":"serial number of sensor", "default":0.0,
"example":"mbes-002a", "description":"Target depth in metres",
"type":"string" "example":50.0,
} "format":"float",
}, "type":"number"
"type":"object" },
}, "heading":{
"speed_over_ground":{ "description":"Angular distance relative to north, usually 000\u00b0 at north, clockwise through 359\u00b0, in degrees",
"description":"Speed over ground", "example":124.3,
"example":124.3, "format":"float",
"format":"float", "type":"number"
"type":"number" },
}, "health_status":{
"status_source":{ "description":"Health status where 0 is OK, 1 is platform has an ERROR",
"description":"Indicate if this status message is from the platform or USBL", "example":false,
"enum":[ "type":"boolean"
"usbl", },
"onboard_platform" "latitude":{
], "description":"Latitude in decimal degrees.",
"example":"usbl", "example":178.2,
"type":"string" "format":"float",
}, "type":"number"
"thrust_applied":{ },
"description":"Thrust applied", "localisation_east_error":{
"example":124.3, "description":"Difference in EAST between deadreckoningand USBL update.",
"format":"float", "example":0.000129,
"type":"number" "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)", "localisation_north_error":{
"enum":[ "description":"Difference in NORTH between deadreckoning and USBL update.",
"acoustics", "example":0.000129,
"iridium", "format":"float",
"wifi", "type":"number"
"starlink" },
], "longitude":{
"example":"wifi", "description":"Longitude in decimal degrees.",
"type":"string" "example":-10.122,
}, "format":"float",
"usbl_fix_seconds_ago":{ "type":"number"
"description":"USBL Fix received x second ago.", },
"example":10.0, "message_type":{
"format":"float", "description":"Type of message",
"type":"number" "enum":[
}, "platform_status"
"water_current_velocity":{ ],
"description":"Water current magnitude and direction", "example":"platform_status",
"example":"124.3NE", "type":"string"
"type":"string" },
} "mission_plan_ID":{
}, "description":"Mission plan ID according to platform-C2 system",
"required":[ "example":1,
"message_type", "type":"integer"
"platform_ID", },
"status_source", "mission_track_ID":{
"platform_timestamp", "description":"Track number - stage in mission (e.g. 4 --> Waypoint 3 to Waypoint 4)",
"latitude", "example":4,
"longitude" "type":"integer"
], },
"type":"object" "platform_ID":{
} "description":"Unique identifier for this platform",
} "example":"reav-x-1",
}, "type":"string"
"info":{ },
"description":"SoAR message protocol in schemas", "platform_state":{
"title":"SoAR Backbone Message Formats", "description":"Current state executed by platform. E.g. STOP, IDLE, ABORT.",
"version":"1.0" "example":"ABORT",
}, "type":"string"
"openapi":"3.0.2", },
"paths":{ "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":"Base64 encoded string",
"example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type":"string"
},
"file_name":{
"description":"Name of file",
"example":"ah1-0238126349247372.bin",
"type":"string"
},
"is_binary":{
"description":"Base64 encrypted binary data",
"example":true,
"type":"boolean"
},
"message_type":{
"description":"Type of message",
"enum":[
"mission_plan_encoded",
"observation_encoded",
"platform_status_encoded"
],
"example":"mission_plan",
"type":"string"
},
"mime_type":{
"description":"MIME type",
"example":"",
"type":"string"
}
},
"required":[
"data",
"is_binary"
],
"type":"object"
}
}
},
"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