110 lines
2.5 KiB
JSON
110 lines
2.5 KiB
JSON
{
|
|
"schema_version": "machine-capabilities.v1",
|
|
"machine_id": "fullum-alpha",
|
|
"machine_family": "swing-arm",
|
|
"machine_name": "Fullum Swing-Arm Polisher",
|
|
"controller_version": "polisher-control/0.1.0",
|
|
"last_verified": "2026-06-01T00:00:00Z",
|
|
"supported_motion_families": [
|
|
"swing-arm-rosette"
|
|
],
|
|
"force_range_n": [
|
|
5,
|
|
200
|
|
],
|
|
"table_rpm_range": [
|
|
0.5,
|
|
10.0
|
|
],
|
|
"spindle_rpm_range": [
|
|
10,
|
|
120
|
|
],
|
|
"cam_amplitude_range_deg": [
|
|
1.0,
|
|
31.3
|
|
],
|
|
"cam_offset_range_deg": [
|
|
-30.0,
|
|
30.0
|
|
],
|
|
"force_modulation": {
|
|
"supported": true,
|
|
"max_harmonics": 3,
|
|
"max_amplitude_n": 24.0,
|
|
"notes": "m=2 astigmatism and m=3 trefoil are proven channels. m=1 coma is unreliable (score 0.09)."
|
|
},
|
|
"supported_dither_profiles": [
|
|
"none",
|
|
"default"
|
|
],
|
|
"segment_duration_limits": {
|
|
"min_s": 30,
|
|
"max_s": 7200
|
|
},
|
|
"pause_resume_support": true,
|
|
"telemetry_channels": [
|
|
{
|
|
"name": "table_rpm",
|
|
"unit": "RPM",
|
|
"sample_rate_hz": 100
|
|
},
|
|
{
|
|
"name": "spindle_rpm",
|
|
"unit": "RPM",
|
|
"sample_rate_hz": 100
|
|
},
|
|
{
|
|
"name": "force_n",
|
|
"unit": "N",
|
|
"sample_rate_hz": 100
|
|
},
|
|
{
|
|
"name": "arm_angle_deg",
|
|
"unit": "degrees",
|
|
"sample_rate_hz": 100
|
|
},
|
|
{
|
|
"name": "table_angle_deg",
|
|
"unit": "degrees",
|
|
"sample_rate_hz": 100
|
|
},
|
|
{
|
|
"name": "timestamp_ms",
|
|
"unit": "ms",
|
|
"sample_rate_hz": 100
|
|
},
|
|
{
|
|
"name": "spindle_direction_setpoint",
|
|
"unit": "enum(cw|ccw)",
|
|
"sample_rate_hz": 10
|
|
},
|
|
{
|
|
"name": "spindle_direction_actual",
|
|
"unit": "enum(cw|ccw)",
|
|
"sample_rate_hz": 10
|
|
}
|
|
],
|
|
"safety_limits": {
|
|
"max_force_n": 200,
|
|
"max_table_rpm": 10.0,
|
|
"max_spindle_rpm": 120,
|
|
"notes": "Force hard-limited by load cell interlock. RPM limits are VFD/servo configured."
|
|
},
|
|
"known_constraints": [
|
|
"Cam amplitude is not servo-programmable \u2014 must be set mechanically before run.",
|
|
"Force modulation bandwidth limited to ~5 Hz by actuator response.",
|
|
"Table encoder is absolute but may have 1-2 count jitter.",
|
|
"Serial interface to Teensy limits command update rate to ~50 Hz effective."
|
|
],
|
|
"unknowns": [
|
|
"Exact force modulation phase accuracy at m=3 harmonic \u2014 not yet validated on hardware.",
|
|
"Thermal drift effect on force sensor over runs longer than 1 hour.",
|
|
"Arm pivot play magnitude under varying force loads."
|
|
],
|
|
"supported_spindle_directions": [
|
|
"cw",
|
|
"ccw"
|
|
]
|
|
}
|