"...backbone-adapter-testsuite.git" did not exist on "ddd182c92ba717786c72d9e55deefca91baf69fe"
autonomy_configuration.py 2.88 KB
Newer Older
1 2
"""
    schemas: configuration sent to Autonomy Engine (i.e. during an emergency,
3
    if a platform needs to be removed from the mission planning)
4
"""
5
from . import api, message_header_schema, platform_schema
6 7 8 9 10 11 12 13
from flask_restx import fields


squad_metadata_schema = api.model(
    "SquadMetadataSchema",
    {
        "squad_ID": fields.Integer(
            required=True,
14
            description="platform serial number",
15 16
            example="ah-1",
        ),
17
        "no_of_platforms": fields.Integer(
18
            required=True,
19
            description="number of platform serial number",
20 21
            example="ah-1",
        ),
22 23
        "platforms": fields.List(
            fields.Nested(platform_schema),
24
            required=True,
25
            description="Metadata pf each platform",
26 27 28 29 30 31
        ),
        "squad_mission_type": fields.String(
            required=True,
            description="Survey or Detail",
            example="survey",
        ),
32
        "squad_state": fields.Boolean(
33
            required=True,
34 35
            description="True if given Squad is executing mission type "
            + "according to the Autonomy Engine plan",
36 37 38 39 40 41 42
            example=False,
        ),
    },
)

constraints_schema = api.model(
    "ConstraintsSchema",
43
    # TODO: Should this be per platform instead of squad?
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
    {
        "min_altitude": fields.Float(
            required=True,
            description="Minimum altitude set for squad.",
            example=15.2,
        ),
        "min_velocity": fields.Float(
            required=True,
            description="Minimum velocity set for squad.",
            example=0.1,
        ),
        "max_velocity": fields.Float(
            required=True,
            description="Maximum altitude set for squad.",
            example=0.9,
        ),
    },
)

environment_config_schema = api.model(  # TODO: Discuss how regions are defined
    "EnvironmentConfig",
    {
        "region_of_interest": fields.String(),
        "exclusion_zone": fields.String(),
    },
)
# Main Autonomy Configuration Schema
autonomy_configuration_schema = api.model(
    "SquadConfigurationSchema",
    {
        "message": fields.Nested(
            message_header_schema,
            required=True,
            description="Message header",
        ),
        "ID": fields.Integer(
            required=True,
            description="Unique identifier tagged to version of this"
            + " configuration plan",
            example=3,
        ),
        "time": fields.String(
            required=True,
            description="",
            example="",
        ),
        "squads": fields.Nested(
            squad_metadata_schema,
            required=False,
            description="Details of each squad",
        ),
        "environment": fields.Nested(
            environment_config_schema,
            required=False,
            description="Region of interest and exclusion zone",
        ),
    },
)