diff --git a/README.md b/README.md index 712f4b91..12bc0743 100644 --- a/README.md +++ b/README.md @@ -158,12 +158,12 @@ The paths point to configuration files, not generated data. For example: ```yaml data_files: - telemetry: "config/bern/telemetry_f1.json" + telemetry: "config/bern/trajectory_f1.json" flight_declaration: "config/bern/flight_declaration.json" scenarios: "F1_happy_path": - telemetry: "config/bern/telemetry_f1.json" # Optional override + telemetry: "config/bern/trajectory_f1.json" # Optional override flight_declaration: "config/bern/flight_declaration.json" # Optional override ``` diff --git a/config/bern/telemetry_f1.json b/config/bern/trajectory_f1.json similarity index 100% rename from config/bern/telemetry_f1.json rename to config/bern/trajectory_f1.json diff --git a/config/bern/telemetry_f2.json b/config/bern/trajectory_f2.json similarity index 100% rename from config/bern/telemetry_f2.json rename to config/bern/trajectory_f2.json diff --git a/config/bern/telemetry_f3.json b/config/bern/trajectory_f3.json similarity index 100% rename from config/bern/telemetry_f3.json rename to config/bern/trajectory_f3.json diff --git a/config/bern/telemetry_f4.json b/config/bern/trajectory_f4.json similarity index 100% rename from config/bern/telemetry_f4.json rename to config/bern/trajectory_f4.json diff --git a/config/bern/telemetry_f5.json b/config/bern/trajectory_f5.json similarity index 100% rename from config/bern/telemetry_f5.json rename to config/bern/trajectory_f5.json diff --git a/config/default.yaml b/config/default.yaml index 49223fe3..54e3c4c5 100644 --- a/config/default.yaml +++ b/config/default.yaml @@ -31,20 +31,20 @@ air_traffic_simulator_settings: sensor_ids: ["a0b7d47e5eac45dc8cbaf47e6fe0e558"] # List of sensor IDs to use when 'multiple' is selected data_files: - telemetry: "config/bern/telemetry_f1.json" # Path to flight declarations JSON file + trajectory: "config/bern/trajectory_f1.json" # Path to flight declarations JSON file flight_declaration: "config/bern/flight_declaration.json" # Path to flight declarations JSON file # geo_fence: "config/geo_fences.json" # Path to geo-fences # List of test scenario IDs to execute scenarios: F1_happy_path: - telemetry: "config/bern/telemetry_f1.json" + trajectory: "config/bern/trajectory_f1.json" F2_contingent_path: - telemetry: "config/bern/telemetry_f2.json" + trajectory: "config/bern/trajectory_f2.json" F3_non_conforming_path: - telemetry: "config/bern/telemetry_f3.json" - # F5_non_conforming_path: - # telemetry: "config/bern/telemetry_f5.json" + trajectory: "config/bern/trajectory_f3.json" +# F5_non_conforming_path: +# trajectory: "config/bern/trajectory_f5.json" opensky_live_data: add_flight_declaration: geo_fence_upload: diff --git a/src/openutm_verification/core/clients/air_traffic/base_client.py b/src/openutm_verification/core/clients/air_traffic/base_client.py index 2a2b543b..a914b8dd 100644 --- a/src/openutm_verification/core/clients/air_traffic/base_client.py +++ b/src/openutm_verification/core/clients/air_traffic/base_client.py @@ -23,7 +23,7 @@ class AirTrafficSettings(BaseSettings): def create_air_traffic_settings() -> AirTrafficSettings: """Factory function to create AirTrafficSettings from config after initialization.""" return AirTrafficSettings( - simulation_config_path=config.data_files.telemetry or "", + simulation_config_path=config.data_files.trajectory or "", simulation_duration_seconds=config.air_traffic_simulator_settings.simulation_duration_seconds or 30, number_of_aircraft=config.air_traffic_simulator_settings.number_of_aircraft or 2, single_or_multiple_sensors=config.air_traffic_simulator_settings.single_or_multiple_sensors or "single", diff --git a/src/openutm_verification/core/clients/flight_blender/flight_blender_client.py b/src/openutm_verification/core/clients/flight_blender/flight_blender_client.py index bcd74e92..4c16d6dc 100644 --- a/src/openutm_verification/core/clients/flight_blender/flight_blender_client.py +++ b/src/openutm_verification/core/clients/flight_blender/flight_blender_client.py @@ -749,7 +749,7 @@ def close_heartbeat_websocket_connection(self, ws_connection: Any) -> None: ws_connection.close() @scenario_step("Setup Flight Declaration") - def setup_flight_declaration(self, flight_declaration_path: str, telemetry_path: str) -> None: + def setup_flight_declaration(self, flight_declaration_path: str, trajectory_path: str) -> None: """Generates data and uploads flight declaration.""" from openutm_verification.scenarios.common import ( generate_flight_declaration, @@ -757,7 +757,7 @@ def setup_flight_declaration(self, flight_declaration_path: str, telemetry_path: ) flight_declaration = generate_flight_declaration(flight_declaration_path) - telemetry_states = generate_telemetry(telemetry_path) + telemetry_states = generate_telemetry(trajectory_path) self.telemetry_states = telemetry_states @@ -770,7 +770,7 @@ def setup_flight_declaration(self, flight_declaration_path: str, telemetry_path: @contextmanager def flight_declaration(self, data_files: DataFiles): """Context manager to setup and teardown a flight operation based on scenario config.""" - self.setup_flight_declaration(data_files.flight_declaration, data_files.telemetry) + self.setup_flight_declaration(data_files.flight_declaration, data_files.trajectory) try: yield finally: diff --git a/src/openutm_verification/core/clients/opensky/base_client.py b/src/openutm_verification/core/clients/opensky/base_client.py index 68583a83..07344509 100644 --- a/src/openutm_verification/core/clients/opensky/base_client.py +++ b/src/openutm_verification/core/clients/opensky/base_client.py @@ -39,7 +39,7 @@ def create_opensky_settings() -> OpenSkySettings: return OpenSkySettings( opensky_client_id=config.opensky.auth.client_id or "", opensky_client_secret=config.opensky.auth.client_secret or "", - simulation_config_path=config.data_files.telemetry or "", + simulation_config_path=config.data_files.trajectory or "", simulation_duration_seconds=30, ) diff --git a/src/openutm_verification/core/execution/config_models.py b/src/openutm_verification/core/execution/config_models.py index 7c3924b7..77eb29b9 100644 --- a/src/openutm_verification/core/execution/config_models.py +++ b/src/openutm_verification/core/execution/config_models.py @@ -61,11 +61,11 @@ class ReportingConfig(StrictBaseModel): class DataFiles(StrictBaseModel): """Paths to data files used in the application.""" - telemetry: Optional[str] = None + trajectory: Optional[str] = None flight_declaration: Optional[str] = None geo_fence: Optional[str] = None - @field_validator("telemetry", "flight_declaration", "geo_fence") + @field_validator("trajectory", "flight_declaration", "geo_fence") @classmethod def validate_path(cls, v: Optional[str]) -> Optional[str]: """Validate that path is a non-empty string if provided.""" @@ -91,8 +91,8 @@ def resolve_and_validate_path(path_str: str, field_name: str) -> str: raise ValueError(f"{field_name} path is not a file: {resolved}") return str(resolved) - if self.telemetry: - self.telemetry = resolve_and_validate_path(self.telemetry, "Telemetry") + if self.trajectory: + self.trajectory = resolve_and_validate_path(self.trajectory, "Trajectory") if self.flight_declaration: self.flight_declaration = resolve_and_validate_path(self.flight_declaration, "Flight declaration") if self.geo_fence: diff --git a/src/openutm_verification/core/execution/dependencies.py b/src/openutm_verification/core/execution/dependencies.py index eaec477d..d4644ae4 100644 --- a/src/openutm_verification/core/execution/dependencies.py +++ b/src/openutm_verification/core/execution/dependencies.py @@ -56,7 +56,7 @@ def data_files(scenario_id: ScenarioId) -> Generator[DataFiles, None, None]: config = get_settings() scenario_config = config.scenarios.get(scenario_id) or config.data_files data = DataFiles( - telemetry=scenario_config.telemetry or config.data_files.telemetry, + trajectory=scenario_config.trajectory or config.data_files.trajectory, flight_declaration=scenario_config.flight_declaration or config.data_files.flight_declaration, geo_fence=scenario_config.geo_fence or config.data_files.geo_fence, ) diff --git a/src/openutm_verification/scenarios/common.py b/src/openutm_verification/scenarios/common.py index 5aba253a..d85105c0 100644 --- a/src/openutm_verification/scenarios/common.py +++ b/src/openutm_verification/scenarios/common.py @@ -33,7 +33,7 @@ def generate_telemetry(config_path: str, duration: int = DEFAULT_TELEMETRY_DURAT simulator_config = GeoJSONFlightsSimulatorConfiguration(geojson=geojson_data) simulator = GeoJSONFlightsSimulator(simulator_config) - simulator.generate_flight_grid_and_path_points(altitude_of_ground_level_wgs_84=570) + simulator.generate_flight_grid_and_path_points(altitude_of_ground_level_wgs_84=120) return simulator.generate_states(duration=duration) except Exception as e: logger.error(f"Failed to generate telemetry states from {config_path}: {e}") diff --git a/src/openutm_verification/scenarios/test_f3_flow.py b/src/openutm_verification/scenarios/test_f3_flow.py index c126a983..897ad3a3 100644 --- a/src/openutm_verification/scenarios/test_f3_flow.py +++ b/src/openutm_verification/scenarios/test_f3_flow.py @@ -24,6 +24,7 @@ def test_f3_non_conforming_path(fb_client: FlightBlenderClient, data_files: Data """ with fb_client.flight_declaration(data_files): fb_client.update_operation_state(new_state=OperationState.ACTIVATED) + fb_client.wait_x_seconds(5) fb_client.submit_telemetry(duration_seconds=20) fb_client.check_operation_state(expected_state=OperationState.NONCONFORMING, duration_seconds=5) fb_client.update_operation_state(new_state=OperationState.ENDED)