Lidar simulations

Basic lidar examples are given here - including all the files need to run these tests.

"Features:" ;-)

The camera definition file will work if you do not leave a space "camera" and "{" BUT it will be a null camera:


so you must make sure the first line is:

camera {

The light defintion for a lidar simulation must specify either a fov or an ideal area i.e.

geometry.idealArea = IDEAL


geometry.fieldOfView = FOV

If not, the lidar beam will be an inifinitesimal ray, and the return will be a bit strange i.e. will come from the first / only thing that it is possible for the lidar beam to hit/illuminate.

Bin start and end points
Lidar simulations require the specification of the distance over which the lidar signal should be binned, in terms of a bin start distance (lidar.binStart), bin end distance
(lidar.binEnd), and the number of bins in which to collect returns signals (lidar.nBins). These are calculated as follows:

  • lidar.binStep: this is the required vertical resolution in scene units, d;
  • lidar.binStart: for a camera at height H (and illumination at the same point), over a target of max height h, this is the minimum return distance from sensor to target & back i.e. 2 x (H - h);
  • lidar.nBins: the (minimum) number of bins required to cover the longest possible (direct) route from the top of the target to the ground and back. This will occur at the edge of the illuminated footprint. For a footprint of radius r (defined by either ideal area/2, or FOV = 2 x tan^-1(r/H)), this distance is 2 x sqrt(H^2 + r^2). So the maximum binning distance is then (lidar.binEnd - lidar.binStart), and dividing by d we obtain lidar.nBins = (lidar.binEnd - lidar.binStart)/d. In practice, specifying more bins than this ensures capturing any multiple scattering that may occur in the bins above the maximum height of the target.