You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Capture designated (target) values for altitude, heading, vertical speed and airspeed #213
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.
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).
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).
Activity
jmacd867 commentedon Oct 15, 2026
What the client's 19 files tell us about targets:
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).
jmacd867 commentedon Oct 16, 2026
Answers from the client meeting (full notes in `docs/client_meeting_notes.md`):
Still open: the numeric target for the airspeed and vertical speed legs (the client is looking for the scenario briefing).