PyMAPF
Multi-Agent Path Finding algorithms in Python — planning collision-free paths for fleets of agents, with a simulator to watch them fail interestingly.
2021Abu Dhabi, UAE · open to talk
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.
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.
Odense, Denmark
Founding team member. Owned navigation and perception on an indoor service robot, from the embedded layer up to the autonomy stack.
Remote
Backend work on a web platform for computer-aided production engineering.
Nantes, France
Led four projects spanning multi-agent systems, AI planning, real-time control and ROS2 benchmarking. Two of them turned into papers.
Coimbra, Portugal
Built full autonomy stacks from scratch on ROS and embedded hardware during an intensive training programme, and finished it with top honours.
Bordeaux, France
SystemC/TLM virtual prototype of an STM32 microcontroller, used for SoC emulation and firmware validation without touching real silicon.
Nantes, France
Assembled a TurtleBot3 and used it to test indoor localisation from WiFi signal strength.
Things I built because I wanted to understand them. Mostly robotics and embedded, with the occasional detour.
Multi-Agent Path Finding algorithms in Python — planning collision-free paths for fleets of agents, with a simulator to watch them fail interestingly.
2021A PDDL parser and solver wired to classic search algorithms and domain-independent heuristics, for automated planning experiments.
20212D and 3D path planning, a cascaded attitude/position controller and an extended Kalman filter, built through the Udacity Flying Cars programme.
2020A 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.
2020Converts ROS2 real-time statistics topics into JSON, then into plots. Built to measure jitter on an inverted pendulum, and it became a paper.
2021Full stack for a differential-drive robot — Arduino firmware, ROS driver and a pathfinding layer that solved both mapped and unmapped mazes.
2019A 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.
2020Wheeled robot simulator with sensor bearing, robot following and obstacle avoidance — all of it plotted with matplotlib, no game engine involved.
2020A ROS stack that drives one planar arm from another's motion, leaning on tf and services for the coordinate gymnastics.
2020A*, DFS, Dijkstra, BFS, bidirectional A* and spanning-tree search over grids, rendered with matplotlib or straight in the terminal.
2020Scripts that turn Xenomai's latency test and cyclictest output into readable plots, so real-time regressions stop hiding in log files.
2020Generates Gantt diagrams from TrampolineRTOS execution traces — or from hand-written task sets — to make scheduling behaviour visible.
2020An 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.
2019Ultrasonic range sensor driver for the STM32F3 on an Arduino-like abstraction layer, implemented twice — polling and interrupt-driven — to compare them.
2019SPI driver for the MCP23S17 port expander, wrapped in Arduino-style abstractions so using it doesn't require the datasheet open on a second screen.
2019A VHDL calculator — addition, subtraction and product — described and synthesised onto a CPLD.
2018A fully connected network for MNIST written in pure NumPy — forward pass, backprop and all — because frameworks hide the interesting part.
2020Click an object in the camera feed and the tracker follows it. Built with OpenCV and ViSP while learning visual servoing.
2020A neural network with no libraries at all, trained to reproduce the truth tables of logic gates. The smallest useful thing you can build twice.
2019Draws 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.
2020An agent-based epidemic simulation on a configurable grid with tunable transmission rates, recording and plotting statistics as it runs.
2020A 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.
2019A 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.
2019Nothing here yet.
Projects I contribute to rather than own. Issues, fixes, algorithms and the occasional bug report that turned into a long conversation.
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.
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.
É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.
Universidade de Coimbra — Coimbra, Portugal
Autonomy stacks from scratch on ROS and embedded hardware. Finished with top honours and two maze-solving competition wins.
Bordeaux Ynov Campus — Bordeaux, France
Embedded systems and virtual prototyping — SystemC/TLM models of STM32 peripherals, validated against real firmware.
Université de Nantes — Nantes, France
Electronics, signal processing and communication systems — the groundwork for everything above.
Robotics, real-time systems, or something that should not work but does — happy to talk.