2026-05-26 16:23:04 +00:00
|
|
|
# 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
|
2026-06-02 15:40:16 +00:00
|
|
|
spindle_direction_setpoint
|
|
|
|
|
spindle_direction_actual
|
2026-05-26 16:23:04 +00:00
|
|
|
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.
|
2026-06-02 15:40:16 +00:00
|
|
|
- Spindle RPM remains a non-negative magnitude; spindle direction is logged separately as `cw` / `ccw` rather than encoded as signed RPM.
|
2026-05-26 16:23:04 +00:00
|
|
|
|
|
|
|
|
## CSV baseline
|
|
|
|
|
|
|
|
|
|
First-write compatibility format is CSV. Later processing may produce Parquet/downsampled traces, but raw CSV must be preserved during commissioning.
|