I acquired a 20-year-old Staübli RX90 industrial robot and retrofitted it with a custom-built control system, transforming it into a precise and ergonomic tool for cinematic motion control.
The robot arrived as a "black box" — a 7-minute boot time, a failing floppy boot disk, and a cryptic terminal-based programming interface. This project documents the full journey: rigging and transporting 330kg of industrial hardware, fabricating a mobile steel base with a concrete counterweight, reverse-engineering the legacy control system, and building a modern browser-based control interface from scratch.
What Was Built
A mobile base: Designed in FreeCAD, welded from steel box tube, and ballasted with a poured concrete counterweight. The design evolved in the shop when it didn't fit through a doorway — the triangular frame became a T-shape, which turned out to be better in every way.
Stable, long-term hardware: The original floppy boot disk was replaced with a ZuluSCSI SD card emulator. This required reverse-engineering the robot's SCSI configuration and iterating through six disassembly/reassembly cycles to derive a working boot image.
A new brain: A Raspberry Pi runs NixOS — a declarative, reproducible OS — and hosts a Python web server that speaks RS-232 to the original Staubli controller.
A browser-based control interface: Built with vanilla JavaScript, a custom reactive framework, and three.js. It provides a real-time 3D "digital twin" of the robot, inverse kinematics for positioning, a motion program editor, and a preview playback system that simulates the robot's trapezoidal velocity profile before any move is sent to hardware.
Skills Demonstrated
- Mechanical design (FreeCAD), welding, concrete work
- Reverse engineering a legacy embedded system and SCSI protocol
- Embedded Linux (NixOS, Raspberry Pi, declarative system images)
- Python (web server, serial communication, serial simulation)
- Vanilla JavaScript (custom reactive framework, 3D visualization, IK)
- Full system integration from serial port to browser UI






