Ticket 032: Terrain-Referenced Altitude Execution¶
Status: implemented.
Goal¶
Support mission legs whose altitude reference is terrain-relative while keeping estimator outputs deterministic and auditable.
Current Gap¶
This ticket is complete. Terrain-referenced altitude inputs are resolved through offline terrain providers, and terrain-derived metadata is reported in estimator outputs.
Scope¶
- Add a deterministic terrain provider interface.
- Add at least one offline terrain-data adapter.
- Resolve terrain-relative route-item altitudes into AMSL altitudes.
- Add diagnostics when required terrain coverage is missing.
- Record terrain provider metadata in estimator outputs.
- Add focused schema, estimator, CLI, and golden-fixture coverage.
Acceptance Criteria¶
- Missions using terrain-referenced altitude can run when terrain coverage is available.
- Missing or unsupported terrain data fails with structured diagnostics.
- Existing AMSL and relative-home behavior remains stable.
Delivered¶
TerrainProviderProtocol inestimator/environment/terrain.pyConstantElevationProvider— fixed elevation for all positionsGridTerrainProvider— uniform elevation grid with bilinear interpolationterrain_provider_idutility matching the wind provider patternadapters/terrain_grid.py—load_terrain_gridandTerrainGridLoadErrorfor YAML/JSON grid filesassets.terrain_filefield onMissionAssetsschema- CLI loads terrain from
assets.terrain_fileand passes it to the engine terrain_providerparameter onestimate_mission_distance_timeandtry_estimate_mission_distance_timeTERRAIN_COVERAGE_MISSINGfailure code for out-of-bounds queriesterrain_provider_idrecorded in result metadataTerrainProvider,ConstantElevationProvider,GridTerrainProviderexported fromestimatorexamples/terrain/flat_polder.yamlexample grid- Golden fixture scenario
tests/fixtures/golden/terrain/ - 19 new tests in
tests/test_terrain_altitude.py
Integrated Surfaces¶
- Mission YAML uses
assets.terrain_fileto reference terrain grids. - Terrain examples live under
examples/terrain/. - The
estimateandscenarioCLI commands load terrain assets through the same mission YAML path used by library callers. - Terrain behavior composes with vehicle YAML, mission route actions, geofence checks, landing-zone checks, wind providers, result envelopes, Markdown reports, and golden fixtures.
- Scenario reports include terrain asset provenance when a scenario references
a mission that uses
assets.terrain_file.
Out of Scope¶
- Online terrain service calls during core estimation.
- Obstacle clearance modeling.
- Regulatory terrain/obstacle compliance claims.