Skip to content

Capture designated (target) values for altitude, heading, vertical speed and airspeed #213

Open

Description

@Phlabry

Is your feature request related to a problem? Please describe.
The client's performance metric is actual minus designated. The plugin only reads actual instrument values, and neither the relay nor data_logger.py has any notion of a target, so deviation cannot be computed at all. docs/telemetry_schema.md section 3 describes this as the critical gap.

Describe the solution you'd like
Capture a designated value for altitude, heading, vertical speed and airspeed, and write them into the CSV as target_altitude, target_heading, target_vertical_speed and target_velocity, matching the schema in docs/telemetry_schema.md section 4a.

Additional context
Blocked until the client says where designated values come from. The three candidates are an instructor or scenario assigned target entered before the flight, an autopilot or FMS target dataref that X-Plane already exposes, or a value the client supplies alongside their telemetry. The answer decides the implementation: a UI or config change for the first, extra datarefs in the plugin for the second, or a join at the logger for the third.

The 20 Hz stream is a fixed-format CxxVector<f32> through baton and one iMotions event per value in the relay, so per-sample targets would widen the protocol. Targets that stay constant for a flight or a leg are better captured at the logger, the same argument the schema doc makes for pilot_id in #211.

Activity

  1. self-assigned this
    on Sep 28, 2026
  2. jmacd867 commented on Oct 15, 2026

    @jmacd867
    Collaborator

    What the client's 19 files tell us about targets:

    • The files have no target or autopilot columns, so targets can't come from the data itself. They were recorded in Prepar3D, not X-Plane (see Load the client's Prepar3D TSV exports into the telemetry schema #228), so an X-Plane autopilot dataref doesn't help for this data either.
    • The client's own framing from the first meeting was "if the plugin is set to fly at [an altitude], performance is the deviation from that target". That suggests she thinks of the target as a value set in the simulator, which these files don't record.
    • Targets will be per leg, not per flight. The route visits three airports (see the Trim each flight to the airborne portion and segment it into legs #229 edit). Every flight levels off at about 3,100–3,300 ft between airports, and the 220° and 000° legs are approaches. Approaches are normally judged on glide path, approach speed or touchdown point rather than on holding an altitude, so the four flight dynamics factors may not be the right measure for half of each flight.

    These are going to the client at the upcoming meeting: the per-leg instructions or briefing sheet, where the target was set and whether it can be exported, whether 3,100 ft was assigned, how she would score an approach, and whether the route headings are magnetic (the files record true heading).

  3. jmacd867 commented on Oct 16, 2026

    @jmacd867
    Collaborator

    Answers from the client meeting (full notes in `docs/client_meeting_notes.md`):

    • Source of targets: pilots get standardized instructions during the flight (for example "change heading to 20"). The instructions are timestamped in iMotions, and the eye tracker records audio and video. So targets are instructor-assigned, not from an autopilot. We do not have the timestamps yet, and the client may not be able to share iMotions data at first.
    • Altitude: 3,100 ft was the assigned altitude on both climbs (heading 190 and 040).
    • Scoring: approaches (220 and 000) are judged on all four flight dynamics factors, not on glide path or touchdown point alone. Climbs are also judged on altitude, airspeed and heading.
    • Heading: the route headings are true headings. The files record true heading, but the X-Plane plugin sends magnetic. See the new heading-reference issue.
    • Segmentation: the client already split each flight into 7 phases and will share it. Until instruction timestamps are available, use that.
    • Future: a model that detects the instruction and segments automatically, so new routes need no manual work.

    Still open: the numeric target for the airspeed and vertical speed legs (the client is looking for the scenario briefing).

  4. added this to the v1.0 milestone on Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

High PriorityNeeds to be fixed as soon as possiblearea:mlML / inference workarea:xplane-pluginX-Plane plugin componentenhancementNew feature or requestneeds-infoWaiting on reporter for more information

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions