Skip to content
Saim Hashmi

BOOPBOT

2026-05

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.

BOOPBOT robot
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 QLocalSocket bridge, 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.

That's the whole story.

Liked it?

Say hi, I'm open to new-grad roles from summer 2027.

Something off?

Tell me and it gets fixed tonight.

← All work