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.
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.
Acquired and transported a 330KG industrial robot for $1,800 using improvised strapping and winch rigging
Revived decades-old industrial robot hardware by emulating legacy SCSI storage with a modern SD card
Built an 800-line frontend framework using signals and Web Components to implement functional reactive programming for state-driven UI updates
Built web-based robot control interface with visual playback preview using JavaScript motion approximation
Replaced fragile WSL serial passthrough with an internally mounted Raspberry Pi, solving persistent driver and USB connectivity issues for embedded robot control
Built a terminal-based control workflow using Python over RS232 to program a Staubli robot after the teach pendant failed
Replaced fragile floppy-disk boot system with ZuluSCSI SD card emulator to eliminate single point of failure on industrial robot controller