X-Plane sends live telemetry every simulation tick. This layer
receives the aircraft's position, motion, altitude, and ground state so VibePilot can start
listening like a controller.
Raw simulator transport and metadata normalisation. UDP telemetry is
received, validated, and mapped into VibePilot's internal vocabulary.
NetworkServiceReceives
simulator UDP frames and forwards validated telemetry internally.
→
XPlaneMetadataBridgeExtracts
aircraft identity and environment context from simulator metadata.
Receives: UDP Payload
latitude, longitude float
heading_true float
groundspeed float
altitude_msl,
vertical_speed float
on_ground, sim_time bool/float
Emits: AircraftStateRaw
lat, lon float
headingTrue float
groundspeedKt float
altitudeFt,
verticalSpeedFpm float
onGround, timestamp bool/float
AircraftStateRaw
The raw frame becomes a clean aircraft state. VibePilot now knows
where the aircraft is, how fast it is moving, what changed since the previous frame, and whether
it is airborne or on the runway.
Constructs a stable, continuous aircraft object. This is the first
continuity layer, preserving previous samples for motion and timing calculations.
AircraftStateFirst normalised
aircraft object combining raw motion and simulator metadata.
→
.fromTelemetry()Constructs
the operational AircraftState from normalised telemetry input.
Receives: AircraftStateRaw
lat, lon,
headingTrue
groundspeedKt,
altitudeFt
verticalSpeedFpm,
onGround
timestamp
Emits: AircraftState
position {lat,lon}
heading, track float
groundspeed, altitude
float
previousPosition {lat,lon}
deltaTime float
AircraftState
This is where the aircraft first gets a measurable relationship to a
runway. VibePilot calculates threshold distance, centerline offset, heading alignment, and
runway-relative movement.
Converts aircraft state into runway-relative geometry. First layer where
runway relation becomes measurable, fed continuously by L04 runway candidates.
GeoMathLow-level spatial
calculations used across geometry and runway logic.
→
GeoCalculatorDerives
headings, distances, bearings and positional deltas.
→
MagneticModelConverts true
bearings into local magnetic reference.
→
RunwayHeadingResolverAligns
aircraft track against runway magnetic heading families.
Receives
AircraftState
RunwayCandidateSet ← L04
Emits: GeometryState
distanceToThreshold
bearingToThreshold
crossTrackMeters
alongTrackMeters
headingDelta
alignedRunways[]
GeometryState
↶ cross-layer feed: RunwayCandidateSet from L04 on every frame
A loaded runway reference map gives the aircraft something to be
measured against. For a nearby airport, it supplies threshold coordinates, headings, dimensions,
and runway identities in real time.
Persistent runway reference layer supplying geometry and runway intelligence
with spatial context.
AptDatLoaderParses X-Plane
apt.dat runway definitions into structured memory.
→
RunwayRepositoryPersistent
runway dataset used by all higher runway logic.
→
RunwayFamilyIndexGroups
reciprocal runways into operational families.
→
AirportSpatialIndexFast
lookup structure for nearby airport geometry.
Receives: Context Request
aircraft position
search radius
Emits: RunwayCandidateSet
runwayId,
airportIcao
thresholdA {lat,lon}
thresholdB {lat,lon}
heading, length,
width
RunwayCandidateSet
47,824 airports · 75,000+ runways · X-Plane apt.dat
↷ feeds L03 (geometry) and L05 (RISEngine) on every frame
Geometry says where the aircraft is. RISEngine says what the aircraft
is doing relative to the runway: joining final, stabilising, crossing the threshold, touching
down, rolling out, or vacating.
Converts geometry into runway intent. RISEngine orchestrates the call chain.
Corridor and lateral detectors run as sibling branches feeding RunwayIntentPredictor after phase
is resolved.
RISEngineCentral
runway-intelligence orchestrator resolving runway intent.
→
RunwayPhaseResolverDetermines
whether aircraft is approach, rollout, or airborne relative to runway.
→
ApproachCorridorDetectorMeasures corridor alignment before runway threshold
entry.
branch
RunwayLateralDetectorTracks lateral displacement relative to runway
centreline.
→
ApproachStabilityMonitorEvaluates approach continuity before intent
confirmation.
→
RunwayIntentPredictorPredicts
target runway before physical threshold crossing.
Receives
AircraftState
GeometryState
RunwayCandidateSet ← L04
Emits: RunwayIntentState
assignedRunway
phase
stableApproach bool
lateralConfidence float
occupancyPrediction
RunwayIntentState
Touchdown · Rollout · Vacated latch
Before the system speaks, it checks whether the aircraft is actually
ready for controller action. Alignment, vertical path, trend, runway phase, and timing all have
to support the same answer.
Turns runway understanding into controller readiness. This layer protects
the speech path by separating aircraft evaluation from the final controller phrase.
Vertical CheckCompares the
aircraft against the expected approach path.
→
Stability CheckChecks
whether geometry and trend have stayed trustworthy long enough.
with
Timing CheckPrevents
controller action from firing too early or too late.
·
Readiness StateSummarises
whether controller speech is allowed, delayed, or blocked.
·
Speech WindowCarries the
controller decision forward only when the timing window is valid.
Receives
RunwayIntentState
AircraftState
vertical path
approach trend
Emits: ReadinessState
stable bool
clearanceReady bool
timingReady bool
releaseAllowed bool
speechWindow bool
ReadinessState
Approach stability · timing · release readiness
This is the operational end of the chain. The controller decides what
can be said, the phrase layer turns that decision into aviation language, and the result becomes
ATC speech for the pilot.
Controller speech is produced only after runway context and readiness have
been resolved. The interface may display the reasoning, but the final output is the spoken ATC
transmission.
Controller DecisionChooses whether to continue, wait, clear, instruct, or
intervene.
stages
Phrase BuilderTurns the
decision into standard controller wording.
·
Radio TransmissionDelivers the ATC instruction as the pilot-facing
output.
→
ATC PhraseKeeps the wording
concise, phase-aware, and aviation-like.
→
Speech OutputThe final
operational output heard by the pilot.
Receives
RunwayIntentState
ReadinessState
clearance state
radio context
Emits: ATC Speech
instructionType
assignedRunway
phraseology string
transmission
"CLEARED TO LAND RUNWAY 28"