Build B-01

VISOR

A mine vehicle driving through fog cannot know how far its sensors can actually see, so nobody can say how fast it is safe to go.

Status
BUILDING
Year
2026
Domain
Safety systems / Sensing / Simulation
Stack
Python / pytest / ESP-NOW (simulated)

Artifact

  • Radar 24 GHz
  • RGB camera
  • Thermal MLX90640
Simulated detection range of a walking person by modality and conditionRadar stays near 94 metres in every condition. The camera falls from 62.8 metres in clear air to 6.8 metres in fog or dust at 8 metre visibility. Thermal holds 16.7 metres through fog and drops to 4.3 metres in dust. Values are listed in the table below.0255075100RANGE, MCLEARMOR 200 MFOGMOR 20 MFOGMOR 8 MDUSTMOR 8 MRadar 94.1RGB 6.8Thermal 4.3
Detection range for a walking person, metres
ConditionRadar 24 GHzRGB cameraThermal MLX90640
Clear, MOR 200 m94.662.816.7
Fog, MOR 20 m94.416.916.7
Fog, MOR 8 m94.16.816.7
Dust, MOR 8 m94.16.84.3

Detection range for a walking person, in metres, straight out of VISOR’s three sensor simulators. Simulator output, not field measurements.

Signal chain

  1. 01 · InputAtmosphere and terrainFog, dust and contamination change how far each sensing modality can see. Low visibility is not one condition.
  2. 02 · SensingCamera, 24 GHz radar, MLX90640 thermalEach modality reports what it detects and how degraded it is. Currently simulated deterministically.
  3. 03 · ProcessingUsable range RVisibility (MOR) estimation and a sensor-health engine give each modality a usable range; the safety function takes the shortest one it relies on.
  4. 04 · ProcessingEnvelope solverSolves v·t_r + v²/(2a) ≤ k·R for the fastest speed that still stops within R.
  5. 05 · OutputSpeed enforced by a separate microcontrollerThe MCU does not trust the Linux host. If a sensor goes blind the envelope contracts; if the Raspberry Pi dies, the vehicle stops.

System architecture

LayerResponsibility
coreTime base, units, physical bounds, CRC-8, staleness budgets
contractsEvery message that crosses a layer boundary
perceptionCamera, radar and thermal (stages 03-05)
visibilityMOR estimation (stage 06, not started)
healthSensor-health engine (stage 07)
safetyRisk engine, envelope solver, state machine (stages 08-09)
fusionTrack-level fusion (stage 10)
v2vESP-NOW protocol simulator (stage 11)
loggingAppend-only event log (stage 14)
hmiSynthetic vision (stage 15)

Implementation

VISOR is a retrofit safety and efficiency system for open-cast mine vehicles, written for Smart India Hackathon 2026 (SIH26007, safe operation of mine vehicles in fog and low visibility). It is deliberately not a fog detector and not an object detector. It measures how far the vehicle can actually see, calculates how fast it can safely travel, and enforces that speed even when the perception stack fails.

The work is staged from 01 to 24, with a gate at the end of every stage. Stage 01 froze the architecture: every message that crosses a layer has a contract, and the safety microcontroller is the authority, not the Linux host. Where the engineering reference leaves a choice open, the choice is recorded as an architecture decision record instead of being assumed.

The simulators are the interesting part so far. Radar is flat across conditions because a 12.5 mm wavelength does not care about 1-20 µm fog droplets. The camera’s range collapses as visibility falls. Thermal holds through fog and then loses its advantage in dust, because dust particles are large enough to scatter long-wave infrared and fog droplets are not.

Two decisions are open and belong to the team: ADR-0006 (the Koschmieder constant, needed before stage 06) and ADR-0018 (how usable range combines across modalities, needed during stage 08).

Measurements

Tests passing
277
Runtime dependencies
0Enforced by a test that rejects third-party imports.
MCU frame size
12bytes
Camera range, fog at MOR 8 m
6.8m
Radar range, fog at MOR 8 m
94.1m
Thermal range, dust at MOR 8 m
4.3m

Source: VISOR README, simulator output at the end of stage 05. These are model results, not measurements from a vehicle.

Failures and iterations

  1. Stage 01

    Architecture frozen with data contracts, an authority boundary and a 12-byte MCU frame.

  2. Stages 02-05

    Vehicle dynamics plus radar, camera and thermal simulators. The camera collapses in fog; thermal holds in fog and then fails in dust.

    That inversion is why the design refuses a single “fog number”.

  3. Hardware

    No sensors are readily available (one Raspberry Pi 4B and two NodeMCU boards on hand).

    Working software-first against simulated sensors, with a physical miniature vehicle planned for the demonstration.

Result

A tested, dependency-free simulation core that shows why visibility has to be measured per modality before speed can be limited.

Current status

BUILDING

Stages 01-05 of 24 complete. Stage 06 has not started.

Next step

Stage 06, the visibility (MOR) estimator. ADR-0006, the Koschmieder constant, has to be settled by the team first.

Credits

Hari
Repository, staging and implementation
SIH 2026 team
Problem statement SIH26007 entry
Claude Opus 5
Co-author on commits

Links

guest@hari: ~esc to close