Abu Dhabi, UAE · open to talk

I build the software that
makes robots decide.

Robotics software engineer, currently at the Technology Innovation Institute working on decentralised autonomy for drone swarms. Before that I was on the founding team of a mobile robotics startup in Denmark, shipping a robot that ran 24/7 in a live retail store.

I like the parts of robotics where the theory has to survive contact with hardware — real-time control, sensor fusion, multi-agent planning, and the unglamorous integration work that turns a paper into something that actually flies. I came to it through embedded systems, so I am just as happy writing an STM32 peripheral driver as a ROS2 planner. Most of what I learn ends up on GitHub.

  • ROS · ROS2Navigation, control, tooling
  • C++ · PythonPlus Go, VHDL, a little Julia
  • Real-TimeXenomai, RTOS, STM32, micro-ROS
  • Multi-AgentMAPF, PDDL planning, flocking

See the work Get in touch

02Experience

  1. Nov 2022 — Present

    Robotics Software Engineer Technology Innovation Institute

    Abu Dhabi, United Arab Emirates

    Decentralised autonomy frameworks for drone swarms on ROS2 — core algorithms plus the system integration that gets them off the bench and into outdoor field trials.

    • Building the flocking and coordination stack for medium-sized UAVs
    • ROS2 tooling and dashboards for monitoring swarm autonomy in flight
    • ROS2
    • C++
    • Python
    • PX4
    • Betaflight
    • Swarm Robotics
    • ReactJS
  2. Mar 2021 — Nov 2022

    Founding Robotics Engineer Coalescent Mobile Robotics

    Odense, Denmark

    Founding team member. Owned navigation and perception on an indoor service robot, from the embedded layer up to the autonomy stack.

    • Delivered the first robot system running 24/7 in-store at Bilka Odense
    • Ran the demonstrations that led to the $1.7M pre-seed round in 2021
    • Mentored three interns and junior engineers
    • ROS2
    • C++
    • Python
    • STM32
    • micro-ROS
    • Navigation
    • Sensor Fusion
    • EKF
  3. Jun 2020 — Feb 2021

    Software Engineer Hiventive

    Remote

    Backend work on a web platform for computer-aided production engineering.

    • Core backend services in Golang, backed by PostgreSQL and Docker
    • Automated programming-test manager used to evaluate candidates
    • Golang
    • PostgreSQL
    • Docker
    • CI/CD
    • GitLab
    • TypeScript
  4. Mar 2020 — Feb 2021

    Robotics Researcher École Centrale de Nantes

    Nantes, France

    Led four projects spanning multi-agent systems, AI planning, real-time control and ROS2 benchmarking. Two of them turned into papers.

    • MAPF survey and simulator — categorised and implemented the main algorithm families
    • PDDL parser and solver with A*, Dijkstra and BFS search
    • Real-time ROS controller built on Xenomai and XDDP
    • ROS2 benchmarking tools for latency and jitter visualisation
    • Python
    • C++
    • ROS2
    • Xenomai
    • PDDL
    • MAPF
    • Real-Time
    • Julia
  5. Jul 2019 — Sep 2019

    Robotics Assistant Ingeniarius

    Coimbra, Portugal

    Built full autonomy stacks from scratch on ROS and embedded hardware during an intensive training programme, and finished it with top honours.

    • Won both the mapped and unmapped maze-solving competitions
    • Wrote the embedded drivers and the navigation stack that ran on top of them
    • ROS
    • C++
    • Arduino
    • Raspberry Pi
    • IR Sensors
    • Motor Drivers
  6. Sep 2018 — Jul 2019

    Embedded Software Engineer Hiventive

    Bordeaux, France

    SystemC/TLM virtual prototype of an STM32 microcontroller, used for SoC emulation and firmware validation without touching real silicon.

    • Emulated TIM, I2C, CAN, GPIO and USART peripherals, integrated with QEMU
    • Built a virtual temperature/humidity sensor and validated firmware against hardware
    • SystemC
    • TLM
    • C++
    • STM32
    • QEMU
    • I2C
    • CAN
  7. May 2018 — Jul 2018

    Robotics Intern Polytech Nantes — LS2N

    Nantes, France

    Assembled a TurtleBot3 and used it to test indoor localisation from WiFi signal strength.

    • RSSI-based mesh triangulation algorithm for indoor positioning
    • Benchmarked it against odometry and sensor fusion baselines
    • ROS
    • TurtleBot3
    • Python
    • WiFi RSSI

03Projects

Things I built because I wanted to understand them. Mostly robotics and embedded, with the occasional detour.

PyMAPF

Multi-Agent Path Finding algorithms in Python — planning collision-free paths for fleets of agents, with a simulator to watch them fail interestingly.

  • Python
  • MAPF
  • Path Planning
2021

PythonPDDL

A PDDL parser and solver wired to classic search algorithms and domain-independent heuristics, for automated planning experiments.

  • Python
  • PDDL
  • AI Planning
2021

Autonomous UAV

2D and 3D path planning, a cascaded attitude/position controller and an extended Kalman filter, built through the Udacity Flying Cars programme.

  • Python
  • C++
  • Control
  • EKF
2020

ROS ↔ Xenomai XDDP Bridge

A ROS stack wrapping Xenomai's XDDP protocol in usable C++ classes, with echo and navigation demos showing real-time and non-real-time domains talking.

  • ROS
  • Xenomai
  • C++
  • Real-Time
2020

ROS2 Real-Time Statistics

Converts ROS2 real-time statistics topics into JSON, then into plots. Built to measure jitter on an inverted pendulum, and it became a paper.

  • ROS2
  • Python
  • Real-Time
  • Data Analysis
2021

Amazebot

Full stack for a differential-drive robot — Arduino firmware, ROS driver and a pathfinding layer that solved both mapped and unmapped mazes.

  • ROS
  • C++
  • Arduino
  • Pathfinding
2019

Bird Swarm

A scalable flocking simulation in ROS: a leader publishes its pose, followers subscribe and track it under a P controller. The seed of what I do now.

  • ROS
  • C++
  • Swarms
2020

Differential Robot Simulator

Wheeled robot simulator with sensor bearing, robot following and obstacle avoidance — all of it plotted with matplotlib, no game engine involved.

  • C++
  • Motion Control
  • Sensor Fusion
2020

Dual Planar Arm

A ROS stack that drives one planar arm from another's motion, leaning on tf and services for the coordinate gymnastics.

  • ROS
  • Python
  • Manipulation
2020

Pathfinding Algorithms

A*, DFS, Dijkstra, BFS, bidirectional A* and spanning-tree search over grids, rendered with matplotlib or straight in the terminal.

  • Python
  • Graph Search
2020

Xenomai Latency Plotter

Scripts that turn Xenomai's latency test and cyclictest output into readable plots, so real-time regressions stop hiding in log files.

  • Python
  • Xenomai
  • Statistics
2020

GANTT Generator for RTOS Traces

Generates Gantt diagrams from TrampolineRTOS execution traces — or from hand-written task sets — to make scheduling behaviour visible.

  • Python
  • RTOS
  • Trampoline
2020

Homemade Oscilloscope

An STM32 samples a signal generator and streams it over UART to a Qt desktop app that draws the trace. C, C++ and a lot of patience with baud rates.

  • C
  • C++
  • Qt
  • STM32
2019

HC-SR04 Ultrasonic Driver

Ultrasonic range sensor driver for the STM32F3 on an Arduino-like abstraction layer, implemented twice — polling and interrupt-driven — to compare them.

  • Embedded C
  • C++
  • STM32
2019

MCP23S17 I/O Expander Driver

SPI driver for the MCP23S17 port expander, wrapped in Arduino-style abstractions so using it doesn't require the datasheet open on a second screen.

  • Embedded C
  • SPI
  • STM32
2019

Calculator on CPLD

A VHDL calculator — addition, subtraction and product — described and synthesised onto a CPLD.

  • VHDL
  • FPGA
  • Digital Design
2018

MNIST Net from Scratch

A fully connected network for MNIST written in pure NumPy — forward pass, backprop and all — because frameworks hide the interesting part.

  • Python
  • NumPy
  • Deep Learning
2020

Object Tracking with OpenCV

Click an object in the camera feed and the tracker follows it. Built with OpenCV and ViSP while learning visual servoing.

  • C++
  • OpenCV
  • ViSP
2020

