Skip to the lesson
FixTheRobot Explore Robotics / Perception / P5 3D Perception and Point Clouds / P5-T6

Perception · Theory · P5

P5-T6 — Occlusion, Sparse Measurements and Density Changes

A sensor sees fewer points on far objects and nothing behind near ones. Perception has to know the difference between empty and unseen.

  • Lesson 6 of 6
  • Module 5: 3D Perception and Point Clouds
  • Theory
  • About 10 minutes to read

A LiDAR’s beams fan out, so the number of points that land on an object falls with the square of its distance. Objects block the view of what is behind them. Dark or shiny surfaces return nothing. All of this limits what any detector can find, however good the algorithm, and it is predictable enough to calculate. This lesson derives the point-count formula, the range at which an object is no longer detectable, the size of the shadow behind an obstacle, and the practices that keep a robot honest about what it has not seen.

Learning objectives

After this lesson, you should be able to:

  • Compute the number of points on an object of a given size at a given range, and the range at which it falls below a minimum.
  • Compute the shadow (occluded region) behind an object and explain why unseen is not the same as free.
  • List the causes of missing returns (dark, glossy, transparent surfaces, grazing angles, range limits) and their effect on detection.
  • Choose remedies: accumulate frames, change viewpoint, higher resolution, other sensors, tracking and explicit unknown space.

The idea: the sensor sees a cone, not a scene

Every beam is a thin ray. At range r, adjacent beams are about rΔθ apart, so a patch of surface of area A catches roughly A/(rΔθ)² beams. Double the range and you get a quarter of the points; at the range where this falls below what a detector needs, the object is invisible to it, not because of an algorithm fault but because the data are not there.

Points on a person against rangeA plot of the logarithm of the number of points on a 0.5 by 1.7 metre person against range from 3 to 40 metres, for beam spacings of 1 degree and 0.4 degrees. The number falls with the square of the range. A horizontal dashed line marks 10 points. The 1 degree curve falls below 10 points near 17 metres; the 0.4 degree curve stays above it to about 42 metres.01020304000.5751.151.722.3range (m)log10 (points on a person) 1° × 1° beam spacing0.4° × 0.4° beam spacing10 points (dashed) Doubling the range dividesthe number of points by four.
Points on a person fall as 1/r². With 1° beam spacing the count drops below ten near 17 m; a sensor with 0.4° spacing reaches the same count only at about 42 m.

A second effect is occlusion: a nearby object blocks the beams behind it, creating a shadow that the sensor knows nothing about. Anything may be in the shadow, including another object or a person.

Missing data are not evidence of emptiness. Every empty cell in the point cloud is either free space or unseen space, and the sensor cannot tell which.

Why returns go missing

Causes of missing or sparse returns
CausePhysicsEffectRemedy
RangeBeam spreading: density falls as 1/r²; return power falls with rangeFew points far away; maximum rangeHigher resolution, accumulate frames, track
OcclusionOpaque objects block the beamShadows behind objects; partly visible objectsChange viewpoint, other sensors, treat as unknown
Dark surfacesLow reflectivity returns too little lightHoles; objects appear smaller or missingLonger exposure or higher power, other sensors
Glass, mirrors, waterBeam passes through or reflects awayNo return, or a ghost point behind the glassFuse with camera or radar; mark known glass
Grazing angleSurface at a shallow angle reflects little back and spreads pointsSparse, noisy returns from faces turned awayCope with partial boxes; viewpoint change
Weather and dustScattering and absorptionSpurious points, reduced rangeFiltering, radar, redundancy

The mathematics: counts, limits and shadows

Points on an object

A beam grid with spacings Δθh and Δθv (radians) gives, on a flat target of area A facing the sensor at range r,

number of points on a target
N≈Ar2 Δθh ΔθvN\approx \frac{A}{r^{2}\,\Delta \theta _{h}\,\Delta \theta _{v}}
N≈A cos⁡ ϕ(r2 Δθh Δθv) for a surface tilted by ϕ from facingN\approx \frac{A\,\cos \,\phi }{(r^{2}\,\Delta \theta _{h}\,\Delta \theta _{v})\,\text{for}\,a\,\text{surface tilted by}\,\phi \,\text{from facing}}
A
the area of the target’s cross-section facing the sensor, in m² (a person: about 0.5 × 1.7 = 0.85 m²).
r
the range to the target in metres.
Δθ_h, Δθ_v
the horizontal and vertical angular spacings of the beams, in radians.
φ
the angle between the surface normal and the line of sight: the tilted surface presents a smaller area to the sensor.

