Inspiration

On large construction and industrial sites, crews are split by specialty — demolition, electrical, structural — and some areas are off-limits to the wrong crew for safety reasons. Someone drifting into a zone they aren't cleared for causes accidents, slows work, and creates liability. We wanted a cheap, privacy-respecting way to catch those crossings the moment they happen — running right on-site, no cloud.

What it does

ZoneGuard watches a worksite through a single camera. Each crew is identified by the color of their hard hat (colored markers in our demo). The system defines safety zones in the camera's view and continuously checks which colored worker is in which zone. The instant a color enters a zone it isn't cleared for, ZoneGuard raises an on-screen alert and notifies a human supervisor to review. It flags — a person decides.

How we built it

  • Hardware: Raspberry Pi 5 + IMX708 camera module.
  • OS: QNX 8.0 — the real-time OS used in cars, medical devices, and industrial safety systems. Not Linux.
  • Vision: OpenCV (installed on-device via apk), using classical HSV color segmentation to isolate each crew color, find blob centroids, and test which zone each sits in.
  • We ran Claude Code natively on the QNX device to build, compile (clang++/CMake), and debug directly on the Pi.
  • We first validated the full vision stack with a MobileNet-SSD deep-learning detector (100% on our test image), then deliberately pivoted to lightweight HSV color detection — faster, more robust, and right-sized for the zone problem.

Challenges we ran into

  • QNX is POSIX-ish but not Linux: no apt, missing tools like ps, and a different package manager (apk) that sometimes hung or locked.
  • Library/version mismatches between the base 8.0 image and newer camera packages.
  • Tuning IMX708 exposure/gain — the raw feed came in too dark.
  • Getting a modern CV toolchain (OpenCV + clang) running on an embedded RTOS at all.

Accomplishments that we're proud of

  • A real OpenCV computer-vision pipeline compiling and running on QNX on a Raspberry Pi 5 — something almost nobody does.
  • Running Claude Code directly on the QNX target to develop on-device.
  • A deliberate engineering pivot (neural net → classical HSV) made for the right reasons, not defaults.
  • Privacy-first by design: we track colors, not faces.

What we learned

  • How to bring up a CV stack on a non-Linux real-time OS, and how different embedded package management really is.
  • When classical computer vision beats a neural network for a well-scoped problem.
  • The value of validating your toolchain with a known-good model before building the real thing.

What's next for ZoneGuard

  • Live movement tracking and per-worker IDs, not just color.
  • Detecting other PPE — vests, harnesses, eye protection — for full site-safety monitoring.
  • Compliance/OSHA logging and analytics.
  • Multi-camera coverage for whole-site awareness.

Built With

  • c++
  • caffe
  • clang
  • claude-code
  • cmake
  • computer-vision
  • hsv
  • imx708
  • mobilenet-ssd
  • opencv
  • qnx
  • raspberry-pi-5
Share this project:

Updates