# Airborne Waveform Lidar Simulator Using the Radiative Transfer of a Laser Pulse
## Theories and Modeling
### Airborne Lidar Simulator  
An airborne lidar simulator was developed to implement direct georeferencing, target simulation, and the radiative transfer-based waveform modeling. The simulator consists of three main components, as follows:  
(1) Laser module: PRF [Hz], pulse width [ns], beam divergence [mrad], pulse function;Scanner module: Scanner type, scan frequency [Hz], FOV [deg];
* Flight parameters: AGL [m], speed [kt], flight pattern, swath overlap. The pulse function is the radiance distribution function (e.g., Gaussian or Top-hat) on the cross section of a pulse fired at PRF (pulse repetition frequency). The typical scanner types are liner Galvo-mirror, circular, and Palmer scanner. The scanning frequency is an important factor determining the lidar point cloud point density in PPM (points/m) or PPSM (points/m\({}^{2}\)). The point density is an important simulation condition because the lidar point cloud positional accuracy is constrained by the point density. The following are the descriptive formulae:  
\[\text{PPSM}=\frac{PRF}{v.SW},\;SW=2\text{:}AGL\text{:}\tan(FOV/2),\]  
\[\text{PPM\_al}=(2\text{:}F_{s}/v),\;\text{PPM\_ac}=\text{PRF}/(2\text{:}F_{s} SW).\]  
Along track linear point density (PPM_al) is determined by the scanner frequency (\(F_{s}\)) and the speed (\(v\)). Across track density (PPM_ac) is related to the swath width (\(SW\)). Although the parameters affect the point density in an intuitive manner, creating an optimal set of parameters is a tricky issue. For instance, if we want higher PPSM, then the increase of PRF might come as a first option. However, if PRF is simply increased, it will result in the increased across track density with unchanging along track density, which will cause uneven point distribution. It is obvious that numerous cases like this can be investigated for an optimal setting. All these multiple parameters need to be carefully adjusted to achieve desired evenly distributed point density. The airborne lidar simulation starts from determining the total number of pulses, because it is the foundation of the computation flow (Figure 3). Using several related parameters, the \(SW\) is determined and then it is multiplied by another input, the \"Length to Width\" ratio, which determines the flight distance. The distance divided by speed gives the flight time. Eventually the total number of pulses is obtained by the PRF times flight time. The second step is to create an IMU and GNSS data array. Although any arbitrary IMU and GNSS position data can be generated, the practical strategy is to use a real SBET file (or other form of position and orientation data) and sample two sets of data out of a straight north flight segment: \((R_{1},P_{1},H_{1})\) and \((R_{2},P_{2},H_{2})\). The data come in a low temporal resolution (e.g., SBET in 200 Hz). Thus, the time and \((R,P,H)\) data need to be interpolated to match the high-resolution time array (usually hundreds of KHz) of the laser pulses. Several different flight patterns can be selected, including parallel, parallel opposite, cross, slant cross, etc. The following modifications in heading angles (Figure 4) are needed to accommodate the flight pattern. The point clouds in Figure 4 demonstrate the resultant swaths for two examples (cross pattern with circular scanner and slant-cross pattern with linear scanner). Figure 3: Computation flow of the airborne lidar simulator. The GNSS position array is prepared for four preset flight patterns in Figure 5, where the x-axis and y-axis represent ground coordinates in meters. The coordinates are prepared in LTF. The swath boundary of the two swaths is illustrated in red and white. The GNSS position corresponds to the dashed line located in the center of each swath. This illustration is based on a 30% swath overlap ratio. The next step is to create a direction vector of the propagating pulse in the SBF. The scan angle (\(\theta\)) array is prepared first using scanner type, \(F_{s}\), \(FOV\), and the scan angle offset, (\(\Delta\theta\)).