""" schemas: configuration sent to Autonomy Engine (i.e. during an emergency, if a platform needs to be removed from the mission planning) """ emergency_schema = { "type": "object", "properties": { "safe_command": { "type": "string", "enum": ["go_home", "abort_now", "stop_mission"], "description": "Command/Action that is native to respective" + " partner's platform/C2", "example": "go_home", }, "target_waypoint_latitude": { "type": "number", "format": "float", "description": "X-coordinate safe place for respective platform", "example": -7.432, }, "target_waypoint_longitude": { "type": "number", "format": "float", "description": "Y-coordinate safe place for respective platform", "example": 50.365, }, "target_depth": { "type": "number", "format": "float", "description": "Z-coordinate safe place for respective platform" + " . If platform to NOT stay at depth, key in `0.0`", "example": 10.0, }, "additional_data": { "description": "Any addition fields/data to be added here", "example": {}, }, }, "required": [ "target_waypoint_latitude", "target_waypoint_longitude", "target_depth", ], } platform_schema = { "type": "object", "properties": { "platform_ID": { "type": "string", "description": "Unique identifier for this platform", "example": "reav-x-1", }, "model": { "type": "string", "example": "reav", }, "emergency": emergency_schema, "min_altitude": { "type": "number", "format": "float", "description": "Minimum altitude set for squad.", "example": 15.2, }, "min_velocity": { "type": "number", "format": "float", "description": "Minimum velocity set for squad.", "example": 0.1, }, "max_velocity": { "type": "number", "format": "float", "description": "Maximum altitude set for squad.", "example": 0.9, }, "additional_data": { "description": "Any addition fields/data to be added here", "example": {"swath_width": 10.0, "scan_type": "DVL"}, "type": "object", }, }, "required": [ "platform_ID", "model", "emergency", "min_altitude", "min_velocity", "max_velocity", ], } region_schema = { "type": "object", "properties": { "geometry_coordinates": { "type": "array", # TODO: Check if config defn is right. "example": [ [ [-4.187143188645706, 50.37072283932642], [-4.202697005964865, 50.368816892405874], [-4.203156724702808, 50.365640144076906], [-4.19449868846155, 50.362267670845654], ] ], }, }, "description": "Using GEOJSON, exact 4-point region (rectangle shaped)", } squad_metadata_schema = { "type": "object", "properties": { "squad_ID": { "type": "integer", "description": "Identifier of given squad", "example": 23, }, "no_of_platforms": { "type": "integer", "description": "Number of platforms", "example": 3, }, "platforms": { "type": "array", "items": platform_schema, "description": "Squad consists of these platforms", }, "squad_mission_type": { "type": "string", "enum": ["tracking", "survey", "inspection"], "description": "Mission of given squad: `tracking`, `survey`" + ", `inspection`", "example": "survey", }, "squad_state": { "type": "string", "description": "In execution, Waiting.. <define further>", "example": False, }, "region_of_interest": region_schema, }, "required": [ "squad_ID", "no_of_platforms", "platforms", "squad_mission_type", "squad_state", ], } planning_configuration_schema = { "type": "object", "properties": { "message_type": { "type": "string", "description": "Type of message", "example": "planning_configuration", "enum": ["planning_configuration"], }, "planning_config_ID": { "type": "integer", "description": "Unique identifier tagged to version of this" + " configuration plan", "example": 3, }, "exclusion_zones": { "type": "array", "items": region_schema, "description": "Exclusion zones for all platforms", }, "squads": { "type": "array", "items": squad_metadata_schema, }, }, "required": [ "message_type", "planning_config_ID", "squads", "exclusion_zones", ], }