(This counts points on average; the actual number varies with the alignment of the beam grid with the object, by a point or two at low counts.)

Detection range

If a detector needs at least Nmin points, the maximum range for a target of area A is

range at which the point count falls to the minimum
rmax⁡=ANmin⁡ Δθh Δθvr_{\max}=\sqrt{\frac{A}{N_{\min}\,\Delta \theta _{h}\,\Delta \theta _{v}}}

Because of the square root, doubling the resolution (halving Δθ in both directions) multiplies the range by 2, not 4 and not 1.4: a fourfold increase in the number of beams in the field of view buys a doubling of range. Raising Nmin by a factor of four halves the range.

Shadows

An object of width w at range r blocks the beams behind it. The occluded region is a wedge: at a distance d beyond the object the shadow has width about

width of the shadow behind an object
shadow width at range r+d≈w(r+d)r\text{shadow width at range}\,r+d\approx \frac{w(r+d)}{r}

The shadow widens with distance, so a small object that is near the sensor hides a large region further away. A person (0.5 m) at 3 m hides a strip 2.8 m wide at a range of 17 m.

Representing what is unseen

The honest representation labels space as free (a beam passed through), occupied (a beam ended there) or unknown (no beam reached it). The shadow behind an object is unknown. A planner can then choose how cautiously to treat unknown space, and a perception stack can decide to move, slow down or request another viewpoint to reveal it.

A worked example: how far can the robot see a person?

A person presents about 0.5 m × 1.7 m = 0.85 m². Consider two LiDARs, one with 1.0° × 1.0° spacing and a better one with 0.4° × 0.4°.

Points on a person at five ranges for two beam spacings
RangePoints, 1° × 1°Points, 0.4° × 0.4°
5 m111.6698
10 m27.9174
20 m7.044
30 m3.119
40 m1.711

At 10 m the coarse sensor gives about 28 points on the person, at 30 m only about 3: too few for most detectors, and the exact number varies from frame to frame with the alignment of the beams. With 0.4° spacing the person has about 19 points at 30 m.

The range at which each sensor still delivers 10 points:

detection range for 10 points
1∘×1∘:1^{\circ}\times 1^{\circ}:
rmax⁡=0.8510×3.05e−4=16.7 mr_{\max}=\sqrt{\frac{0.85}{10\times 3.05e-4}}=16.7\,\mathrm{m}
0.4∘×0.4∘: rmax⁡=0.8510×4.87e−5=41.8 m0.4^{\circ}\times 0.4^{\circ}:\,r_{\max}=\sqrt{\frac{0.85}{10\times 4.87e-5}}=41.8\,\mathrm{m}

The better sensor reaches 2.5 times as far (the ratio 1/0.4 = 2.5), and it has 6.3 times as many beams in the same field of view. Whether that is enough depends on the robot’s speed. At 15 m/s, braking at 6 m/s² needs 15²/(2 × 6) = 18.8 m plus the distance covered during the reaction time (about 7.5 m for half a second), 26 m in all. A sensor that gives 10 points on a person only out to 17 m cannot support that speed; the better sensor, at 42 m, can.

The shadow behind a pedestrian

A person 0.5 m wide stands 4 m ahead. At a distance of 8 m from the sensor (4 m behind the person) the shadow is 1.0 m wide: wide enough to hide a second person or a child. Even for a person-sized object the shadow reaches far. A robot approaching a parked truck 2.5 m wide at 8 m has a shadow of 5.6 m at 10 m behind it (18 m range), well wider than a lane. Anything in that strip is invisible until the robot moves.

Dark and glossy surfaces

A black car and a white car at the same range produce very different returns: the black one may return a fraction of the light and many points drop out. In a cloud this appears as a hole or a car that is half its real width. A detector trained or tuned on bright objects underestimates its range on dark ones. The same holds for glass walls: the cloud shows the room behind the window, or nothing, and the robot may try to drive through.

Engineering implications and limitations

Compute your detection range. From the beam spacing, the smallest object that must be detected and the point count your detector needs, calculate rmax and compare it with the stopping distance. This calculation is cheap and often shows the sensor is inadequate before any code is written.

Accumulate frames. Transforming several scans into a common frame (with motion compensation and accurate poses) multiplies the density of static surfaces. It does not help for moving objects unless they are tracked.

Track through gaps. An object seen at 20 m in one frame and not the next has probably not vanished. A tracker (Module 7) keeps it alive for a number of frames, at growing uncertainty, and uses prior detections to find it again.

Mark unknown space explicitly. Build an occupancy structure with free, occupied and unknown (Lesson P5-T1). Plan with a margin for unknown space near the robot’s path, slow down when approaching occlusions (corners, parked vehicles) and use a changed viewpoint to reveal them.

