Commit 611b7b21 authored by Trishna Saeharaseelan's avatar Trishna Saeharaseelan
Browse files

fix: spec validation errors

parent 89576e08
......@@ -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"],
}
......@@ -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",
],
......
......@@ -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",
],
}
......@@ -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":[
......
{
"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
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