# Telemetry Channel Spec v1 ## Core channels — required at >=100 Hz ```text timestamp_us table_angle_deg arm_angle_deg fz_n mx my mz spindle_rpm_actual table_rpm_actual arm_amplitude_deg_derived arm_center_deg_derived machine_state force_setpoint_n ``` ## Strongly recommended channels ```text fx_n fy_n ft_status z_servo_iq_v z_brake_engaged spindle_drive_state spindle_drive_error spindle_bus_voltage_v spindle_iq_a spindle_motor_temp_c arm_angle_linearized_deg table_rpm_setpoint spindle_rpm_setpoint spindle_direction_setpoint spindle_direction_actual force_actuator_cmd estop_active interlock_state mode fz_raw_n fz_contact_n ``` ## Principles - One monotonic Teensy timestamp source. - Raw values, not only filtered values. - Commanded and actual values are both present. - Sensor validity is explicit; never substitute fake good values. - Gaps are detectable from timestamps. - Header names are stable because downstream analysis will depend on them. - Spindle RPM remains a non-negative magnitude; spindle direction is logged separately as `cw` / `ccw` rather than encoded as signed RPM. ## CSV baseline First-write compatibility format is CSV. Later processing may produce Parquet/downsampled traces, but raw CSV must be preserved during commissioning.