What I did
- Cut projection calibration from 10 minutes to 2 while holding sub-3-pixel alignment, by automating homography estimation and feature matching in OpenCV instead of aligning the field by hand.
- Sustained 4K output at 30 fps on the embedded Linux target by building a GPU-accelerated GStreamer/Wayland pipeline with custom GLSL shaders for perspective correction.
- Shipped projector and IR-trigger control firmware in C/C++ on Arduino and ESP32 by reusing the production control libraries, so bench hardware and field devices exercise one code path rather than two.
- Made hardware-only faults reproducible in CI by provisioning a 20-board LAVA hardware-in-the-loop rig with Ansible and Docker Compose and delivering every release to it over Mender OTA.
- Made a field fault readable from a dashboard instead of a site visit by streaming device telemetry over MQTT into AWS IoT Core and instrumenting the Python runtime with OpenTelemetry, Grafana and Loki.
- Kept distributed AI inference (text-to-image, video, segmentation) running across a GPU cluster through worker loss by moving jobs onto FastStream and NATS JetStream durable queues.
What it produced
Provisioning and runtime for the illumibot LAVA test rig: one repository owns the Ansible roles, inventory, and secrets that build it, the docker-compose LAVA stack that runs it, and the Mender OTA pipeline that upgrades 20 physical boards on every release.

Design, validate, and print the physical parts the projection product and its test bench depend on, from a room-scale fog wall down to the enclosures that make the electronics shippable.

Arduino · Yocto · GStreamer · MQTT · Fusion 360