BOOPBOT
A photo-booth robot on QNX Neutrino and ROS2: Qt/QML camera UI, SLAM ported to QNX, encoder-driven motors. Funded by a $1,000 BlackBerry QNX grant.
- ROLE
- UI, camera integration, SLAM port and motor control
- RESULT
- $1,000 BlackBerry QNX development grant to build it for cuHacking 7
- STATUS
- In progress (May 2026 – present)
- STACK
- QNX SDP 8.0ROS2Qt Quick/QMLC++Raspberry Pi 5
Quest briefing
Problem
A photo-booth robot for live events has to run a camera UI, autonomy and motor control on one small board, under hard real-time deadlines. QNX Neutrino enforces those deadlines. Most of the robotics stack (ROS2, Qt, SLAM) was not built for it.
What I built
- A terminal-themed Qt Quick/QML UI with a live camera feed and API controls for running the booth at events.
- Raspberry Pi camera integration through the QNX Sensor Framework. Qt6
and ROS2 conflicted in CMake, so I split them into separate processes
joined by a concurrent
QLocalSocketbridge, with a crash-recovery watchdog. - A SLAM stack I ported to QNX Neutrino. I resolved thread-scheduling conflicts between the SLAM pipeline and QNX's hard deadlines.
- Motor control with encoder feedback and logging, validated with a Logitech controller before wiring in the autonomy stack.
Result
I got a $1,000 corporate development grant from BlackBerry QNX to build the robot for cuHacking 7. Development is ongoing.
Loot (what was learned)
- Porting to a real-time OS is mostly about scheduling: who runs when, and what happens when a thread misses its slot.
- When two build systems will not coexist, a process boundary and a socket can be cleaner than merging them into one binary.
- Test the drivetrain by hand first. A gamepad finds wiring bugs long before the autonomy stack would.