Logic Gates Neural Network

A neural network with no libraries at all, trained to reproduce the truth tables of logic gates. The smallest useful thing you can build twice.

  • Python
  • NumPy
  • OOP
2019

Secret Santa

Draws the pool from a list of names and emails, mails everyone their target, then deletes and flushes the sent folder so the organiser can play too.

  • Python
  • IMAP
2020

Epidemic Simulation

An agent-based epidemic simulation on a configurable grid with tunable transmission rates, recording and plotting statistics as it runs.

  • Python
  • Dataviz
  • Simulation
2020

Battle Text — CLI RPG

A turn-based role-playing game in the terminal, written mostly as an excuse to get object-oriented design wrong a few times and then right.

  • Python
  • CLI
  • Games
2019

Airplane Tickets Booker

A flight booking system grown out of a linked-list exercise, with a Tkinter GUI that is honestly quite ugly and an expandable set of routes.

  • Python
  • Tkinter
  • Data Structures
2019

04Open Source

Projects I contribute to rather than own. Issues, fixes, algorithms and the occasional bug report that turned into a long conversation.

  • PythonRobotics Added BFS, DFS, greedy best-first, bidirectional A*, bidirectional BFS and bidirectional best-first search. Ranked #3 in additions and #3 in commits.
  • Navigation2 The ROS2 navigation stack — path planning, localisation and recovery behaviours for mobile robots.
  • PlotJuggler ROS Plugins ROS plugins for the time-series visualiser most roboticists end up living inside.
  • TheAlgorithms / Python Contributed optimised graph search — bidirectional A*, bidirectional BFS, greedy best-first.
  • Renode SoC simulation framework. Reported and fixed redundant checks in the I2C register model.
  • TrampolineRTOS Real-time OS built by academia at Centrale Nantes. Raised issues, reported bugs, contributed examples and tooling.
  • stm32-hal-libraries Fixed a checksum bug and added tests for a temperature/humidity sensor driver.
  • ros-tooling / setup-ros GitHub Action maintained by the AWS RoboMaker team. Flagged broken packages in the Melodic distro install.
  • Hexapod Robot Simulator Worked through open issues and reported bugs in the kinematics.

05Writing

  • Mar 2021

    Real-time Jitter Measurements under ROS2: the Inverted Pendulum case

    ROS2 promises built-in real-time capability for safety-critical systems, but the guarantee depends on what sits underneath it. This paper measures how much the operating system (general-purpose vs real-time) and the platform (desktop vs embedded) actually move the jitter numbers, using an inverted pendulum as the thing that falls over when they're wrong.

  • Jan 2021

    Survey of the Multi-Agent Pathfinding Solutions

    Multi-Agent Path Finding is the problem of routing many agents at once without letting them hit each other or the world. This survey walks through the solution families — coupled, decoupled, and the hybrids in between — and compares them on the terms that matter for warehouses and drone delivery.

06Education & Odds and Ends

  • 2019 — 2021

    MSc, Control and Robotics

    École Centrale de Nantes — Nantes, France

    Multi-agent systems, real-time control, AI planning. Four project deliverables that became the MAPF survey, the PDDL solver, the Xenomai controller and the ROS2 benchmarking tools.

  • 2019

    Summer School, Robotics

    Universidade de Coimbra — Coimbra, Portugal

    Autonomy stacks from scratch on ROS and embedded hardware. Finished with top honours and two maze-solving competition wins.

  • 2018 — 2019

    MSc, Computer Engineering

    Bordeaux Ynov Campus — Bordeaux, France

    Embedded systems and virtual prototyping — SystemC/TLM models of STM32 peripherals, validated against real firmware.

  • 2015 — 2018

    BSc, Electrical, Electronics and Communications Engineering

    Université de Nantes — Nantes, France

    Electronics, signal processing and communication systems — the groundwork for everything above.

Honours

  • Robotcraft 2019 — winner
  • Sci-fi short story contest — winner

Certifications

  • Udacity — Autonomous Flight Nanodegree
  • ROS MeetUp
  • TOEIC

Off the clock

  • Basketball, badly but often
  • Writing short fiction
  • Reading other people's commit history

07Contact

Robotics, real-time systems, or something that should not work but does — happy to talk.