Universal-Motor-Interface + Universal-Trajectory-Interface companion tool

Servo Calibrator

Purely for characterization: one button finds a servo's real pulse range and builds a 20-point calibration lookup table, fully automated, on-device — no installation wizard, no direction/logical-zero setup (always physical [0, maxAngle], just like the table itself). Building an actual driver constructor from the result is left to your own UMI application code. Once calibrated, drive/visualize trajectories against it live, and export/import the table to skip recalibrating a servo you've already measured.

Connection
Not connected
Calibration
Not calibrated
Stall-scans outward from center in both directions to find the real safe pulse range (no hand-measuring), then sweeps it twice to build a direction-averaged 20-point table. Takes 1–3 minutes; progress streams into the log above.
Command
Idle
Calibration model — switches live, mid-motion, without touching the setpoint
connect and calibrate first
Toggles low↔high every period/2s. Every edge is a real TrapezoidalProfile move.
Center±amplitude must fit in range. No v/a limit -- amplitude×2π×freq is the effective peak speed. Eases in with one normal move to center first.
Setpoint
Actual
Error
Live trace (last 8s, auto-scaled)
Position (deg) setpoint actual (AS5600)
Velocity (deg/s) setpoint actual (differentiated)
Position error, actual − setpoint (deg) — colored by which model was live linear (2-pt) table (20-pt)