Zachary R. Madin

Open to opportunities: I am currently seeking roles in robotics, autonomy and related research & engineering positions.

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.


Click here to see a few representative examples from the log
Arcam A38 amplifier board Arcam A38 Hi-Fi Amplifier (saved: £1,420)
A cascade failure in the power supply: a shorted LDO somehow wiped out the mains transformer winding insulation and destroyed the constant-current source transistors. With no schematic available for this model I cross-referenced a previous-generation circuit, traced the fault back through the board, replaced the transformer, LDO, diodes, and blown passives. Full system back on its feet for £30 in parts.
E-bike in-wheel motor opened up E-Bike In-Wheel Motor (saved: £775)
Intermittent stall on what appeared to be a healthy brushless motor. Diagnosis pointed to mechanical rather than electrical failure: opened the in-wheel hub to find seized bearings and completely shredded nylon planetary gears. Pressed in new bearings, sourced a matching planetary gear set, regreased the gearbox, and reassembled. The owner is still riding it!
Xbox PCB with HDMI chip Xbox HDMI Timing IC (saved: £139)
Console booting normally but producing no video signal. Identified a well-documented failure of the HDMI retimer IC on this generation of hardware, read the chip markings, sourced a £11 replacement, and reflowed it onto a large multilayer PCB using a pre-heater and hot-air station — no infrared rework bench required.
Akai direct-drive turntable Akai Direct-Drive Turntable (rescued from a skip)
Recovered from a recycling bin — unable to lock the platter speed. Dirty trimming potentiometers were preventing synchronisation of the strobe marks. A shot of switch cleaner brought it back to full working order.
Roberts Radio LDO bodge repair Roberts Radio — Buck Converter Bodge (saved: £119.85)
A sentimental radio with a dead supply rail. No schematic available, so I reverse-engineered the power section, isolated the failed buck converter by pulling a diode and injecting bench supply voltage to confirm the fault, then dead-bugged a 3.3V LDO and tantalum decoupling caps from the spares tin onto the SMD pads with point-to-point wiring. Not pretty but the customer got their radio back.
🔧 Repair Log — 106 consumer electronics repaired, £8,000+ saved from landfill. Have a browse.

GitHub Activity

I like to look back and keep track on my own activity over the year and remember particularly crunchy weeks where I was doing a lot of work. As well as the times where I was writing a paper, and my Github commits disappeared, when I was working on a fork for a while, or when I took a much needed break :)
Top languages GitHub contribution chart