PRISM (Programmable Rotary Impedance Suite for Manipulation) is a flexible, hardware-based haptic control system designed to help practitioners train policies on real-world rotational tasks. Unlike purely virtual simulations, PRISM can replicate the tactile force feedback of valves, handles, knobs, and fasteners. It delivers realistic haptic feedback to the policy through a modular, motor-driven interface.
|
BOM, assembly, firmware |
CLI, REST API, Web GUI, Streaming |
Printable handles and haptic profiles |
|
STM32H7 open-source firmware |
PyPRISM API and examples |
Get building in 5 steps |
| Feature | Description |
|---|---|
| 1 kHz Task Telemetry | Real-time TCP streaming of θ, τ, and velocity for policy training |
| Self-Resetting Tasks | Automated return-to-start for continuous training loops |
| Programmable Haptics | Tune damping, friction, stiffness, and torque per-episode |
| Multi-Interface | CLI, Web GUI, REST API, and data streaming — all on-device |
| Sim Integration | Experimental Isaac Sim & MuJoCo support (in development) |
| Modular Handles | Swap 3D-printed attachments to emulate any rotational task |
PRISM streams (1 kHz) real-time TCP telemetry about the task over ethernet. This enables robotic policies to autonomously monitor task progress in real time. Practitioner-written scripts can also determine task success or failure by reading theta_on, theta_off, torque, or velocity thresholds.
PRISM's fully programmable API allows the rotational task to automatically reset to its starting state or other programmed positions. Practitioners can use this feature to fast track expert demonstrations or make a continuous policy training loop with PRISM API control scripts.
Practitioners define a software "profile" by configuring physically meaningful parameters such as viscous damping, Coulomb friction coefficient, smoothing parameter ϵ, virtual wall stiffness, torque limits, and others. These parameters define how each rotational task will "feel" and lets PRISM emulate the spring-back of a lever door handle to the hard to turn quarter-turn valve found in naval ships.
Practitioners can also instantly randomize these parameters for the next episode to train ML polices to adapt to task changes.
PRISM has a CLI, Web-GUI, REST API, Data Streaming interfaces. Each interface lets the practitioner configure or use certain features.
Every user-interface is locally hosted by the main micro-controller.
Experimental support for reinforcement learning environments (Isaac Sim, MuJoCo) and sim2real transfer.
| Spec | Value |
|---|---|
| Controller | STM32H7 microcontroller |
| Motor Driver | ODrive S1 |
| Telemetry Rate | 1 kHz over TCP/Ethernet |
| Interfaces | CLI, Web GUI, REST API, Data Stream |
| Build Cost | ~$400 – $500 |
| Print Volume | ≥ 180 × 180 × 180 mm |
| Software | Python 3.10+, GNU ARM Toolchain |
| License | MIT |
graph LR
A[Robot Arm] -->|Grasps| B[PRISM Handle]
B -->|Shaft Encoder + Motor| C[STM32H7]
C -->|1 kHz TCP| D[Host PC]
D -->|PyPRISM API| E[Policy Training]
D -->|REST / CLI / Web| C
C -->|Haptic Feedback| B
Total build time: ~2-5 hours | Cost: ~$400-500 | Difficulty: Intermediate
| Step | Action | Link |
|---|---|---|
| 1 | Order the Bill of Materials | BOM |
| 2 | Print structural mounts and handles | Handles |
| 3 | Assemble the mechanical and electrical system | Assembly Guide |
| 4 | Configure the ODrive S1 motor controller | ODrive Config |
| 5 | Flash firmware onto the STM32 | Firmware Guide |
| 6 | Verify haptic response via the onboard CLI | CLI Guide |
PRISM's modular handle system allows for custom haptic emulations. Each attachment mounts to the same motor shaft interface, letting practitioners swap between task types in seconds.
See the Rotation Library for 3D-printable designs and parameter configurations.
| Handle | Range of Motion |
|---|---|
| Hydrant Handwheel | 4-turn |
| Quarter-turn Valve | 90 degrees |
| Door Handle | +/- 45 degrees |
| Wrench Tightening | Continuous |
| More to come | -- |
PRISM is open source and contributions are welcome.
If you use PRISM in your research, please cite:
@misc{prism2026,
title={PRISM: Programmable Rotary Impedance Suite for Manipulation},
author={},
year={2026},
url={https://github.com/Emroess/PRISM}
}MIT License


