The car carries three virtual sensors (lidar, camera, radar), each with its own range and noise characteristics. For an obstacle at distance d, each sensor reports a detection probability that falls off with range and degrades with noise. In Fused mode the perception stack combines all three independent estimates instead of trusting a single sensor, exactly as a real self-driving stack does — this is why fusion detects more real obstacles at the same noise level than any single sensor.
p_s(d) = clamp(1 - d/R_s, 0, 1) * (1 - noise_s)
p_fused = 1 - Π (1 - p_s) // independent evidence combination
detected ⇔ p ≥ 0.5
Every 0.4 s the planner re-runs an artificial potential field search from the car's current position to the goal, using only the obstacles currently classified as "detected". Undetected obstacles exert zero repulsive force — the planner literally cannot see them — which is the core limitation the sim is built to expose.
U_att(q) = ½ k_att |q - q_goal|²
U_rep(q) = ½ k_rep (1/d - 1/d0)² if d ≤ d0, else 0
F(q) = -∇U_att(q) - ∇U_rep(q) // steepest-descent path
- Sensor mode — switches which sensor(s) feed the perception → planning pipeline.
- Sensor range — the maximum distance R_s at which a sensor can detect anything.
- Sensor noise — degrades detection probability, simulating rain, glare or clutter.
- Obstacle density — number of obstacles scattered on the road ahead.
- New scenario — reshuffles obstacle positions and forces an immediate replan.
Real autonomous vehicles stack redundant sensors for exactly this reason: lidar struggles in fog, cameras struggle at night or in glare, radar has poor lateral resolution — fusion narrows the blind spots, but the "min hidden clearance" stat shows that some risk always remains.