Zachary R. Madin
I’m a PhD researcher and robotics engineer based in Bristol, UK, working where robotics, distributed fusion, and real world systems collide to be a complicated challenge. My background involves the full gamut from reliable consumer hardware design, up to abstract algorithm development and implementation into real systems with real data on robotic platforms. I’m keen to work on new projects and problems that force me to grapple with complex engineering and mathematical problems.
This site documents my published research, hardware repair log, and broader engineering work. To get in touch, find me on LinkedIn as that’s the best way to reach me.
Research
My PhD (Engineering Mathematics, University of Bristol) focuses on collective information fusion in multi-robot systems, using Bayesian inference and graph-theoretic models to examine how groups of autonomous agents reach a consensus of environmental signals while rejecting outliers and noise. In reality this means I’m designing simulations, optimising code for real-time applications, debugging and getting frustrated with ROS.
Key themes in my research:
- Bayesian methods in multi-robot systems: applying probabilistic approaches to collective information fusion
- Multi-robot coverage & anomaly detection: studying how communication topology shapes group-level perception accuracy under noisy sensing conditions
Software & Research
For the simulation work in my PhD I implement Gaussian Belief Propagation over factor graph models in PyTorch, wrapped into a Python simulator that extends into ROS for the real rovers. This involved building custom message-passing architectures that capture the communication structure of multi-robot teams. This includes running simulations on real world environments and propagating signal patterns, and evaluating models and loss functions over graph topologies for the patrolling environments. I’m looking at the potential to use occasional landmark observations as geometric anchors to correct pose estimates when the uncertainty growth would otherwise balloon to make measurement predictions unworkable, resulting in poor singal estimation because the agent is sampling at the wrong location. I contrast this work to standard approaches for solving factor graphs using the GTSAM library to see how a distributed GBP approach fares against a centralised approach.
On the robotics side I work extensively with ROS1 & 2. Writing nodes, services, and action servers; managing multi-robot communication topologies; and integrating sensors and actuators into the Leo Rovers that we use in the lab. My software approach and language use is: Python for simulation, data analysis, and PyTorch (obviously). C/C++ for performance critical and real-time systems. Both of which can be wrapped up and crunched on remote Linux machines to handle the large datasets, often running Docker development environments as I am beyond the stage where I want to fight with Boost conflicts on a bare metal machine!
I use Github extensively across all of my projects to help keep me sane, and I love automating small things with the github actions (including the pipelines that build and deploy this site via GitHub Pages!).
Hardware & Electronics
My passion for robotics came from a need to take things apart, so it was only natural I ended up doing an EEE degree! While professionally I don’t interact with as much hardware currently, in my spare time I volunteer and help to run Sparks Repair Café in Bristol, where I diagnose and repair consumer electronics brought in by the public. This helps scratch the itch of getting my hands grubby with flux and solder when I’m tired of reading cmake errors. To see some of the projects I’ve worked on, check out my projects, and to see the rest of the repairs I’ve done at the cafe, have a look at my repair log.





