amerghazal.me REV 2026.11

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

Domain
GROUND ROBOTS · AUTONOMY ARCHITECTURE
Years
2023–NOW
Role
AUTONOMY SOFTWARE CO-LEAD

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

Domain
SIMULATION · SIM-TO-REAL
Years
2022–NOW
Role
SIMULATION STRATEGY AND BRIDGE CONTRACT

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

Domain
REAL-TIME RENDERING · GPU · ROS 2
Years
2025–NOW
Role
CREATOR AND MAINTAINER

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

04 / 07

Drone stack: 1.9 GB → 30 MB

Domain
DRONES · PX4 · MAVLINK
Years
2024–2025
Role
SENIOR ENGINEER, SIX-MONTH CONTRACT

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

Domain
MARINE CRAFT · CONTROL · SIMULATION
Years
2023 · THREE MONTHS
Role
LEAD, TEAM OF THREE

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

Domain
REAL-TIME C++ · PIPELINES
Years
2025–NOW
Role
AUTHOR

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

07 / 07

A small system specified like a large one

Domain
SYSTEMS ENGINEERING · SYSML
Years
2026
Role
AUTHOR, NANODEGREE CAPSTONE

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