Short, scoped engagements in robot perception, autonomy, and data.
Robot navigation log triage now lives at theohermann.ch; the scopes below are the rest of the practice.
The five scopes below are the shapes this work keeps taking. Anything else, ask.
ROS 2 fleet log triage
Own page: theohermann.ch
Method public: github.com/thrmnn/ros2-localization-triage
A robot misbehaves at a customer site and someone has to comb the bag files and logs to find out why. I do that investigation: reconstruct the timeline, isolate the failure, and write up what happened with the evidence attached. Then I calibrate detectors to your fleet's failure classes — sensor dropout, transform jumps, covariance spikes, pose divergence — run against your recorded bags and logs. Calibration is not optional: a covariance threshold set on a simulated TurtleBot3 sits inside a real Tiago's healthy yaw noise and fired five times on a recording with nothing wrong.
What you get
- →Incident report: timeline, root cause, supporting evidence from your bags and logs
- →Detectors for your fleet's failure classes (sensor dropout, transform jumps, covariance spikes, pose divergence), run against your recorded bags and logs
- →Thresholds calibrated to your fleet, with measured false-alarm rates
- →Analysis scripts you can rerun on new recordings
- →Analysis runs on your infrastructure or under NDA on mine; nothing is retained after handover.
Why me
The method is public in ros2-localization-triage: four localization-failure detectors run against 108 minutes of real recordings from five robot platforms — Cartographer backpack rigs, a Tiago, a MiR100 AGV, a PR2, a handheld 3D rig — all public benchmark data, not a live customer fleet. Every graded figure recomputes from a committed artifact: clone the repo and run python3 scripts/check_numbers.py. Against failure labels the Cartographer dataset's own authors wrote more than a decade before this tool existed, the gap detector found 16 of 16 labelled laser gaps and nothing else. The case log is self-graded against a rubric committed before the results existed, and wrong results are published as wrong.
Perception pipeline audit
2 weeks A focused review of your existing detection / tracking / pose stack. I read the code, trace the latency budget end-to-end, identify the blockers most likely to break in production, and hand back a written report with prioritized fixes.
What you get
- →Architecture and data-flow walkthrough
- →Per-module latency / accuracy breakdown
- →Top-N prioritized findings with concrete fix recommendations
- →Optional: 1-week implementation pass on the highest-leverage finding
Why me
Roboat camera perception on Jetson Orin, on canal vessels in Amsterdam. The same detection / tracking / pose shape in the open: perception-pipeline — modular, MIT-licensed, v0.1 shipped June 2026.
LiDAR / point-cloud pipeline bring-up
3–4 weeks You have raw LiDAR but no production pipeline. I take you from raw scans to a usable processed product: calibration, registration, segmentation, ground extraction, and the downstream representation you actually need (mesh, occupancy grid, semantic point cloud).
What you get
- →Sensor calibration + ground-truth alignment
- →Registration / SLAM pass
- →Semantic segmentation (ground, vegetation, structures)
- →Documented Python / ROS pipeline, reproducible from raw
Why me
MIT Senseable City Lab Rio — terrestrial LiDAR of Rio favelas fused with aerial multispectral and DTMs, feeding CFD airflow simulations. MSc thesis at MIT Senseable Amsterdam with AMS Institute: per-tree LAI from aerial LiDAR for the City of Amsterdam.
Robot-perception MVP
6–8 weeks End-to-end detection + tracking + state-estimation prototype on real hardware. Targeted at teams who need to move from research code to a robot that runs reliably outside the lab. Scoped tightly: one platform, one task, hard latency budget.
What you get
- →Hardware integration + sensor calibration on your platform
- →Detection + tracking + (optional) ReID / pose primitives wired up
- →TensorRT export and latency budget signed off
- →Demo loop running on robot + handover documentation
Why me
EPFL VITA Lab — full autonomy stack on Segway Loomo (SLAM + planning + obstacle avoidance + person-following), released open-source. Roboat — camera perception and MLOps as its first intern, on a stack that until then ran on LiDAR.
AI-agent infrastructure
4–8 weeks For teams shipping agentic products and hitting the wall every team hits — flaky tool calls, unobservable failures, no evals, no safe way to ship a prompt change. I build the harness around your agent so it behaves like a production system: typed tool layer, retrieval you can measure, traces you can actually read, and an eval suite that catches regressions before users do.
What you get
- →Typed, versioned tool layer (testable in isolation)
- →An example keyword-search tool that demonstrates the eval harness on a retrieval-style task
- →One structured trace line per tool call, small enough to grep
- →Regression eval suite wired into CI
Why me
Early open-source scaffold (agent-harness): typed tool layer and eval-suite structure, started June 2026. The same engineering discipline demonstrated in ros2-localization-triage — typed interfaces, tests, reproducible mechanical checks — is what an engagement in this scope would bring to your agent stack.
How engagements work
- Discovery call (free, 20 min) — we scope the
problem and I tell you honestly whether it's a fit.
- Written proposal — fixed scope, fixed
timeline, fixed price. You see exactly what you're buying before you commit.
- Weekly written updates — what shipped, what's
next, what's at risk. No status meetings unless you want them.
- Handover artifact — running code,
documentation, and a written report. Engagements end clean.
Start a conversation
Booking is the fastest path. If your project doesn't fit the slot list, email and I'll
read it.