Know the surfaces. Characterise how your sensor responds to dark, shiny, glass and wet surfaces on your site, and decide how the robot behaves around them. Add another sensor (camera, radar, ultrasonic) for the cases that LiDAR misses.

Test at range and on partial objects. Evaluate the detector as a function of range, point count and visible fraction, as in the lab, and report it that way. A single average score hides the failure at distance.

Common misconceptions

“If there are no points there, the space is empty.”

It may be empty, occluded, dark, glass or beyond range. Only an explicit occupancy model with an unknown state can say.

“A better detector will see farther.”

Not beyond what the data contain. At 30 m a person may produce no returns in most frames; no algorithm can detect points that are not there.

“Doubling the resolution doubles the range.”

It doubles the range only if the resolution doubles in both directions (four times as many beams); for the same field of view that is four times the data.

“The shadow behind an object is small.”

It widens with distance: a person’s shadow is 0.5 m wide behind them and several metres wide further back.

Engineering takeaways

  1. The number of points on an object is N ≈ A cos φ / (r² Δθ_h Δθ_v): it falls as 1/r².
  2. Detection range for a minimum of Nmin points is √(A/(Nmin Δθ²)); halving the beam spacing doubles it.
  3. An object of width w at range r casts a shadow of width w(r + d)/r at a distance d beyond it; unseen is not free.
  4. Dark, glossy and transparent surfaces, grazing angles and weather remove returns without removing the object.
  5. Compute the detection range, accumulate frames, track through gaps, keep an explicit unknown state, and evaluate by range and visibility.

References and further reading

The formulas are standard geometry; the tables of point counts, ranges and shadows were computed for this lesson with an idealised, uniformly spaced beam grid.

  • Thrun, S., Burgard, W. and Fox, D. (2005). Probabilistic Robotics. MIT Press: range-sensor models, occupancy grids with an unknown state.
  • Carballo, A., Lambert, J., Monrroy, A. et al. (2020). LIBRE: the multiple 3D LiDAR dataset. IEEE Intelligent Vehicles Symposium: measured detection range and the influence of beam density and surface reflectivity across LiDARs.
  • Hornung, A., Wurm, K. M., Bennewitz, M., Stachniss, C. and Burgard, W. (2013). OctoMap: an efficient probabilistic 3D mapping framework based on octrees. Autonomous Robots 34(3): free, occupied and unknown space.
  • Hebel, M., Arens, M. and Stilla, U. (2013). Change detection in urban areas by object-based analysis and on-the-fly comparison of multi-view ALS data. ISPRS Journal of Photogrammetry and Remote Sensing 86: occlusion handling with voxel ray tracing in laser scan data.

Knowledge check

Three conceptual questions. Write an answer, then reveal the explanation. Your answers stay in your browser.

Question 1

A LiDAR has 0.2° × 0.2° spacing. How many points land on a 1 m × 1 m flat target facing the sensor at 20 m? At 60 m?

Explanation

Δθ = 0.2° = 0.00349 rad, Δθ² = 1.218 × 10⁻⁵. At 20 m: N = 1 / (400 × 1.218 × 10⁻⁵) = 205 points. At 60 m: 1 / (3600 × 1.218 × 10⁻⁵) = 22.8 points, one ninth as many because the range is three times as large.

Question 2

A truck 2.4 m wide is 6 m away. How wide is the shadow at 12 m from the sensor? Could a person stand in it unseen?

Explanation

The shadow width is w (r + d)/r = 2.4 × 12/6 = 4.8 m. A person (0.5 m) fits easily and cannot be seen by that sensor from that position until the robot moves.

Question 3

Your detector needs 15 points and your sensor has 0.5° × 0.5° beam spacing. What is the range limit for a 0.6 m × 1.0 m target? What changes if you need 30 points?

Explanation

A = 0.6 m²; Δθ² = (0.00873)² = 7.62 × 10⁻⁵. rmax = √(0.6 / (15 × 7.62 × 10⁻⁵)) = √524.9 = 22.9 m. For 30 points the range falls by √2, to about 16.2 m.

What’s next

That completes Module 5. Next: from geometry to meaning: what the objects are, with classification, detection and segmentation.

Practice this lesson

Debug a Failed 3D Detection Pipeline

Repair range-dependent clustering and oriented boxes so distant and partially seen objects are found.

Next lesson

P6-T1 — Classification, Detection and Segmentation

Distinguish the three tasks, their outputs and their costs.

Nothing below is required to finish this lesson.