Sensor Model — measurement likelihood score

The weight step of the sensor_model. The real lidar (fixed) gives the observed scan. Each virtual lidar pose ray-casts the same map for its expected scan, and is scored by how well the two match.

p(zk) = exp( −(zkobs − zkexp)2 / 2σ2 ) W = ∏k p(zk)
Per-ray likelihood each dot = one ray, height = its score
total weight W = ∏ p(zk) = · log W · rays within σ
Sensor model table single-ray p(zk)
p = 0p = 1
Map drag to move the virtual lidar
Real lidar (fixed) & observed scan
Virtual lidar (movable) & expected scan
Likelihood field (bright = high W)
Map walls
W is a product of K ray scores, so it collapses toward 0 very fast once a few rays disagree — this is exactly why the real filter raises weights to a 1/squash_factor power to keep them from becoming razor-sharp. The field shows W over all positions at the current virtual heading: rotate θ away from truth and even the true spot dims, because heading has to match too. The sensor model table plots each ray at (expected, observed): a good pose lands every dot on the bright zobs=zexp diagonal, a bad pose scatters them into the dark, and σ sets the ridge width.