From ee5574f92122c37e286fc2eaddf7048d2c6bc395 Mon Sep 17 00:00:00 2001 From: Trishna Saeharaseelan <trishna.saeharaseelan@noc.ac.uk> Date: Fri, 22 Nov 2024 11:03:21 +0000 Subject: [PATCH] fix: rebase to latest 67 branch --- CHANGELOG.md | 2 + examples/mas-dt/planning_configuration.json | 5 + formats/planning_configuration.py | 72 +++++++-- project/soar/swagger.json | 160 +++++++++++++++----- 4 files changed, 185 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a973545..f763be9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,12 +11,14 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Goal object in mission_plan message that consists of a GeoJSON feature (representing the part of primitive that is currently the goal of the given mission plan). - A `partial` flag that indicates if a mission plan is a partial plan or the entire mission plan +- Options to primitives (under planning_configuration message) which is only a property when a primitive has an instruction of "follow" or "navigate_to" - Validate message_ID matches uuid format - Add definition of instruction_set message - Added optional primitives to squad schema ### Changed +- Added "instruction" as required under the primitive schema (planning configuration) - Refactor instructeion_set into platform_instruction_set - Refactor mission_plan schema autonomy_engine_plan_ID oneOf - Update all example messages with valid UUIDs diff --git a/examples/mas-dt/planning_configuration.json b/examples/mas-dt/planning_configuration.json index fc34ee7..8244541 100644 --- a/examples/mas-dt/planning_configuration.json +++ b/examples/mas-dt/planning_configuration.json @@ -153,6 +153,11 @@ 50.335942 ] } + }, + "options": { + "repeat": true, + "reverse": true, + "acceptance_radius_m": 3000 } } ] diff --git a/formats/planning_configuration.py b/formats/planning_configuration.py index 7b5bc17..c679e85 100644 --- a/formats/planning_configuration.py +++ b/formats/planning_configuration.py @@ -181,26 +181,66 @@ platform_schema = { ], } -primitive_schema = { +options_schema = { "type": "object", "properties": { - "instruction": { - "type": "string", - "enum": [ - "stay_inside", - "stay_outside", - "navigate_to", - "follow", - "repeat", - "cover", - ], - "description": "How the associated feature should be used", - }, - "feature": { - "$ref": "https://geojson.org/schema/Feature.json", + "repeat": { + "type": "boolean", + "description": "Repeat these set of primitives in order (e.g. 1->2->3->1->2...)", + "example": True, + }, + "reverse": { + "type": "boolean", + "description": "Loop backwards through the set of primitives (e.g 1->2->-3->2->1...)", + "example": True, + }, + "acceptance_radius_m": { + "type": "number", + "format": "float", + "description": "Acceptance radius (if applicable) to points of geometry in metres", + "example": 10000, }, }, - "required": ["feature"], +} + +primitive_schema = { + "oneOf": [ + { + "properties": { + "instruction": { + "type": "string", + "enum": [ + "navigate_to", + "follow", + ], + "description": "How the associated feature should be used", + }, + "options": options_schema, + "feature": { + "$ref": "https://geojson.org/schema/Feature.json", + }, + }, + "required": ["feature", "instruction"], + }, + { + "properties": { + "instruction": { + "type": "string", + "enum": [ + "stay_inside", + "stay_outside", + "repeat", + "cover", + ], + "description": "How the associated feature should be used", + }, + "feature": { + "$ref": "https://geojson.org/schema/Feature.json", + }, + }, + "required": ["feature", "instruction"], + }, + ] } squad_metadata_schema = { diff --git a/project/soar/swagger.json b/project/soar/swagger.json index 44e912e..8dc6f11 100644 --- a/project/soar/swagger.json +++ b/project/soar/swagger.json @@ -1947,27 +1947,69 @@ "primitives": { "description": "Specification primitives - campaign-wide such as operating area and obstacles", "items": { - "properties": { - "feature": { - "$ref": "#/components/schemas/geojson.org.schema.Feature.json" + "oneOf": [ + { + "properties": { + "feature": { + "$ref": "#/components/schemas/geojson.org.schema.Feature.json" + }, + "instruction": { + "description": "How the associated feature should be used", + "enum": [ + "navigate_to", + "follow" + ], + "type": "string" + }, + "options": { + "properties": { + "acceptance_radius_m": { + "description": "Acceptance radius (if applicable) to points of geometry in metres", + "example": 10000, + "format": "float", + "type": "number" + }, + "repeat": { + "description": "Repeat these set of primitives in order (e.g. 1->2->3->1->2...)", + "example": true, + "type": "boolean" + }, + "reverse": { + "description": "Loop backwards through the set of primitives (e.g 1->2->-3->2->1...)", + "example": true, + "type": "boolean" + } + }, + "type": "object" + } + }, + "required": [ + "feature", + "instruction" + ] }, - "instruction": { - "description": "How the associated feature should be used", - "enum": [ - "stay_inside", - "stay_outside", - "navigate_to", - "follow", - "repeat", - "cover" - ], - "type": "string" + { + "properties": { + "feature": { + "$ref": "#/components/schemas/geojson.org.schema.Feature.json" + }, + "instruction": { + "description": "How the associated feature should be used", + "enum": [ + "stay_inside", + "stay_outside", + "repeat", + "cover" + ], + "type": "string" + } + }, + "required": [ + "feature", + "instruction" + ] } - }, - "required": [ - "feature" - ], - "type": "object" + ] }, "type": "array" }, @@ -2158,27 +2200,69 @@ "primitives": { "description": "Squad primitives - includes platform group navigation instructions", "items": { - "properties": { - "feature": { - "$ref": "#/components/schemas/geojson.org.schema.Feature.json" + "oneOf": [ + { + "properties": { + "feature": { + "$ref": "#/components/schemas/geojson.org.schema.Feature.json" + }, + "instruction": { + "description": "How the associated feature should be used", + "enum": [ + "navigate_to", + "follow" + ], + "type": "string" + }, + "options": { + "properties": { + "acceptance_radius_m": { + "description": "Acceptance radius (if applicable) to points of geometry in metres", + "example": 10000, + "format": "float", + "type": "number" + }, + "repeat": { + "description": "Repeat these set of primitives in order (e.g. 1->2->3->1->2...)", + "example": true, + "type": "boolean" + }, + "reverse": { + "description": "Loop backwards through the set of primitives (e.g 1->2->-3->2->1...)", + "example": true, + "type": "boolean" + } + }, + "type": "object" + } + }, + "required": [ + "feature", + "instruction" + ] }, - "instruction": { - "description": "How the associated feature should be used", - "enum": [ - "stay_inside", - "stay_outside", - "navigate_to", - "follow", - "repeat", - "cover" - ], - "type": "string" + { + "properties": { + "feature": { + "$ref": "#/components/schemas/geojson.org.schema.Feature.json" + }, + "instruction": { + "description": "How the associated feature should be used", + "enum": [ + "stay_inside", + "stay_outside", + "repeat", + "cover" + ], + "type": "string" + } + }, + "required": [ + "feature", + "instruction" + ] } - }, - "required": [ - "feature" - ], - "type": "object" + ] }, "type": "array" }, -- GitLab