diff --git a/formats/mission_plan.py b/formats/mission_plan.py index 72435473eb90feb57d9e025631ba055cac1b096e..1195e9916277d2fc810ac8dd009d29205f845f0d 100644 --- a/formats/mission_plan.py +++ b/formats/mission_plan.py @@ -86,5 +86,5 @@ mission_plan_schema = { "items": action_schema, }, }, - "required": ["message_type", "plan_ID", "platform_ID", "plan"], + "required": ["message_type", "autonomy_engine_plan_ID", "platform_ID", "plan"], } diff --git a/formats/planning_configuration.py b/formats/planning_configuration.py index b117b0460a3fc7222366e8217281b6c3fdf834de..ae2e99b8eae804125d0003ed0ae422b69eee074c 100644 --- a/formats/planning_configuration.py +++ b/formats/planning_configuration.py @@ -33,7 +33,6 @@ emergency_schema = { "example": 10, }, "additional_data": { - "type": "null", "description": "Any addition fields/data to be added here", "example": {}, }, @@ -78,8 +77,7 @@ platform_schema = { "description": "Maximum altitude set for squad.", "example": 0.9, }, - "additional_data": { - "type": "null", + "additional_specs": { "description": "Any addition fields/data to be added here", "example": {"swath_width": 10.0, "scan_type": "DVL"}, }, @@ -152,7 +150,6 @@ squad_metadata_schema = { "platforms", "squad_mission_type", "squad_state", - "exclusion_zones", ], } @@ -182,7 +179,7 @@ planning_configuration_schema = { }, "required": [ "message_type", - "config_ID", + "planning_config_ID", "squads", "exclusion_zones", ], diff --git a/formats/platform_status.py b/formats/platform_status.py index 30622f17c4622d5afe54e2bad16f066a170d9176..d573d42362a75fdff961c05d612cb437b7ed3732 100644 --- a/formats/platform_status.py +++ b/formats/platform_status.py @@ -18,12 +18,10 @@ sensor_schema = { "example": True, }, "additional_data": { - "type": "null", "description": "Any addition fields/data to be added here", "example": {"payload": [1.2, 434]}, }, }, - "required": [], } platform_status_message_schema = { @@ -34,156 +32,149 @@ platform_status_message_schema = { "description": "Type of message", "example": "platform_status", }, - "platform_ID": { - "type": "integer", - "description": "Identifier for platform", - "example": 1, - }, - "status_source": { - "type": "string", - "enum": ["usbl", "onboard_platform"], - "description": "Indicate if this status message is from the" - + " platform or USBL", - "example": "usbl", - }, - "transmission_mode": { - "type": "string", - "enum": ["acoustics", "iridium", "wifi", "starlink"], - "description": "Mode in which status message was transmitted" - + " when on the surface (i.e. iridium/wifi) or underwater" - + " (i.e. acoustics)", - "example": "wifi", - }, - "platform_timestamp": { - "type": "string", - "format": "date-time", - "decription": "Timestamp for onboard platform status message", - "example": "2022-12-21T00:00:00Z", - }, - "active": { - "type": "boolean", - "description": "When a platform is in deployment (executing a" - + " mission plan) this should be True", - "example": True, - }, - "platform_state": { - # TODO: Define enum with potential STATES of each platform - "type": "string", - "description": "Current state executed by platform. E.g. " - + "STOP, IDLE, ABORT.", - "example": "ABORT", - }, - "autonomy_engine_plan_ID": { - "type": "integer", - "description": "Last mission plan ID (according to Autonomy" - + " Engine's mission plan number sent) executed by platform", - "example": 1, - }, - "latitude": { - "type": "number", - "format": "float", - "description": "Latitude in decimal degrees.", - "example": 178.2, - }, - "longitude": { - "type": "number", - "format": "float", - "description": "Longitude in decimal degrees.", - "example": -10.122, - }, - "depth": { - "type": "number", - "format": "float", - "description": "Target depth in metres", - "example": 50, - "default": 0, - }, - "altitude": { - "type": "number", - "format": "float", - "description": "Target altitude in metres", - "example": 20, - }, - "mission_track_ID": { - "type": "integer", - "description": "Track number - stage in mission (e.g. " - + "4 --> Waypoint 3 to Waypoint 4)", - "example": 4, - }, - "mission_action_ID": { - "type": "integer", - "description": "", # TODO: Add description - "example": 1, - }, - "range_to_go": { - "type": "number", - "format": "float", - "description": "Estimated distance to reach next waypoint", - "example": 124.3, - }, - "speed_over_ground": { - "type": "number", - "format": "float", - "description": "", # TODO: Add description - "example": 124.3, - }, - "water_current_velocity": { - "type": "number", - "format": "float", - "description": "", # TODO: Add description - "example": 124.3, - }, - "thrust_applied": { - "type": "number", - "format": "float", - "description": "", # TODO: Add description - "example": 124.3, - }, - "heading": { - "type": "number", - "format": "float", - "description": "Angular distance relative to north, usually 000°" - + " at north, clockwise through 359°, in degrees", - "example": 124.3, - }, - "health_status": { - "type": "string", - "description": "Health status extracted by respective platform " - + "if any diagnosis is available to check sensors", - "example": "Warning", - }, - "localisation_error": { - "type": "number", - "format": "float", - "description": "Localisation error at last USBL update.", - "example": 0.000129, - }, - "usbl_fix_seconds_ago": { - "type": "number", - "format": "float", - "description": "USBL Fix received x second ago.", - "example": 10.0, - }, - "battery_remaining_capacity": { - "type": "number", - "format": "float", - "description": "Battery remaining % provided by respective C2", - "example": 80.2, - }, - "current_pitch": { - "type": "number", - "format": "float", - "description": "Current pitch of platform", - "example": -4.0, - }, + # "platform_ID": { + # "type": "integer", + # "description": "Identifier for platform", + # "example": 1, + # }, + # "status_source": { + # "type": "string", + # "enum": ["usbl", "onboard_platform"], + # "description": "Indicate if this status message is from the" + # + " platform or USBL", + # "example": "usbl", + # }, + # "transmission_mode": { + # "type": "string", + # "enum": ["acoustics", "iridium", "wifi", "starlink"], + # "description": "Mode in which status message was transmitted" + # + " when on the surface (e.g. iridium/wifi) or underwater" + # + " (e.g. acoustics)", + # "example": "wifi", + # }, + # "platform_timestamp": { + # "type": "string", + # "format": "date-time", + # "description": "Timestamp for onboard platform status message", + # "example": "2022-12-21T00:00:00Z", + # }, + # "platform_state": { + # "type": "string", # TODO: Define enum with potential STATES of each platform + # "description": "Current state executed by platform. E.g. " + # + "STOP, IDLE, ABORT.", + # "example": "ABORT", + # }, + # "autonomy_engine_plan_ID": { + # "type": "integer", + # "description": "Last mission plan ID (according to Autonomy" + # + " Engine's mission plan number sent) executed by platform", + # "example": 1, + # }, + # "latitude": { + # "type": "number", + # "format": "float", + # "description": "Latitude in decimal degrees.", + # "example": 178.2, + # }, + # "longitude": { + # "type": "number", + # "format": "float", + # "description": "Longitude in decimal degrees.", + # "example": -10.122, + # }, + # "depth": { + # "type": "number", + # "format": "float", + # "description": "Target depth in metres", + # "example": 50, + # "default": 0, + # }, + # "altitude": { + # "type": "number", + # "format": "float", + # "description": "Target altitude in metres", + # "example": 20, + # }, + # "mission_track_ID": { + # "type": "integer", + # "description": "Track number - stage in mission (e.g. " + # + "4 --> Waypoint 3 to Waypoint 4)", + # "example": 4, + # }, + # "mission_action_ID": { + # "type": "integer", + # "description": "", # TODO: Add description + # "example": 1, + # }, + # "range_to_go": { + # "type": "number", + # "format": "float", + # "description": "Estimated distance to reach next waypoint", + # "example": 124.3, + # }, + # "speed_over_ground": { + # "type": "number", + # "format": "float", + # "description": "", # TODO: Add description + # "example": 124.3, + # }, + # "water_current_velocity": { + # "type": "number", + # "format": "float", + # "description": "", # TODO: Add description + # "example": 124.3, + # }, + # "thrust_applied": { + # "type": "number", + # "format": "float", + # "description": "", # TODO: Add description + # "example": 124.3, + # }, + # "heading": { + # "type": "number", + # "format": "float", + # "description": "Angular distance relative to north, usually 000°" + # + " at north, clockwise through 359°, in degrees", + # "example": 124.3, + # }, + # "health_status": { + # "type": "string", + # "description": "Health status extracted by respective platform " + # + "if any diagnosis is available to check sensors", + # "example": "Warning", + # }, + # "localisation_error": { + # "type": "number", + # "format": "float", + # "description": "Localisation error at last USBL update.", + # "example": 0.000129, + # }, + # "usbl_fix_seconds_ago": { + # "type": "number", + # "format": "float", + # "description": "USBL Fix received x second ago.", + # "example": 10.0, + # }, + # "battery_remaining_capacity": { + # "type": "number", + # "format": "float", + # "description": "Battery remaining % provided by respective C2", + # "example": 80.2, + # }, + # "current_pitch": { + # "type": "number", + # "format": "float", + # "description": "Current pitch of platform", + # "example": -4.0, + # }, "sensor_config": sensor_schema, }, "required": [ "message_type", - "platform_ID", - "status_source", - "platform_timestamp", - "latitude", - "longitude", + # "platform_ID", + # "status_source", + # "platform_timestamp", + # "latitude", + # "longitude", ], } diff --git a/generate_schema_config.py b/generate_schema_config.py index 2587f257f8d417a184939769040065f84a26ea00..b7c60a24370a63df2ddca88b0c22b15c1fbd3586 100644 --- a/generate_schema_config.py +++ b/generate_schema_config.py @@ -46,11 +46,11 @@ swagger_config = { "discriminator": { "propertyName": "message_type", "mapping":{ - "MissionPlan": "#/components/schemas/mission_plan", - "Observation": "#/components/schemas/observation", - "PlanningConfiguration": "#/components/schemas/planning_configuration", - "PlatformStatus": "#/components/schemas/platform_status", - "Acknowledgement": "#/components/schemas/acknowledgement", + "mission_plan": "#/components/schemas/mission_plan", + "observation": "#/components/schemas/observation", + "planning_configuration": "#/components/schemas/planning_configuration", + "platform_status": "#/components/schemas/platform_status", + "acknowledgement": "#/components/schemas/acknowledgement", }, }, "oneOf":[ diff --git a/project/soar/soar_protocol.json b/project/soar/soar_protocol.json index 5367b43f4db26cb344a3667724f99ae704cedf55..313c0fb79555d5a67a507a0a49362a3d97e68ebc 100644 --- a/project/soar/soar_protocol.json +++ b/project/soar/soar_protocol.json @@ -1,697 +1,547 @@ { - "openapi": "3.0.2", - "info": { - "description": "SoAR message protocol in schemas", - "title": "SoAR Backbone Message Formats", - "version": "1.0" - }, - "definitions": {}, - "paths": {}, - "components": { - "schemas": { - "acknowledgement": { - "properties": { - "acknowledged_message_ID": { - "description": "Identifier of message received and executed with success for mission plans sent by the Autonomy Engine.", - "example": "02125022255-7bc8-11ed-a1eb-0242ac999999", - "type": "string" - }, - "message_type": { - "description": "Type of message", - "example": "acknowledgement", - "type": "string" - }, - "status": { - "description": "Highest level of acknowledgement. I.e. `c2_received`: Received by C2, `operator_approved_and_sent` : Approved by operator and sent from C2->Platform, `executed`: Executed by platform", - "enum": [ - "c2_received", - "operator_approved_and_sent", - "executed" - ], - "example": "executed by platform", - "type": "string" - } + "openapi": "3.0.2", + "info": { + "description": "SoAR message protocol in schemas", + "title": "SoAR Backbone Message Formats", + "version": "1.0" + }, + "paths": {}, + "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" }, - "required": [ - "message_type", - "acknowledged_message_ID", - "status" - ], - "type": "object" + "payload": { + "$ref": "#/components/schemas/payload" + } }, - "header": { - "discriminator": { - "propertyName": "message_type" + "required": [ + "header", + "payload" + ], + "type": "object" + }, + "acknowledgement": { + "properties": { + "acknowledged_message_ID": { + "description": "Identifier of message received and executed with success for mission plans sent by the Autonomy Engine.", + "example": "02125022255-7bc8-11ed-a1eb-0242ac999999", + "type": "string" }, - "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-bvcdfghjgfdd", - "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", - "type": "number" - } + "message_type": { + "description": "Type of message", + "example": "acknowledgement", + "type": "string" }, - "type": "object" + "status": { + "description": "Highest level of acknowledgement. I.e. `c2_received`: Received by C2, `operator_approved_and_sent` : Approved by operator and sent from C2->Platform, `executed`: Executed by platform", + "enum": [ + "c2_received", + "operator_approved_and_sent", + "executed" + ], + "example": "executed by platform", + "type": "string" + } }, - "message": { - "properties": { - "header": { - "$ref": "#/components/schemas/header" - }, - "payload": { - "$ref": "#/components/schemas/payload" - } + "required": [ + "message_type", + "acknowledged_message_ID", + "status" + ], + "type": "object" + }, + "header": { + "discriminator": { + "propertyName": "message_type" + }, + "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-bvcdfghjgfdd", + "type": "string" }, - "required": [ - "header", - "payload" - ], - "type": "object" + "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", + "type": "number" + } }, - "mission_plan": { - "properties": { - "autonomy_engine_plan_ID": { - "description": "Unique identifier for this plangenerated by the Autonomy Engine", - "example": 3, - "type": "integer" - }, - "message_type": { - "description": "Type of message", - "example": "mission_plan", - "type": "string" - }, - "plan": { - "items": { - "properties": { - "action": { - "description": "Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.", - "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" - }, - "altitude": { - "description": "Altitude of next action", - "example": 15.0, - "format": "float", - "type": "number" - }, - "depth": { - "description": "Depth of next action", - "example": 15.0, - "format": "float", - "type": "number" - }, - "flight_style": { - "description": "Platform-specific modes/flight styles to perform next action", - "example": "orbit", - "type": "string" - }, - "latitude_waypoint": { - "description": "Next waypoint, x-coordinate", - "example": -4.187143188645706, - "format": "float", - "type": "number" - }, - "longitude_waypoint": { - "description": "Next waypoint, y-coordinate", - "example": 50.37072283932642, - "format": "float", - "type": "number" - }, - "send_environmental_data": { - "description": "To trigger the platform to send list of observations if any found", - "example": false, - "type": "boolean" - } + "type": "object" + }, + "mission_plan": { + "properties": { + "autonomy_engine_plan_ID": { + "description": "Unique identifier for this plangenerated by the Autonomy Engine", + "example": 3, + "type": "integer" + }, + "message_type": { + "description": "Type of message", + "example": "mission_plan", + "type": "string" + }, + "plan": { + "items": { + "properties": { + "action": { + "description": "Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.", + "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" }, - "required": [ - "latitude_waypoint", - "longitude_waypoint" - ], - "type": "object" + "altitude": { + "description": "Altitude of next action", + "example": 15.0, + "format": "float", + "type": "number" + }, + "depth": { + "description": "Depth of next action", + "example": 15.0, + "format": "float", + "type": "number" + }, + "flight_style": { + "description": "Platform-specific modes/flight styles to perform next action", + "example": "orbit", + "type": "string" + }, + "latitude_waypoint": { + "description": "Next waypoint, x-coordinate", + "example": -4.187143188645706, + "format": "float", + "type": "number" + }, + "longitude_waypoint": { + "description": "Next waypoint, y-coordinate", + "example": 50.37072283932642, + "format": "float", + "type": "number" + }, + "send_environmental_data": { + "description": "To trigger the platform to send list of observations if any found", + "example": false, + "type": "boolean" + } }, - "type": "array" + "required": [ + "latitude_waypoint", + "longitude_waypoint" + ], + "type": "object" }, - "platform_ID": { - "description": "Unique identifier for this platform", - "example": 1, - "type": "integer" - } + "type": "array" }, - "required": [ - "message_type", - "plan_ID", - "platform_ID", - "plan" - ], - "type": "object" + "platform_ID": { + "description": "Unique identifier for this platform", + "example": 1, + "type": "integer" + } }, - "observation": { - "properties": { - "additional_data": { - "description": "Placeholder field for any additional data", - "example": { - "sensor_payload": false - } - }, - "message_type": { - "description": "Type of message", - "example": "observation", - "type": "string" - }, - "platform_ID": { - "description": "ID of platform to sending observations", - "example": 2, - "type": "integer" - }, - "points_of_interest": { - "description": "Points from features of interest identified by platform if any found.", - "items": { - "properties": { - "latitude": { - "description": "Identified x-coordinate of point of interest", - "example": 178.2, - "format": "float", - "type": "number" - }, - "longitude": { - "description": "Identified y-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": [ + "message_type", + "autonomy_engine_plan_ID", + "platform_ID", + "plan" + ], + "type": "object" + }, + "observation": { + "properties": { + "additional_data": { + "description": "Placeholder field for any additional data", + "example": { + "sensor_payload": false + } + }, + "message_type": { + "description": "Type of message", + "example": "observation", + "type": "string" + }, + "platform_ID": { + "description": "ID of platform to sending observations", + "example": 2, + "type": "integer" + }, + "points_of_interest": { + "description": "Points from features of interest identified by platform if any found.", + "items": { + "properties": { + "latitude": { + "description": "Identified x-coordinate of point of interest", + "example": 178.2, + "format": "float", + "type": "number" + }, + "longitude": { + "description": "Identified y-coordinate of point of interest", + "example": -10.122, + "format": "float", + "type": "number" }, - "required": [ - "latitude", - "longitude" - ], - "type": "object" + "quality_of_point": { + "description": "Quality/strength of points from features of interest identified by platform.", + "example": 0.98, + "format": "float", + "type": "number" + } }, - "type": "array" + "required": [ + "latitude", + "longitude" + ], + "type": "object" }, - "region_surveyed": { - "description": "Region surveyed by given platform. GEOJSON", - "example": "", - "nullable": true - } + "type": "array" }, - "required": [ - "message_type", - "platform_ID" - ], - "type": "object" + "region_surveyed": { + "description": "Region surveyed by given platform. GEOJSON", + "example": "", + "nullable": true + } }, - "payload": { - "discriminator": { - "mapping": { - "Acknowledgement": "#/components/schemas/acknowledgement", - "MissionPlan": "#/components/schemas/mission_plan", - "Observation": "#/components/schemas/observation", - "PlanningConfiguration": "#/components/schemas/planning_configuration", - "PlatformStatus": "#/components/schemas/platform_status" - }, - "propertyName": "message_type" + "required": [ + "message_type", + "platform_ID" + ], + "type": "object" + }, + "payload": { + "discriminator": { + "mapping": { + "acknowledgement": "#/components/schemas/acknowledgement", + "mission_plan": "#/components/schemas/mission_plan", + "observation": "#/components/schemas/observation", + "planning_configuration": "#/components/schemas/planning_configuration", + "platform_status": "#/components/schemas/platform_status" }, - "oneOf": [ - { - "$ref": "#/components/schemas/acknowledgement" - }, - { - "$ref": "#/components/schemas/mission_plan" - }, - { - "$ref": "#/components/schemas/observation" - }, - { - "$ref": "#/components/schemas/planning_configuration" - }, - { - "$ref": "#/components/schemas/platform_status" - } - ] + "propertyName": "message_type" }, - "planning_configuration": { - "properties": { - "exclusion_zones": { - "description": "Exclusion zones for all platforms", - "items": { - "description": "Using GEOJSON, exact 4-point region (rectangle shaped)", - "properties": { - "geometry_coordinates": { - "example": [ + "oneOf": [ + { + "$ref": "#/components/schemas/acknowledgement" + }, + { + "$ref": "#/components/schemas/mission_plan" + }, + { + "$ref": "#/components/schemas/observation" + }, + { + "$ref": "#/components/schemas/planning_configuration" + }, + { + "$ref": "#/components/schemas/platform_status" + } + ] + }, + "planning_configuration": { + "properties": { + "exclusion_zones": { + "description": "Exclusion zones for all platforms", + "items": { + "description": "Using GEOJSON, exact 4-point region (rectangle shaped)", + "properties": { + "geometry_coordinates": { + "example": [ + [ [ - [ - -4.187143188645706, - 50.37072283932642 - ], - [ - -4.202697005964865, - 50.368816892405874 - ], - [ - -4.203156724702808, - 50.365640144076906 - ], - [ - -4.19449868846155, - 50.362267670845654 - ] + -4.187143188645706, + 50.37072283932642 + ], + [ + -4.202697005964865, + 50.368816892405874 + ], + [ + -4.203156724702808, + 50.365640144076906 + ], + [ + -4.19449868846155, + 50.362267670845654 ] - ], - "type": "array" - } - }, - "required": [ - "geometry_coordinates" - ], - "type": "object" + ] + ], + "type": "array" + } }, - "type": "array" - }, - "message_type": { - "description": "Type of message", - "example": "planning_configuration", - "type": "string" - }, - "planning_config_ID": { - "description": "Unique identifier tagged to version of this configuration plan", - "example": 3, - "type": "integer" + "required": [ + "geometry_coordinates" + ], + "type": "object" }, - "squads": { - "items": { - "properties": { - "no_of_platforms": { - "description": "Number of platforms", - "example": 3, - "type": "integer" - }, - "platforms": { - "description": "Squad consists of these platforms", - "items": { - "properties": { - "additional_data": { - "description": "Any addition fields/data to be added here", - "example": { - "scan_type": "DVL", - "swath_width": 10.0 - }, - "type": "null" - }, - "emergency": { - "properties": { - "additional_data": { - "description": "Any addition fields/data to be added here", - "example": {}, - "type": "null" - }, - "latitude_waypoint": { - "description": "X-coordinate safe place for respective platform", - "example": -7.432, - "format": "float", - "type": "number" - }, - "longitude_waypoint": { - "description": "Y-coordinate safe place for respective platform", - "example": 50.365, - "format": "float", - "type": "number" - }, - "safe_command": { - "description": "Command/Action that is native to respective partner's platform/C2", - "enum": [ - "go_home", - "abort_now", - "stop_mission" - ], - "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" - } - }, - "required": [ - "latitude_waypoint", - "longitude_waypoint", - "target_depth" - ], - "type": "object" - }, - "max_velocity": { - "description": "Maximum altitude set for squad.", - "example": 0.9, - "format": "float", - "type": "number" - }, - "min_altitude": { - "description": "Minimum altitude set for squad.", - "example": 15.2, - "format": "float", - "type": "number" - }, - "min_velocity": { - "description": "Minimum velocity set for squad.", - "example": 0.1, - "format": "float", - "type": "number" - }, - "model": { - "example": "reav", - "type": "string" - }, - "platform_ID": { - "description": "Identifier for platform", - "example": 23, - "type": "integer" - }, - "serial": { - "description": "platform serial number", - "example": "reav-60", - "type": "string" + "type": "array" + }, + "message_type": { + "description": "Type of message", + "example": "planning_configuration", + "type": "string" + }, + "planning_config_ID": { + "description": "Unique identifier tagged to version of this configuration plan", + "example": 3, + "type": "integer" + }, + "squads": { + "items": { + "properties": { + "no_of_platforms": { + "description": "Number of platforms", + "example": 3, + "type": "integer" + }, + "platforms": { + "description": "Squad consists of these platforms", + "items": { + "properties": { + "additional_specs": { + "description": "Any addition fields/data to be added here", + "example": { + "scan_type": "DVL", + "swath_width": 10.0 } }, - "required": [ - "platform_ID", - "serial", - "model", - "emergency", - "min_altitude", - "min_velocity", - "max_velocity" - ], - "type": "object" - }, - "type": "array" - }, - "region_of_interest": { - "description": "Using GEOJSON, exact 4-point region (rectangle shaped)", - "properties": { - "geometry_coordinates": { - "example": [ - [ - [ - -4.187143188645706, - 50.37072283932642 - ], - [ - -4.202697005964865, - 50.368816892405874 - ], - [ - -4.203156724702808, - 50.365640144076906 + "emergency": { + "properties": { + "additional_data": { + "description": "Any addition fields/data to be added here", + "example": {} + }, + "latitude_waypoint": { + "description": "X-coordinate safe place for respective platform", + "example": -7.432, + "format": "float", + "type": "number" + }, + "longitude_waypoint": { + "description": "Y-coordinate safe place for respective platform", + "example": 50.365, + "format": "float", + "type": "number" + }, + "safe_command": { + "description": "Command/Action that is native to respective partner's platform/C2", + "enum": [ + "go_home", + "abort_now", + "stop_mission" ], - [ - -4.19449868846155, - 50.362267670845654 - ] - ] + "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" + } + }, + "required": [ + "latitude_waypoint", + "longitude_waypoint", + "target_depth" ], - "type": "array" + "type": "object" + }, + "max_velocity": { + "description": "Maximum altitude set for squad.", + "example": 0.9, + "format": "float", + "type": "number" + }, + "min_altitude": { + "description": "Minimum altitude set for squad.", + "example": 15.2, + "format": "float", + "type": "number" + }, + "min_velocity": { + "description": "Minimum velocity set for squad.", + "example": 0.1, + "format": "float", + "type": "number" + }, + "model": { + "example": "reav", + "type": "string" + }, + "platform_ID": { + "description": "Identifier for platform", + "example": 23, + "type": "integer" + }, + "serial": { + "description": "platform serial number", + "example": "reav-60", + "type": "string" } }, "required": [ - "geometry_coordinates" + "platform_ID", + "serial", + "model", + "emergency", + "min_altitude", + "min_velocity", + "max_velocity" ], "type": "object" }, - "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" - }, - "squad_state": { - "description": "In execution, Waiting.. <define further>", - "example": false, - "type": "string" - } + "type": "array" }, - "required": [ - "squad_ID", - "no_of_platforms", - "platforms", - "squad_mission_type", - "squad_state", - "exclusion_zones" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "message_type", - "config_ID", - "squads", - "exclusion_zones" - ], - "type": "object" - }, - "platform_status": { - "properties": { - "active": { - "description": "When a platform is in deployment (executing a mission plan) this should be True", - "example": true, - "type": "boolean" - }, - "altitude": { - "description": "Target altitude in metres", - "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_remaining_capacity": { - "description": "Battery remaining % provided by respective C2", - "example": 80.2, - "format": "float", - "type": "number" - }, - "current_pitch": { - "description": "Current pitch of platform", - "example": -4.0, - "format": "float", - "type": "number" - }, - "depth": { - "default": 0, - "description": "Target depth in metres", - "example": 50, - "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 extracted by respective platform if any diagnosis is available to check sensors", - "example": "Warning", - "type": "string" - }, - "latitude": { - "description": "Latitude in decimal degrees.", - "example": 178.2, - "format": "float", - "type": "number" - }, - "localisation_error": { - "description": "Localisation error at last USBL update.", - "example": 0.000129, - "format": "float", - "type": "number" - }, - "longitude": { - "description": "Longitude in decimal degrees.", - "example": -10.122, - "format": "float", - "type": "number" - }, - "message_type": { - "description": "Type of message", - "example": "platform_status", - "type": "string" - }, - "mission_action_ID": { - "description": "", - "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": "Identifier for platform", - "example": 1, - "type": "integer" - }, - "platform_state": { - "description": "Current state executed by platform. E.g. STOP, IDLE, ABORT.", - "example": "ABORT", - "type": "string" - }, - "platform_timestamp": { - "decription": "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 - ] + "region_of_interest": { + "description": "Using GEOJSON, exact 4-point region (rectangle shaped)", + "properties": { + "geometry_coordinates": { + "example": [ + [ + [ + -4.187143188645706, + 50.37072283932642 + ], + [ + -4.202697005964865, + 50.368816892405874 + ], + [ + -4.203156724702808, + 50.365640144076906 + ], + [ + -4.19449868846155, + 50.362267670845654 + ] + ] + ], + "type": "array" + } }, - "type": "null" + "required": [ + "geometry_coordinates" + ], + "type": "object" }, - "sensor_on": { - "description": "Sensor switched on (True) or off (False)", - "example": true, - "type": "boolean" + "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" }, - "sensor_serial": { - "description": "serial number of sensor", - "example": "mbes-002a", + "squad_state": { + "description": "In execution, Waiting.. <define further>", + "example": false, "type": "string" } }, - "required": [], - "type": "object" - }, - "speed_over_ground": { - "description": "", - "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" + "required": [ + "squad_ID", + "no_of_platforms", + "platforms", + "squad_mission_type", + "squad_state" ], - "example": "usbl", - "type": "string" - }, - "thrust_applied": { - "description": "", - "example": 124.3, - "format": "float", - "type": "number" - }, - "transmission_mode": { - "description": "Mode in which status message was transmitted when on the surface (i.e. iridium/wifi) or underwater (i.e. 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" + "type": "object" }, - "water_current_velocity": { - "description": "", - "example": 124.3, - "format": "float", - "type": "number" - } + "type": "array" + } + }, + "required": [ + "message_type", + "planning_config_ID", + "squads", + "exclusion_zones" + ], + "type": "object" + }, + "platform_status": { + "properties": { + "message_type": { + "description": "Type of message", + "example": "platform_status", + "type": "string" }, - "required": [ - "message_type", - "platform_ID", - "status_source", - "platform_timestamp", - "latitude", - "longitude" - ], - "type": "object" - } + "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 + ] + } + }, + "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" + } + }, + "required": [ + "message_type" + ], + "type": "object" } } - } \ No newline at end of file + } +} \ No newline at end of file