Aditya Sridhar

Project · 2026 · interactive

An excavator cab that watches your back

Heavy-machine accidents come from a few repeated situations: an unbuckled operator, a worker inside the swing radius, a slope past the tipping point, an engine cooked by a blocked radiator. The Smart Operator Assistant reads the machine's sensors every second and turns them into alerts and forecasts. Below, its rules run in your browser on a simulated machine you drive.

Seatbelt grace before a critical alert
5 s
Overheat forecast horizon
3 min
Speed advisor, hold-out R²
0.988
ML models in the full app
4

Try it

Starting the engine…

Pick a situation or move the controls yourself. The simulation runs at four times real speed so the timed rules (seatbelt grace, idling) show up quickly; switch to real time to feel them as an operator would.

How it decides

Rules with memory. A seatbelt that is off for a moment while climbing in is normal, so the alert waits 5 seconds. Obstacles are tiered: within 1 m is a warning, within 50 cm critical, and only while the engine runs. An alert that changes severity is logged again, so the incident log shows how a situation escalated and when it cleared.

Forecasting, not just thresholds. Engine temperature behaves like a first-order system: it rises fast, then levels off where cooling balances load. Regressing the rate of change against the temperature itself over the last 40 seconds estimates that level. If it settles below 110 °C there is nothing to say; if it settles above, or keeps climbing, the cab warns with the time left. Turn on the cooling fault and the warning arrives minutes before the limit.

A learned speed limit. A safe speed depends on the machine, the surface, the slope and the load. Gradient-boosted trees learned it from 5,000 simulated runs and run here in JavaScript; going 25% over the advice raises a warning. Try mud on a downhill.

Results

MetricValueSource
Speed advisor in this page: gradient-boosted trees, hold-out R² / MAE0.9882 / 0.47 km/hpublic/projects/operator/speed_model.json
Speed advisor in the app: random forest, hold-out R² / MAE0.9819 / 0.61 km/hbackend/RESULTS.md
Engine fault classifier (5 classes), accuracy / macro F10.966 / 0.940backend/RESULTS.md
Task-time estimator, MAPE13.4%backend/RESULTS.md
Unusual-behaviour detector (isolation forest), precision / recall0.974 / 0.922backend/RESULTS.md

All four models were trained on synthetic data from the project's own generator; there was no real machine to log. The browser speed advisor is smaller than the app's 11 MB random forest and was retrained from the same data so it fits in a web page.

The full system

The app around these rules: a FastAPI backend fed every second by a machine simulator standing in for an ESP32 and its sensors, a live dashboard over WebSockets, in-browser drowsiness and person detection on the cab camera, a site map with geofences and machine-to-machine distance, SOS to nearby machines, a pre-start inspection that can lock the engine out, and an incident black box that keeps 60 seconds before each alert. Team project, built against a problem statement for CAT machinery operators.

Code on GitHub