From 101c584785f8cf604ba9b321a9823dce4a4f4d35 Mon Sep 17 00:00:00 2001 From: Benjamin Pelletier Date: Fri, 1 Dec 2023 00:28:29 +0000 Subject: [PATCH] Add U-space MSL test scenario --- .../configurations/dev/uspace.yaml | 2 + .../requirements/uspace/article8.md | 7 +++ .../scenarios/uspace/netrid/__init__.py | 0 .../scenarios/uspace/netrid/msl.md | 48 +++++++++++++++++++ .../scenarios/uspace/netrid/msl.py | 31 ++++++++++++ .../suites/uspace/network_identification.md | 7 +++ .../suites/uspace/network_identification.yaml | 5 ++ .../suites/uspace/required_services.md | 6 +++ 8 files changed, 106 insertions(+) create mode 100644 monitoring/uss_qualifier/requirements/uspace/article8.md create mode 100644 monitoring/uss_qualifier/scenarios/uspace/netrid/__init__.py create mode 100644 monitoring/uss_qualifier/scenarios/uspace/netrid/msl.md create mode 100644 monitoring/uss_qualifier/scenarios/uspace/netrid/msl.py diff --git a/monitoring/uss_qualifier/configurations/dev/uspace.yaml b/monitoring/uss_qualifier/configurations/dev/uspace.yaml index a066f622ee..69247f0396 100644 --- a/monitoring/uss_qualifier/configurations/dev/uspace.yaml +++ b/monitoring/uss_qualifier/configurations/dev/uspace.yaml @@ -127,6 +127,8 @@ v1: - astm.f3411.v22a.display_provider#Operator Position transmitter - astm.f3411.v22a.dss_provider - astm.f3548.v21.scd#Automated verification + - requirements: + - uspace.article8.MSLAltitude participant_requirements: uss1: uspace uss2: uspace diff --git a/monitoring/uss_qualifier/requirements/uspace/article8.md b/monitoring/uss_qualifier/requirements/uspace/article8.md new file mode 100644 index 0000000000..575c2f0cb2 --- /dev/null +++ b/monitoring/uss_qualifier/requirements/uspace/article8.md @@ -0,0 +1,7 @@ +# U-space Article 8: Network Identification Service + +## Article 8(2)(c) + +_The network identification service shall allow for the authorised users to receive messages with the geographical position of the UAS, its altitude above mean sea level and its height above the surface or take-off point._ + +MSLAltitude: Authorised users must receive messages with UAS altitude above mean sea level. diff --git a/monitoring/uss_qualifier/scenarios/uspace/netrid/__init__.py b/monitoring/uss_qualifier/scenarios/uspace/netrid/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/monitoring/uss_qualifier/scenarios/uspace/netrid/msl.md b/monitoring/uss_qualifier/scenarios/uspace/netrid/msl.md new file mode 100644 index 0000000000..494dfd2509 --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/uspace/netrid/msl.md @@ -0,0 +1,48 @@ +# U-space MSL altitude test scenario + +## Description + +Article 8(2)(c) specifies (emphasis added): + +> The network identification service shall allow for the authorised users to receive messages with the geographical position of the UAS, its *altitude above mean sea level* and its height above the surface or take-off point. + + +ASTM F3411 provides geodetic altitude above the WGS84 ellipsoidal estimate of sea level, however AMC1 specifies: + +> USSPs should convert the heights above the WGS 84 ellipsoid exchanged with the ASTM F-3411-22A standard to height above mean sea level (MSL) before providing it to the UAS operators. + + +GM1 further clarifies the desired definition of mean sea level: + +> Wherever the flight altitude above sea level is required to be determined with the use of GNSS systems, it is recommended to use the EGM2008 or at least the EGM96 geoid models as the definition of mean sea level, as agreed with the competent authority. + + +Therefore, to comply with Article 8(2)(c), a USSP must allow for the authorised users to receive messages with the UAS's altitude above the EGM96 geoid. + +### Assumptions + +This scenario assumes that [the ASTM F3411-22a nominal behavior NetRID test scenario](../../astm/netrid/v22a/nominal_behavior.md) has already been completed and determines compliance with the requirement above by examining the observations made by uss_qualifier as an automated "authorised user". + +## Resources + +### observers + +The set of USSPs providing messages to authorised users to be evaluated for U-space MSL compliance. + +## UAS observations evaluation test case + +### Find nominal behavior report test step + +To avoid re-running a nearly-identical test scenario, this test scenario merely examines data collected in a separate test scenario (see [Assumptions](#assumptions)). Therefore, the first step in this scenario is to find the test report for that other scenario. + +If an appropriate test report cannot be found, this scenario will be discontinued. + +### Evaluate UAS observations test step + +#### ⚠️ Message contains MSL altitude check + +If the response message for the remote identification observation made by the virtual/automated authorised user does not contain the UAS's MSL altitude, the USSP will have failed to comply with **[uspace.article8.MSLAltitude](../../../requirements/uspace/article8.md)**. + +#### ⚠️ MSL altitude is correct check + +In the previously-conducted test scenario, UAS altitudes were injected relative to the WGS84 ellipsoid. Since the EGM96 geoid is a standard shape that is well-defined relative to the WGS84 ellipsoid, this means the altitude relative to the EGM96 is defined by the injection. If the observed MSL altitude differs from the injected MSL altitude, then the USSP has failed to allow the automated authorised user to receive messages with the UAS's altitude above mean sea level per **[uspace.article8.MSLAltitude](../../../requirements/uspace/article8.md)** because the altitude reported was not the altitude of the UAS. diff --git a/monitoring/uss_qualifier/scenarios/uspace/netrid/msl.py b/monitoring/uss_qualifier/scenarios/uspace/netrid/msl.py new file mode 100644 index 0000000000..c90277688c --- /dev/null +++ b/monitoring/uss_qualifier/scenarios/uspace/netrid/msl.py @@ -0,0 +1,31 @@ +from typing import List + +from monitoring.uss_qualifier.configurations.configuration import ParticipantID +from monitoring.uss_qualifier.resources.netrid import NetRIDObserversResource +from monitoring.uss_qualifier.scenarios.scenario import TestScenario + + +class MSLAltitude(TestScenario): + _ussps: List[ParticipantID] + + def __init__(self, observers: NetRIDObserversResource): + super().__init__() + self._ussps = [obs.participant_id for obs in observers.observers] + + def run(self, context): + self.begin_test_scenario(context) + + self.begin_test_case("UAS observations evaluation") + + self.begin_test_step("Find nominal behavior report") + # TODO: Find test report for NetRID nominal behavior scenario + self.end_test_step() + + self.begin_test_step("Evaluate UAS observations") + # TODO: Examine observation queries in test report to see if MSL was present + # TODO: When MSL is present, verify that its value matches injected altitude above ellipsoid + self.end_test_step() + + self.end_test_case() + + self.end_test_scenario() diff --git a/monitoring/uss_qualifier/suites/uspace/network_identification.md b/monitoring/uss_qualifier/suites/uspace/network_identification.md index e3a48c7084..3e3f7efd74 100644 --- a/monitoring/uss_qualifier/suites/uspace/network_identification.md +++ b/monitoring/uss_qualifier/suites/uspace/network_identification.md @@ -5,6 +5,7 @@ ## [Actions](../README.md#actions) 1. Suite: [ASTM F3411-22a](../astm/netrid/f3411_22a.md) ([`suites.astm.netrid.f3411_22a`](../astm/netrid/f3411_22a.yaml)) +2. Scenario: [U-space MSL altitude](../../scenarios/uspace/netrid/msl.md) ([`scenarios.uspace.netrid.msl.MSLAltitude`](../../scenarios/uspace/netrid/msl.py)) ## [Checked requirements](../README.md#checked-requirements) @@ -489,4 +490,10 @@ Implemented ASTM NetRID DSS: Concurrent Requests
ASTM NetRID DSS: ISA Expiry
ASTM NetRID DSS: Simple ISA
ASTM NetRID DSS: Token Validation
ASTM NetRID nominal behavior + + uspace
.article8
+ MSLAltitude + Implemented + U-space MSL altitude + diff --git a/monitoring/uss_qualifier/suites/uspace/network_identification.yaml b/monitoring/uss_qualifier/suites/uspace/network_identification.yaml index c786d1edd0..d07ce5578e 100644 --- a/monitoring/uss_qualifier/suites/uspace/network_identification.yaml +++ b/monitoring/uss_qualifier/suites/uspace/network_identification.yaml @@ -22,6 +22,11 @@ actions: id_generator: id_generator service_area: service_area problematically_big_area: problematically_big_area + on_failure: Abort +- test_scenario: + scenario_type: scenarios.uspace.netrid.msl.MSLAltitude + resources: + observers: observers on_failure: Continue participant_verifiable_capabilities: - id: uspace_netrid_service_provider diff --git a/monitoring/uss_qualifier/suites/uspace/required_services.md b/monitoring/uss_qualifier/suites/uspace/required_services.md index debcace35a..242091f261 100644 --- a/monitoring/uss_qualifier/suites/uspace/required_services.md +++ b/monitoring/uss_qualifier/suites/uspace/required_services.md @@ -675,6 +675,12 @@ Implemented Data Validation of GET operational intents by USS + + uspace
.article8
+ MSLAltitude + Implemented + U-space MSL altitude + versioning ReportSystemVersion