The Universal Interface Stack is a family of composable C++ interfaces for robot control, built so that swapping hardware — an ODrive over CAN today, an RC servo tomorrow, a simulated motor for testing — never means rewriting the application logic on top of it.

It’s split into layers that compose:

  • Universal-Motor-Interface — hardware-agnostic motor control, with driver implementations for ODrive CAN, RC servos, and simulated motors.
  • Universal-Encoder-Interface — rotary position sensing (AS5600 magnetic encoder, potentiometer, simulated), composable with the motor and trajectory layers.
  • Universal-Trajectory-Interface — trajectory generation sitting on top of motor + encoder.
  • Universal-Tool-Interface — platform-agnostic control for end-effectors (grippers and beyond), composing a motor driver to actuate movement.
  • Universal-Motion-Interface / Universal-Robot-Interface — higher-level motion and whole-robot abstractions that tie the lower layers together.

The goal is portability across Arduino-compatible boards, embedded systems, and simulation — write a controller once, run it on real hardware or in simulation without modification.

Repos are currently private while the stack is under active development.