SEVEN STATIONS · 2016 → NOW
Work
Patrol robots, simulators, a renderer, drones, boats and a formal capstone. Employer work is abstracted, and its deployments appear only in the words of the company's own announcements. My own work is told in mine.
01 / 07
Failure gets an address
Ground robots for public places, two platforms, one stack. A robot among people cannot have an undefined state, so we built an architecture that fails on purpose: eighteen processes under one orchestrator, alternative stacks chosen by configuration rather than a fork, a safety state machine that escalates in four levels, and control that passes to a remote operator on a clock. Seven camera streams reach operators 30 to 100 ms behind the robot, through a dashboard and streaming server we wrote from scratch.
As announced by Micropolis, the stack drives DPR-02, the Dubai Police patrol at Global Village, and ran a pilot the company completed with Saudi Arabia’s Ministry of Interior.
Readout
- 18 processes
- 2 platforms
- 4 escalation levels
- 7 streams at 30–100 ms
02 / 07
The simulator was measuring its own pipe
Two simulators fed one stack through a bridge that delivered six to eight cameras and a lidar at 5 FPS, so every benchmark was partly a benchmark of the plumbing. We treated the bridge as a contract with clauses: sensor rig, timing, transport, coordinate frames. Profiling traced the stall to a CPU-bound UDP transport; moving the DDS layer to CycloneDDS over shared memory took it to 20 FPS.
A colleague built the CARLA environment. The strategy and the contract were mine, and I filed a bug upstream where the simulator itself was wrong.
Readout
- 5 → 20 FPS
- 6–8 cameras plus lidar
- Isaac Sim and CARLA
03 / 07
Overlume: 102 ms → 2.8 ms
A point cloud tells the truth slowly. I wanted the robot drawn from behind, inside its surroundings, rendered without a display and light enough to sit beside an autonomy stack. I built it on my own time: a C++ interface made only of plain data structures, headless rendering through Google Filament, a ROS 2 node on top.
Six ADRs fix what the API and ABI may do. Golden-image CI fails the build when a frame drifts, and coding agents work inside that harness, with the gates deciding what merges. Correcting how it picked a GPU vendor turned a 102 ms frame into 2.8 ms. Micropolis uses it on a deployed robot.
Readout
- ~10 ms median frame at 30 Hz on an RTX 3090
- 8 signed package channels
- 5 operating systems
- Apache-2.0
Repositorygithub.com/amerghazal7/overlume
04 / 07
Drone stack: 1.9 GB → 30 MB
A drone stack in three parts that had to ship together: the code that flies, the code that plans missions and the tools developers build with. Every release carried about 1.9 GB of binaries.
On a six-month contract with DroneLeaf in Abu Dhabi, I rewrote the build system and set up .deb packaging pipelines, turned a QGroundControl fork into the operators’ mission control in Qt and C++, and wrote the MAVLink bridge to the PX4 autopilot. Shipped binaries fell to about 30 MB.
Readout
- ~1.9 GB → ~30 MB
- QGroundControl fork
- PX4 over MAVLink
05 / 07
Docking before the water
A marine craft needed a ground station and two behaviours that are expensive to learn at the pier: docking without a hand on the controls, and holding balance while the surface moves.
I led three engineers building the ground station in C# and WinForms, speaking MAVLink to the craft. Then I built the sea: a Webots world driven by a ROS controller I wrote, where the docking and balancing control was designed and run before the boat touched water.
Readout
- team of 3
- C# ground station over MAVLink
- Webots and ROS
06 / 07
AxonVex
In a robot, a result that arrives late is a wrong result, and many bugs are the right maths arriving in the wrong order. AxonVex is a C++ framework for real time where every pipeline stage declares the types it takes and gives, so a mismatch between producer and consumer is a type error rather than a surprise on the robot. A deterministic scheduler runs the stages; protocol adapters stay at the edges.
It is alpha. The interfaces still move, and I would rather say so.
Readout
- alpha
- Apache-2.0
Repositorygithub.com/amerghazal7/AxonVex
07 / 07
A small system specified like a large one
My capstone for Udacity’s Software Architect Nanodegree was a Smart Home Security System, written as if a supplier would be held to it: a requirements specification to ISO/IEC/IEEE 29148, decision matrices behind each choice, eight SysML diagrams, and verification suites tied to the requirements.
A reviewer can walk from requirement to design to test without asking me a question. The system is small on purpose; the method is what is on display.
Readout
- ISO/IEC/IEEE 29148 specification
- 8 SysML diagrams
- verification and validation suites
Repositorygithub.com/amerghazal7/udacity-software-architect-nd

