Unverified Commit 704b4b58 authored by Dan Jones's avatar Dan Jones
Browse files

feat: add optional operating_area

This can be defined in planning configuration and should
define a larger area containing the region_of_interest.

The intention is the region_of_interest is the area for
which data is being collected. The operating_area is an
area the platforms should not stray outside.

This allows us to define small test areas without triggering
an abort if a platform crosses the boundary.
1 merge request!27Resolve "Add optional "operating_area" as a wider zone outside region_of_interest"
Pipeline #137423 passed with stages
in 1 minute
...@@ -13,9 +13,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ...@@ -13,9 +13,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Added ### Added
- Optional operating_area region in planning configuration
- Emergency flag in mission plan schemas - Emergency flag in mission plan schemas
## [v0.1.0] - 2023-03-24 ## [v0.1.0] - 2023-03-24
### Added ### Added
......
...@@ -249,10 +249,15 @@ planning_configuration_schema = { ...@@ -249,10 +249,15 @@ planning_configuration_schema = {
+ " configuration plan", + " configuration plan",
"example": 3, "example": 3,
}, },
"operating_area": {
"type": "array",
"items": region_schema,
"description": "Area outside which platforms should be aborted and recovered",
},
"region_of_interest": { "region_of_interest": {
"type": "array", "type": "array",
"items": region_schema, "items": region_schema,
"description": "Region of interest for the entire operation", "description": "Area to be surveyed",
}, },
"exclusion_zones": { "exclusion_zones": {
"type": "array", "type": "array",
......
{ {
"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",
"enum":[ "enum": [
"acknowledgement" "acknowledgement"
], ],
"example":"acknowledgement", "example": "acknowledgement",
"type":"string" "type": "string"
}, },
"platform_ID":{ "platform_ID": {
"description":"Unique identifier for this platform", "description": "Unique identifier for this platform",
"example":"reav-x-1", "example": "reav-x-1",
"type":"string" "type": "string"
} }
}, },
"required":[ "required": [
"message_type", "message_type",
"autonomy_engine_plan_ID", "autonomy_engine_plan_ID",
"platform_ID", "platform_ID",
"approved" "approved"
], ],
"type":"object" "type": "object"
}, },
"header":{ "header": {
"discriminator":{ "discriminator": {
"propertyName":"message_type" "propertyName": "message_type"
}, },
"properties":{ "properties": {
"delivery_type":{ "delivery_type": {
"default":"publish", "default": "publish",
"description":"To publish or broadcast this message.", "description": "To publish or broadcast this message.",
"enum":[ "enum": [
"broadcast", "broadcast",
"publish" "publish"
], ],
"example":"publish", "example": "publish",
"type":"string" "type": "string"
}, },
"destination":{ "destination": {
"description":"Publisher topic; What is the destination of this message", "description": "Publisher topic; What is the destination of this message",
"example":"ah1", "example": "ah1",
"type":"string" "type": "string"
}, },
"encoded":{ "encoded": {
"description":"Indicate that message raw (encoded) or decoded. Options: encoded=true, decoded=false", "description": "Indicate that message raw (encoded) or decoded. Options: encoded=true, decoded=false",
"example":false, "example": false,
"type":"boolean" "type": "boolean"
}, },
"message_ID":{ "message_ID": {
"description":"An identifier for the type of message received.", "description": "An identifier for the type of message received.",
"example":"b427003c-0000-11aa-a1eb-bvcdfghjgfdd", "example": "b427003c-0000-11aa-a1eb-bvcdfghjgfdd",
"type":"string" "type": "string"
}, },
"source":{ "source": {
"description":"The sender; Where is this message from", "description": "The sender; Where is this message from",
"example":"autonomy_engine", "example": "autonomy_engine",
"type":"string" "type": "string"
}, },
"timestamp":{ "timestamp": {
"description":"Timestamp of message", "description": "Timestamp of message",
"example":"2022-11-16T00:00:00Z", "example": "2022-11-16T00:00:00Z",
"format":"date-time", "format": "date-time",
"type":"string" "type": "string"
}, },
"version":{ "version": {
"description":"Version of comms backbone message format protocol", "description": "Version of comms backbone message format protocol",
"example":2.0, "example": 2.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
} }
}, },
"type":"object" "type": "object"
}, },
"mission_plan":{ "mission_plan": {
"properties":{ "properties": {
"autonomy_engine_plan_ID":{ "autonomy_engine_plan_ID": {
"description":"Unique identifier for this plangenerated by the Autonomy Engine", "description": "Unique identifier for this plangenerated by the Autonomy Engine",
"example":3, "example": 3,
"type":"integer" "type": "integer"
}, },
"emergency":{ "emergency": {
"default":false, "default": false,
"description":"To indicate if this is an emergency. true = emergency and false = no emergency", "description": "To indicate if this is an emergency. true = emergency and false = no emergency",
"example":false, "example": false,
"type":"boolean" "type": "boolean"
}, },
"message_type":{ "message_type": {
"description":"Type of message", "description": "Type of message",
"enum":[ "enum": [
"mission_plan" "mission_plan"
], ],
"example":"mission_plan", "example": "mission_plan",
"type":"string" "type": "string"
}, },
"plan":{ "plan": {
"items":{ "items": {
"properties":{ "properties": {
"action":{ "action": {
"description":"Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.", "description": "Autonomy Engine's action from `move`, `payload`, `dive`, `send_hits`, `scanline`, `scanpoint`.",
"enum":[ "enum": [
"move", "move",
"payload", "payload",
"dive", "dive",
...@@ -138,275 +138,275 @@ ...@@ -138,275 +138,275 @@
"stop_mission", "stop_mission",
"abort_now" "abort_now"
], ],
"example":"move", "example": "move",
"type":"string" "type": "string"
}, },
"activate_payload":{ "activate_payload": {
"description":"To activate/deactivate sensor for Autosub Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`", "description": "To activate/deactivate sensor for Autosub Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`",
"example":true, "example": true,
"type":"boolean" "type": "boolean"
}, },
"altitude":{ "altitude": {
"description":"Altitude of next action", "description": "Altitude of next action",
"example":15.0, "example": 15.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"depth":{ "depth": {
"description":"Depth of next action", "description": "Depth of next action",
"example":15.0, "example": 15.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"start_point_latitude":{ "start_point_latitude": {
"description":"Start point, y-coordinate", "description": "Start point, y-coordinate",
"example":50.37072283932642, "example": 50.37072283932642,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"start_point_longitude":{ "start_point_longitude": {
"description":"Start point, x-coordinate", "description": "Start point, x-coordinate",
"example":-4.187143188645706, "example": -4.187143188645706,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"target_waypoint_latitude":{ "target_waypoint_latitude": {
"description":"Target waypoint, y-coordinate", "description": "Target waypoint, y-coordinate",
"example":50.37072283932642, "example": 50.37072283932642,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"target_waypoint_longitude":{ "target_waypoint_longitude": {
"description":"Target waypoint, x-coordinate", "description": "Target waypoint, x-coordinate",
"example":-4.187143188645706, "example": -4.187143188645706,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"timeout":{ "timeout": {
"description":"Timeout set to perform action", "description": "Timeout set to perform action",
"example":1800.0, "example": 1800.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
} }
}, },
"required":[ "required": [
"target_waypoint_latitude", "target_waypoint_latitude",
"target_waypoint_longitude" "target_waypoint_longitude"
], ],
"type":"object" "type": "object"
}, },
"type":"array" "type": "array"
}, },
"platform_ID":{ "platform_ID": {
"description":"Unique identifier for this platform", "description": "Unique identifier for this platform",
"example":"reav-x-1", "example": "reav-x-1",
"type":"string" "type": "string"
} }
}, },
"required":[ "required": [
"message_type", "message_type",
"autonomy_engine_plan_ID", "autonomy_engine_plan_ID",
"platform_ID", "platform_ID",
"plan" "plan"
], ],
"type":"object" "type": "object"
}, },
"mission_plan_encoded":{ "mission_plan_encoded": {
"properties":{ "properties": {
"data":{ "data": {
"description":"encoded string. E.g. Base64 encoded", "description": "encoded string. E.g. Base64 encoded",
"example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type":"string" "type": "string"
}, },
"file_name":{ "file_name": {
"description":"Name of file", "description": "Name of file",
"example":"ah1-0238126349247372.bin", "example": "ah1-0238126349247372.bin",
"type":"string" "type": "string"
}, },
"is_binary":{ "is_binary": {
"description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example":true, "example": true,
"type":"boolean" "type": "boolean"
}, },
"message_type":{ "message_type": {
"description":"Type of message", "description": "Type of message",
"enum":[ "enum": [
"mission_plan_encoded" "mission_plan_encoded"
], ],
"example":"mission_plan_encoded", "example": "mission_plan_encoded",
"type":"string" "type": "string"
}, },
"mime_type":{ "mime_type": {
"description":"MIME type", "description": "MIME type",
"example":"application/gzip", "example": "application/gzip",
"type":"string" "type": "string"
} }
}, },
"required":[ "required": [
"data", "data",
"is_binary" "is_binary"
], ],
"type":"object" "type": "object"
}, },
"observation":{ "observation": {
"properties":{ "properties": {
"additional_data":{ "additional_data": {
"description":"Placeholder field for any additional data", "description": "Placeholder field for any additional data",
"example":{ "example": {
"sensor_payload":false "sensor_payload": false
} }
}, },
"message_type":{ "message_type": {
"description":"Type of message", "description": "Type of message",
"enum":[ "enum": [
"observation" "observation"
], ],
"example":"observation", "example": "observation",
"type":"string" "type": "string"
}, },
"platform_ID":{ "platform_ID": {
"description":"Unique identifier for this platform", "description": "Unique identifier for this platform",
"example":"reav-x-1", "example": "reav-x-1",
"type":"string" "type": "string"
}, },
"points_of_interest":{ "points_of_interest": {
"description":"Points from features of interest identified by platform if any found.", "description": "Points from features of interest identified by platform if any found.",
"items":{ "items": {
"properties":{ "properties": {
"latitude":{ "latitude": {
"description":"Identified y-coordinate of point of interest", "description": "Identified y-coordinate of point of interest",
"example":178.2, "example": 178.2,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"longitude":{ "longitude": {
"description":"Identified x-coordinate of point of interest", "description": "Identified x-coordinate of point of interest",
"example":-10.122, "example": -10.122,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"quality_of_point":{ "quality_of_point": {
"description":"Quality/strength of points from features of interest identified by platform.", "description": "Quality/strength of points from features of interest identified by platform.",
"example":0.98, "example": 0.98,
"format":"float", "format": "float",
"type":"number" "type": "number"
} }
}, },
"required":[ "required": [
"latitude", "latitude",
"longitude" "longitude"
], ],
"type":"object" "type": "object"
}, },
"type":"array" "type": "array"
}, },
"region_surveyed":{ "region_surveyed": {
"description":"Region surveyed by given platform. GEOJSON", "description": "Region surveyed by given platform. GEOJSON",
"example":"", "example": "",
"nullable":true "nullable": true
} }
}, },
"required":[ "required": [
"message_type", "message_type",
"platform_ID" "platform_ID"
], ],
"type":"object" "type": "object"
}, },
"observation_encoded":{ "observation_encoded": {
"properties":{ "properties": {
"data":{ "data": {
"description":"encoded string. E.g. Base64 encoded", "description": "encoded string. E.g. Base64 encoded",
"example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type":"string" "type": "string"
}, },
"file_name":{ "file_name": {
"description":"Name of file", "description": "Name of file",
"example":"ah1-0238126349247372.bin", "example": "ah1-0238126349247372.bin",
"type":"string" "type": "string"
}, },
"is_binary":{ "is_binary": {
"description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example":true, "example": true,
"type":"boolean" "type": "boolean"
}, },
"message_type":{ "message_type": {
"description":"Type of message", "description": "Type of message",
"enum":[ "enum": [
"observation_encoded" "observation_encoded"
], ],
"example":"observation_encoded", "example": "observation_encoded",
"type":"string" "type": "string"
}, },
"mime_type":{ "mime_type": {
"description":"MIME type", "description": "MIME type",
"example":"application/gzip", "example": "application/gzip",
"type":"string" "type": "string"
} }
}, },
"required":[ "required": [
"data", "data",
"is_binary" "is_binary"
], ],
"type":"object" "type": "object"
}, },
"payload":{ "payload": {
"discriminator":{ "discriminator": {
"mapping":{ "mapping": {
"acknowledgement":"#/components/schemas/acknowledgement", "acknowledgement": "#/components/schemas/acknowledgement",
"mission_plan":"#/components/schemas/mission_plan", "mission_plan": "#/components/schemas/mission_plan",
"mission_plan_encoded":"#/components/schemas/mission_plan_encoded", "mission_plan_encoded": "#/components/schemas/mission_plan_encoded",
"observation":"#/components/schemas/observation", "observation": "#/components/schemas/observation",
"observation_encoded":"#/components/schemas/observation_encoded", "observation_encoded": "#/components/schemas/observation_encoded",
"planning_configuration":"#/components/schemas/planning_configuration", "planning_configuration": "#/components/schemas/planning_configuration",
"platform_status":"#/components/schemas/platform_status", "platform_status": "#/components/schemas/platform_status",
"platform_status_encoded":"#/components/schemas/platform_status_encoded", "platform_status_encoded": "#/components/schemas/platform_status_encoded",
"survey":"#/components/schemas/survey", "survey": "#/components/schemas/survey",
"survey_encoded":"#/components/schemas/survey_encoded" "survey_encoded": "#/components/schemas/survey_encoded"
}, },
"propertyName":"message_type" "propertyName": "message_type"
}, },
"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/mission_plan_encoded"
}, },
{ {
"$ref":"#/components/schemas/observation" "$ref": "#/components/schemas/observation"
}, },
{ {
"$ref":"#/components/schemas/observation_encoded" "$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" "$ref": "#/components/schemas/platform_status_encoded"
}, },
{ {
"$ref":"#/components/schemas/survey" "$ref": "#/components/schemas/survey"
}, },
{ {
"$ref":"#/components/schemas/survey_encoded" "$ref": "#/components/schemas/survey_encoded"
} }
] ]
}, },
"planning_configuration":{ "planning_configuration": {
"properties":{ "properties": {
"exclusion_zones":{ "exclusion_zones": {
"description":"Exclusion zones for all platforms", "description": "Exclusion zones for all platforms",
"items":{ "items": {
"description":"Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)", "description": "Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)",
"properties":{ "properties": {
"geometry_coordinates":{ "geometry_coordinates": {
"example":[ "example": [
[ [
[ [
-4.1777839187560915, -4.1777839187560915,
...@@ -430,33 +430,28 @@ ...@@ -430,33 +430,28 @@
] ]
] ]
], ],
"type":"array" "type": "array"
} }
}, },
"type":"object" "type": "object"
}, },
"type":"array" "type": "array"
}, },
"message_type":{ "message_type": {
"description":"Type of message", "description": "Type of message",
"enum":[ "enum": [
"planning_configuration" "planning_configuration"
], ],
"example":"planning_configuration", "example": "planning_configuration",
"type":"string" "type": "string"
}, },
"planning_config_ID":{ "operating_area": {
"description":"Unique identifier tagged to version of this configuration plan", "description": "Area outside which platforms should be aborted and recovered",
"example":3, "items": {
"type":"integer" "description": "Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)",
}, "properties": {
"region_of_interest":{ "geometry_coordinates": {
"description":"Region of interest for the entire operation", "example": [
"items":{
"description":"Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)",
"properties":{
"geometry_coordinates":{
"example":[
[ [
[ [
-4.1777839187560915, -4.1777839187560915,
...@@ -480,406 +475,448 @@ ...@@ -480,406 +475,448 @@
] ]
] ]
], ],
"type":"array" "type": "array"
} }
}, },
"type":"object" "type": "object"
}, },
"type":"array" "type": "array"
}, },
"squads":{ "planning_config_ID": {
"items":{ "description": "Unique identifier tagged to version of this configuration plan",
"properties":{ "example": 3,
"no_of_platforms":{ "type": "integer"
"description":"Number of platforms", },
"example":3, "region_of_interest": {
"type":"integer" "description": "Area to be surveyed",
}, "items": {
"platforms":{ "description": "Using GEOJSON, exact 4-point region (rectangle shaped - 5 points)",
"description":"Squad consists of these platforms", "properties": {
"items":{ "geometry_coordinates": {
"properties":{ "example": [
"active":{ [
"description":"If platform is active = True, and inactive = False", [
"example":true, -4.1777839187560915,
"type":"boolean" 50.34173405662855
}, ],
"additional_data":{ [
"description":"Any addition fields/data to be added here", -4.1777839187560915,
"example":{ 50.33820949229701
"new_sensor_a":"test_sensor", ],
"range":10.0 [
}, -4.143667777943875,
"type":"object" 50.33820949229701
}, ],
"beacon_ID":{ [
"description":"Unique identifier (number) for the beacon associated to this platform", -4.143667777943875,
"example":2407, 50.34173405662855
"type":"number" ],
}, [
"emergency":{ -4.1777839187560915,
"properties":{ 50.34173405662855
"safe_command":{ ]
"description":"Command/Action that is native to respective partner's platform/C2", ]
"enum":[ ],
"type": "array"
}
},
"type": "object"
},
"type": "array"
},
"squads": {
"items": {
"properties": {
"no_of_platforms": {
"description": "Number of platforms",
"example": 3,
"type": "integer"
},
"platforms": {
"description": "Squad consists of these platforms",
"items": {
"properties": {
"active": {
"description": "If platform is active = True, and inactive = False",
"example": true,
"type": "boolean"
},
"additional_data": {
"description": "Any addition fields/data to be added here",
"example": {
"new_sensor_a": "test_sensor",
"range": 10.0
},
"type": "object"
},
"beacon_ID": {
"description": "Unique identifier (number) for the beacon associated to this platform",
"example": 2407,
"type": "number"
},
"emergency": {
"properties": {
"safe_command": {
"description": "Command/Action that is native to respective partner's platform/C2",
"enum": [
"go_home", "go_home",
"abort_now", "abort_now",
"stop_now", "stop_now",
"surface_now" "surface_now"
], ],
"example":"go_home", "example": "go_home",
"type":"string" "type": "string"
}, },
"target_depth":{ "target_depth": {
"description":"Z-coordinate safe place for respective platform . If platform to NOT stay at depth, key in `0.0`", "description": "Z-coordinate safe place for respective platform . If platform to NOT stay at depth, key in `0.0`",
"example":10.0, "example": 10.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"target_waypoint_latitude":{ "target_waypoint_latitude": {
"description":"Y-coordinate safe place for respective platform", "description": "Y-coordinate safe place for respective platform",
"example":50.365, "example": 50.365,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"target_waypoint_longitude":{ "target_waypoint_longitude": {
"description":"X-coordinate safe place for respective platform", "description": "X-coordinate safe place for respective platform",
"example":-7.432, "example": -7.432,
"format":"float", "format": "float",
"type":"number" "type": "number"
} }
}, },
"required":[ "required": [
"target_waypoint_latitude", "target_waypoint_latitude",
"target_waypoint_longitude", "target_waypoint_longitude",
"target_depth" "target_depth"
], ],
"type":"object" "type": "object"
}, },
"endurance_relative_to_water_speed":{ "endurance_relative_to_water_speed": {
"properties":{ "properties": {
"avg_battery_rating":{ "avg_battery_rating": {
"description":"Battery endurance rating during standard operational speed usage (m/s)", "description": "Battery endurance rating during standard operational speed usage (m/s)",
"example":1.9, "example": 1.9,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"max_battery_rating":{ "max_battery_rating": {
"description":"Battery endurance rating during maximum speed usage (m/s)", "description": "Battery endurance rating during maximum speed usage (m/s)",
"example":1.23, "example": 1.23,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"min_battery_rating":{ "min_battery_rating": {
"description":"Battery endurance rating during maximum speed usage (m/s)", "description": "Battery endurance rating during maximum speed usage (m/s)",
"example":3.32, "example": 3.32,
"format":"float", "format": "float",
"type":"number" "type": "number"
} }
}, },
"type":"object" "type": "object"
}, },
"max_velocity":{ "max_velocity": {
"description":"Maximum velocity set for platform", "description": "Maximum velocity set for platform",
"example":0.9, "example": 0.9,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"min_altitude":{ "min_altitude": {
"description":"Minimum altitude set for platform", "description": "Minimum altitude set for platform",
"example":15.2, "example": 15.2,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"min_velocity":{ "min_velocity": {
"description":"Minimum velocity set for platform", "description": "Minimum velocity set for platform",
"example":0.1, "example": 0.1,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"model":{ "model": {
"example":"reav", "example": "reav",
"type":"string" "type": "string"
}, },
"operator":{ "operator": {
"description":"Operator of platform", "description": "Operator of platform",
"example":"noc", "example": "noc",
"type":"string" "type": "string"
}, },
"platform_ID":{ "platform_ID": {
"description":"Unique identifier for this platform", "description": "Unique identifier for this platform",
"example":"reav-x-1", "example": "reav-x-1",
"type":"string" "type": "string"
}, },
"scan_sensor":{ "scan_sensor": {
"properties":{ "properties": {
"angle":{ "angle": {
"description":"Angle of range of swath width (in degrees)", "description": "Angle of range of swath width (in degrees)",
"example":140.0, "example": 140.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"frequency":{ "frequency": {
"description":"Frequency of scanning sensor (in kHz)", "description": "Frequency of scanning sensor (in kHz)",
"example":700.0, "example": 700.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"sensor_type":{ "sensor_type": {
"description":"Unique identifier for this platform", "description": "Unique identifier for this platform",
"enum":[ "enum": [
"SIDESCAN", "SIDESCAN",
"MBES" "MBES"
], ],
"example":"MBES", "example": "MBES",
"type":"string" "type": "string"
}, },
"swath_width":{ "swath_width": {
"description":"Function of `target_altitude` for the platform's swath width (in metres)", "description": "Function of `target_altitude` for the platform's swath width (in metres)",
"example":38.0, "example": 38.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"warmup_time":{ "warmup_time": {
"description":"Warmup time (seconds) for sensor to start up.", "description": "Warmup time (seconds) for sensor to start up.",
"example":180.0, "example": 180.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
} }
}, },
"type":"object" "type": "object"
}, },
"target_altitude":{ "target_altitude": {
"description":"Target altitude set for platform. This affects swath width", "description": "Target altitude set for platform. This affects swath width",
"example":15.0, "example": 15.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"turning_radius":{ "turning_radius": {
"description":"Turning radius of platform (in metres)", "description": "Turning radius of platform (in metres)",
"example":1.0, "example": 1.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
} }
}, },
"required":[ "required": [
"operator", "operator",
"platform_ID", "platform_ID",
"active", "active",
"model" "model"
], ],
"type":"object" "type": "object"
}, },
"type":"array" "type": "array"
}, },
"squad_ID":{ "squad_ID": {
"description":"Identifier of given squad", "description": "Identifier of given squad",
"example":23, "example": 23,
"type":"integer" "type": "integer"
}, },
"squad_mission_type":{ "squad_mission_type": {
"description":"Mission of given squad: `tracking`, `survey`, `inspection`", "description": "Mission of given squad: `tracking`, `survey`, `inspection`",
"enum":[ "enum": [
"tracking", "tracking",
"survey", "survey",
"inspection" "inspection"
], ],
"example":"survey", "example": "survey",
"type":"string" "type": "string"
} }
}, },
"required":[ "required": [
"squad_ID", "squad_ID",
"no_of_platforms", "no_of_platforms",
"platforms", "platforms",
"squad_mission_type" "squad_mission_type"
], ],
"type":"object" "type": "object"
}, },
"type":"array" "type": "array"
} }
}, },
"required":[ "required": [
"message_type", "message_type",
"planning_config_ID", "planning_config_ID",
"squads", "squads",
"exclusion_zones", "exclusion_zones",
"region_of_interest" "region_of_interest"
], ],
"type":"object" "type": "object"
}, },
"platform_status":{ "platform_status": {
"properties":{ "properties": {
"altitude":{ "altitude": {
"description":"Target altitude in metres", "description": "Target altitude in metres",
"example":20.0, "example": 20.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"autonomy_engine_plan_ID":{ "autonomy_engine_plan_ID": {
"description":"Last mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform", "description": "Last mission plan ID (according to Autonomy Engine's mission plan number sent) executed by platform",
"example":1, "example": 1,
"type":"integer" "type": "integer"
}, },
"battery_remaining_capacity":{ "battery_remaining_capacity": {
"description":"Battery remaining % provided by respective C2", "description": "Battery remaining % provided by respective C2",
"example":80.2, "example": 80.2,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"depth":{ "depth": {
"default":0.0, "default": 0.0,
"description":"Target depth in metres", "description": "Target depth in metres",
"example":50.0, "example": 50.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"heading":{ "heading": {
"description":"Angular distance relative to north, usually 000\u00b0 at north, clockwise through 359\u00b0, in degrees", "description": "Angular distance relative to north, usually 000\u00b0 at north, clockwise through 359\u00b0, in degrees",
"example":124.3, "example": 124.3,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"health_status":{ "health_status": {
"description":"Health status where 0 is OK, 1 is platform has an ERROR", "description": "Health status where 0 is OK, 1 is platform has an ERROR",
"example":false, "example": false,
"type":"boolean" "type": "boolean"
}, },
"latitude":{ "latitude": {
"description":"Latitude (Y-coordinate) in decimal degrees.", "description": "Latitude (Y-coordinate) in decimal degrees.",
"example":178.2, "example": 178.2,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"localisation_east_error":{ "localisation_east_error": {
"description":"Difference in EAST between deadreckoningand USBL update.", "description": "Difference in EAST between deadreckoningand USBL update.",
"example":0.000129, "example": 0.000129,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"localisation_north_error":{ "localisation_north_error": {
"description":"Difference in NORTH between deadreckoning and USBL update.", "description": "Difference in NORTH between deadreckoning and USBL update.",
"example":0.000129, "example": 0.000129,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"longitude":{ "longitude": {
"description":"Longitude (X-coordinate) in decimal degrees.", "description": "Longitude (X-coordinate) in decimal degrees.",
"example":-10.122, "example": -10.122,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"message_type":{ "message_type": {
"description":"Type of message", "description": "Type of message",
"enum":[ "enum": [
"platform_status" "platform_status"
], ],
"example":"platform_status", "example": "platform_status",
"type":"string" "type": "string"
}, },
"mission_plan_ID":{ "mission_plan_ID": {
"description":"Mission plan ID according to platform-C2 system", "description": "Mission plan ID according to platform-C2 system",
"example":1, "example": 1,
"type":"integer" "type": "integer"
}, },
"mission_track_ID":{ "mission_track_ID": {
"description":"Track number - stage in mission (e.g. 4 --> Waypoint 3 to Waypoint 4)", "description": "Track number - stage in mission (e.g. 4 --> Waypoint 3 to Waypoint 4)",
"example":4, "example": 4,
"type":"integer" "type": "integer"
}, },
"platform_ID":{ "platform_ID": {
"description":"Unique identifier for this platform", "description": "Unique identifier for this platform",
"example":"reav-x-1", "example": "reav-x-1",
"type":"string" "type": "string"
}, },
"platform_state":{ "platform_state": {
"description":"Current state executed by platform. E.g. STOP, IDLE, ABORT.", "description": "Current state executed by platform. E.g. STOP, IDLE, ABORT.",
"example":"ABORT", "example": "ABORT",
"type":"string" "type": "string"
}, },
"platform_timestamp":{ "platform_timestamp": {
"description":"Timestamp for onboard platform status message", "description": "Timestamp for onboard platform status message",
"example":"2022-12-21T00:00:00Z", "example": "2022-12-21T00:00:00Z",
"format":"date-time", "format": "date-time",
"type":"string" "type": "string"
}, },
"range_to_go":{ "range_to_go": {
"description":"Estimated distance to reach next waypoint", "description": "Estimated distance to reach next waypoint",
"example":124.3, "example": 124.3,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"sensor_config":{ "sensor_config": {
"description":"Scanning sensor on platform available to be controlled by the Autonomy Engine", "description": "Scanning sensor on platform available to be controlled by the Autonomy Engine",
"properties":{ "properties": {
"additional_data":{ "additional_data": {
"description":"Any addition fields/data to be added here", "description": "Any addition fields/data to be added here",
"example":{ "example": {
"payload":[ "payload": [
1.2, 1.2,
434 434
] ]
}, },
"type":"object" "type": "object"
}, },
"sensor_on":{ "sensor_on": {
"description":"Sensor switched on (true) or off (false)", "description": "Sensor switched on (true) or off (false)",
"example":true, "example": true,
"type":"boolean" "type": "boolean"
}, },
"sensor_serial":{ "sensor_serial": {
"description":"serial number of sensor", "description": "serial number of sensor",
"example":"mbes-002a", "example": "mbes-002a",
"type":"string" "type": "string"
} }
}, },
"type":"object" "type": "object"
}, },
"speed_over_ground":{ "speed_over_ground": {
"description":"Speed over ground", "description": "Speed over ground",
"example":124.3, "example": 124.3,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"status_source":{ "status_source": {
"description":"Indicate if this status message is from the platform or USBL", "description": "Indicate if this status message is from the platform or USBL",
"enum":[ "enum": [
"usbl", "usbl",
"onboard_platform" "onboard_platform"
], ],
"example":"usbl", "example": "usbl",
"type":"string" "type": "string"
}, },
"thrust_applied":{ "thrust_applied": {
"description":"Thrust applied", "description": "Thrust applied",
"example":124.3, "example": 124.3,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"transmission_mode":{ "transmission_mode": {
"description":"Mode in which status message was transmitted when on the surface (e.g. iridium/wifi) or underwater (e.g. acoustics)", "description": "Mode in which status message was transmitted when on the surface (e.g. iridium/wifi) or underwater (e.g. acoustics)",
"enum":[ "enum": [
"acoustics", "acoustics",
"iridium", "iridium",
"wifi", "wifi",
"starlink" "starlink"
], ],
"example":"wifi", "example": "wifi",
"type":"string" "type": "string"
}, },
"usbl_fix_seconds_ago":{ "usbl_fix_seconds_ago": {
"description":"USBL Fix received x second ago.", "description": "USBL Fix received x second ago.",
"example":10.0, "example": 10.0,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"water_current_velocity":{ "water_current_velocity": {
"description":"Water current magnitude and direction", "description": "Water current magnitude and direction",
"example":"124.3NE", "example": "124.3NE",
"type":"string" "type": "string"
} }
}, },
"required":[ "required": [
"message_type", "message_type",
"platform_ID", "platform_ID",
"status_source", "status_source",
...@@ -887,187 +924,185 @@ ...@@ -887,187 +924,185 @@
"latitude", "latitude",
"longitude" "longitude"
], ],
"type":"object" "type": "object"
}, },
"platform_status_encoded":{ "platform_status_encoded": {
"properties":{ "properties": {
"data":{ "data": {
"description":"encoded string. E.g. Base64 encoded", "description": "encoded string. E.g. Base64 encoded",
"example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type":"string" "type": "string"
}, },
"file_name":{ "file_name": {
"description":"Name of file", "description": "Name of file",
"example":"ah1-0238126349247372.bin", "example": "ah1-0238126349247372.bin",
"type":"string" "type": "string"
}, },
"is_binary":{ "is_binary": {
"description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example":true, "example": true,
"type":"boolean" "type": "boolean"
}, },
"message_type":{ "message_type": {
"description":"Type of message", "description": "Type of message",
"enum":[ "enum": [
"platform_status_encoded" "platform_status_encoded"
], ],
"example":"platform_status_encoded", "example": "platform_status_encoded",
"type":"string" "type": "string"
}, },
"mime_type":{ "mime_type": {
"description":"MIME type", "description": "MIME type",
"example":"application/gzip", "example": "application/gzip",
"type":"string" "type": "string"
} }
}, },
"required":[ "required": [
"data", "data",
"is_binary" "is_binary"
], ],
"type":"object" "type": "object"
}, },
"survey":{ "survey": {
"properties":{ "properties": {
"latitude_A":{ "latitude_A": {
"description":"Latitude of point A(intersection of normal)from waypoint A to survey line", "description": "Latitude of point A(intersection of normal)from waypoint A to survey line",
"example":178.2, "example": 178.2,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"latitude_B":{ "latitude_B": {
"description":"Latitude of point B(intersection of normal)from waypoint B to survey line", "description": "Latitude of point B(intersection of normal)from waypoint B to survey line",
"example":178.2, "example": 178.2,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"latitude_C":{ "latitude_C": {
"description":"Latitude of point C(intersection of normal)from waypoint C to survey line", "description": "Latitude of point C(intersection of normal)from waypoint C to survey line",
"example":178.2, "example": 178.2,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"latitude_D":{ "latitude_D": {
"description":"Latitude of point D(intersection of normal)from waypoint D to survey line", "description": "Latitude of point D(intersection of normal)from waypoint D to survey line",
"example":178.2, "example": 178.2,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"latitude_E":{ "latitude_E": {
"description":"Latitude of point E(intersection of normal)from waypoint E to survey line", "description": "Latitude of point E(intersection of normal)from waypoint E to survey line",
"example":178.2, "example": 178.2,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"longitude_A":{ "longitude_A": {
"description":"Longitude of point A(intersection of normal)from waypoint A to survey line", "description": "Longitude of point A(intersection of normal)from waypoint A to survey line",
"example":-10.122, "example": -10.122,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"longitude_B":{ "longitude_B": {
"description":"Longitude of point B(intersection of normal)from waypoint B to survey line", "description": "Longitude of point B(intersection of normal)from waypoint B to survey line",
"example":-10.122, "example": -10.122,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"longitude_C":{ "longitude_C": {
"description":"Longitude of point C(intersection of normal)from waypoint C to survey line", "description": "Longitude of point C(intersection of normal)from waypoint C to survey line",
"example":-10.122, "example": -10.122,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"longitude_D":{ "longitude_D": {
"description":"Longitude of point D(intersection of normal)from waypoint D to survey line", "description": "Longitude of point D(intersection of normal)from waypoint D to survey line",
"example":-10.122, "example": -10.122,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"longitude_E":{ "longitude_E": {
"description":"Longitude of point E(intersection of normal)from waypoint E to survey line", "description": "Longitude of point E(intersection of normal)from waypoint E to survey line",
"example":-10.122, "example": -10.122,
"format":"float", "format": "float",
"type":"number" "type": "number"
}, },
"message_type":{ "message_type": {
"description":"Type of message", "description": "Type of message",
"enum":[ "enum": [
"survey" "survey"
], ],
"example":"survey", "example": "survey",
"type":"string" "type": "string"
}, },
"platform_ID":{ "platform_ID": {
"description":"Unique identifier for this platform", "description": "Unique identifier for this platform",
"example":"ecosub-2", "example": "ecosub-2",
"type":"string" "type": "string"
}, },
"timestamp":{ "timestamp": {
"description":"Timestamp for onboard message", "description": "Timestamp for onboard message",
"example":"2022-12-21T00:00:00Z", "example": "2022-12-21T00:00:00Z",
"format":"date-time", "format": "date-time",
"type":"string" "type": "string"
}, },
"track_ID":{ "track_ID": {
"description":"Track number of action(s) currently executed by platform", "description": "Track number of action(s) currently executed by platform",
"example":1, "example": 1,
"type":"integer" "type": "integer"
} }
}, },
"required":[ "required": [
"latitude_A", "latitude_A",
"longitude_A", "longitude_A",
"latitude_B", "latitude_B",
"longitude_B", "longitude_B",
"platform_ID" "platform_ID"
], ],
"type":"object" "type": "object"
}, },
"survey_encoded":{ "survey_encoded": {
"properties":{ "properties": {
"data":{ "data": {
"description":"encoded string. E.g. Base64 encoded", "description": "encoded string. E.g. Base64 encoded",
"example":"SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==", "example": "SDQke4uwyP/YQQAgAhA2AND/nu8nvQAAAAAAAAAACtejPa5HHUGkcBAAAAIAAAAQAAAAAAAAAA9P2cP166ab+9cg==",
"type":"string" "type": "string"
}, },
"file_name":{ "file_name": {
"description":"Name of file", "description": "Name of file",
"example":"ah1-0238126349247372.bin", "example": "ah1-0238126349247372.bin",
"type":"string" "type": "string"
}, },
"is_binary":{ "is_binary": {
"description":"true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.", "description": "true if the data field contains binary format data encoded as base64. false if the data field contains ascii content such as NMEA.",
"example":true, "example": true,
"type":"boolean" "type": "boolean"
}, },
"message_type":{ "message_type": {
"description":"Type of message", "description": "Type of message",
"enum":[ "enum": [
"survey_encoded" "survey_encoded"
], ],
"example":"survey_encoded", "example": "survey_encoded",
"type":"string" "type": "string"
}, },
"mime_type":{ "mime_type": {
"description":"MIME type", "description": "MIME type",
"example":"application/gzip", "example": "application/gzip",
"type":"string" "type": "string"
} }
}, },
"required":[ "required": [
"data", "data",
"is_binary" "is_binary"
], ],
"type":"object" "type": "object"
} }
} }
}, },
"info":{ "info": {
"description":"SoAR message protocol in schemas", "description": "SoAR message protocol in schemas",
"title":"SoAR Backbone Message Formats", "title": "SoAR Backbone Message Formats",
"version":"1.0" "version": "1.0"
}, },
"openapi":"3.0.2", "openapi": "3.0.2",
"paths":{ "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