ThermalScout

Inspiration

Walking into a lecture hall in January and immediately sweating. Sitting in a seminar room so stuffy you can barely stay awake. These aren't unusual, rather, they're just accepted.

UK universities spend over hundreds if millions per year on energy, yet most buildings have no real-time thermal data at room level. HVAC systems run blind. Nobody knows which rooms are 3°C over setpoint, or which corridors are being heated long after the last student left. Every UK university has pledged net zero targets they can't hit without this data.

ThermalScout started as a simple question: what if a robot could tell you?


What We Built

An autonomous robot that drives through a building scanning temperature, humidity, and spatial geometry, streaming everything live to a web dashboard. A room running just 3°C above setpoint wastes roughly:

$$P_{\text{waste}} \approx 60\ \text{W}$$

continuously, in a single 100 m³ room. Multiply that across a campus and the numbers get serious fast.


How We Built It

Firmware: The Arduino Uno Powered robot runs an ultrasonic distance sensor on a servo-driven 180° sweep, and arguably the star of the show, a DHT11 for air temp and humidity. Every 8 readings it fires a JSON payload over serial or WiFi to the backend. An L298N drives the motors; the backend sends commands back over serial with an ultrasonic safety override.

Backend: A FastAPI app receives sensor payloads and runs them through a pipeline consiting of sweep binning, point cloud projection, log-odds occupancy grid (Bresenham rays), Kalman-filtered IMU heading, path planning, dead reckoning, and IDW thermal interpolation:

$$\hat{T}(x,y) = \frac{\sum_i w_i\, T_i}{\sum_i w_i}, \qquad w_i = \frac{1}{d_i^{2}}$$

Analytics compute per-room $\Delta T$ from setpoint and estimated wasted power. Everything is pushed live over WebSocket at ~6.7 Hz. The backend also supports a replay mode that drives the full pipeline without requiring the physical robot to be connected which is useful for demos and testing.

Frontend: React + Three.js dashboard with a 2D canvas heatmap and a 3D scene, both fed from the same WebSocket stream.


Challenges

Sensor noise was the constant enemy median filtering the HC-SR04, Kalman filtering the IMU, and IDW masking for sparse coverage all exist because raw readings weren't trustworthy. Dead reckoning drift without wheel encoders was a real limitation we worked around with frequent stop-and-rescan cycles. Keeping three codebases (firmware, backend, frontend) in sync on a single JSON contract required discipline from day one.


What We Learned

Calibration is not an afterthought, it's half the project. Log-odds occupancy is far more resilient to noisy pings than binary maps. And ultimately: energy waste is a visibility problem. Centrica estimated UK universities could save millions with better building data. The sensors exist. The gap is instrumentation.


What's Next

Wheel encoders for real odometry, multi-robot fleet coordination, and BMS integration so findings trigger actual HVAC changes and not just dashboard alerts.


Built at HackLondon 2026 by Thomas Moody, Naerthi Senthikumar, Helitha Cooray.

Built With

Share this project:

Updates