Context
I wanted to understand the state of the art in camera motion control before designing my own system. I found a 20-year-old Staübli RX90 industrial robot for $1,800 and set out to make it usable.
The robot arrived with a 7-minute boot time, a failing floppy boot disk, and a cryptic terminal-based programming interface. There was no working teach pendant and no clear path to modernizing it.
What I built
This project spans hardware and software end to end:
- A mobile steel base designed in FreeCAD, welded from box tube, and ballasted with a poured concrete counterweight
- A ZuluSCSI SD card emulator replacing the failing floppy drive, derived through six disassembly/reassembly boot cycles and boot-image forensics
- A Raspberry Pi running NixOS embedded directly in the control cabinet, serving as the new robot brain
- A browser-based motion control interface with a real-time 3D digital twin, motion program editor, inverse kinematics, and preview playback
Technical scope
The work spanned several disciplines simultaneously:
- designed and fabricated a robot base including concrete counterweight mold and pour
- reverse-engineered the SCSI boot configuration and merged a working OS image with correct calibration parameters
- built a declarative NixOS configuration that produces a bootable SD card image from three files
- wrote a Python web server with serial communication and a simulated robot terminal for development
- implemented a custom reactive frontend framework (signals + web components, ~800 LOC) without a build system or npm
- integrated three.js, URDF loading, and closed-chain IK for live robot visualization and programming
- decoded ZYZ intrinsic Euler angles used by the robot's coordinate system and converted them for three.js
Constraints and trade-offs
The hardware is a 20-year-old proprietary system with no documentation for the boot process, no working teach pendant, and incomplete disk images. Every software change required a physical reconnection to the serial port. The embedded deployment target made dependency stability critical — the software must keep working indefinitely on a sealed system.
Results
The result is a working motion control system used for cinematic camera work. The robot can be programmed entirely from a phone or laptop browser, with each move previewed in a 3D simulation before being sent to hardware. The NixOS configuration builds a complete deployable image reproducibly from source.
Why it matters for hiring
This project demonstrates the ability to own a full technical stack: from metal fabrication and rigging through legacy system recovery, embedded Linux, and production browser software. It combines mechanical judgment, low-level hardware debugging, and software architecture across a single coherent system.