Helios++
Helios software for LiDAR simulations
|
Base abstract class for pulse runnables. More...
#include <AbstractPulseRunnable.h>
Public Member Functions | |
AbstractPulseRunnable (std::shared_ptr< AbstractDetector > detector, glm::dvec3 absoluteBeamOrigin, Rotation absoluteBeamAttitude, int pulseNumber, long gpsTime) | |
Base constructor for pulse runnables. More... | |
double | calcCrossSection (double f, double Alf, double theta) |
Compute cross section. More... | |
double | phongBDRF (double incidenceAngle, double targetSpecularity, double targetSpecularExponent) |
Compute the phong model. More... | |
double | calcAtmosphericFactor (double targetRange) |
Compute atmospheric factor \(f\), understood as the energy left after attenuation by air particles in range \([0, 1]\). More... | |
double | calcReceivedPower (double emittedPower, double targetRange, double incidenceAngle, double targetReflectivity, double targetSpecularity, double targetSpecularExponent, double targetArea) |
Solve the laser radar equation. More... | |
double | calcReceivedPower (double emittedPower, double targetRange, double sigma) |
Alternative received power computation method. More... | |
void | capturePoint (Measurement &m, RandomnessGenerator< double > &rg, std::vector< Measurement > *allMeasurements, std::mutex *allMeasurementsMutex, std::vector< Measurement > *cycleMeasurements, std::mutex *cycleMeasurementsMutex) |
Capture point if proceed and write it. More... | |
void | applyMeasurementError (RandomnessGenerator< double > &rg, double &distance, glm::dvec3 &beamOrigin, glm::dvec3 &beamDirection) |
Apply error to received measurement. More... | |
virtual void | operator() ()=0 |
Abstract operator. It must be overridden by any implementation which concretes AbstractPulseRunnable. | |
Static Public Member Functions | |
static double | _calcReceivedPower (double Pt, double Dr2, double R, double Bt2, double etaSys, double etaAtm, double sigma) |
Compute received power \(P_{r}\). More... | |
Public Attributes | |
std::shared_ptr< AbstractDetector > | detector = nullptr |
Detector used to simulate pulse. | |
glm::dvec3 | absoluteBeamOrigin |
Beam origin in absolute coordinates. | |
Rotation | absoluteBeamAttitude |
Beam attitude. | |
int | currentPulseNum |
Number of current pulse. | |
long | currentGpsTime |
Current GPS time in milliseconds. | |
bool | writeGround = true |
Flag to specify if ground points must be captured (true) or not (false) | |
Base abstract class for pulse runnables.
|
inline |
Base constructor for pulse runnables.
|
inlinestatic |
Compute received power \(P_{r}\).
\[ P_{r} = \textrm{etaSys} \cdot \textrm{etaAm} \cdot \sigma \cdot \frac{P_{t} \cdot D_{r2}}{4{\pi} \cdot R^{4} \cdot B_{t2}} \]
void AbstractPulseRunnable::applyMeasurementError | ( | RandomnessGenerator< double > & | rg, |
double & | distance, | ||
glm::dvec3 & | beamOrigin, | ||
glm::dvec3 & | beamDirection | ||
) |
Apply error to received measurement.
rg | RandomnessGenerator to be used to apply error to the measure |
distance | Reference to the distance where error shall be applied |
beamOrigin | Reference to the beam originWaypoint where error shall be applied beamDirection Reference to the beam direction where error shall be applied |
|
inline |
Compute atmospheric factor \(f\), understood as the energy left after attenuation by air particles in range \([0, 1]\).
targetRange | \(r\) |
Let \(A_{e}\) be the atmospheric extinction
\[ f = e^{-2r \cdot A_{e}} \]
double AbstractPulseRunnable::calcCrossSection | ( | double | f, |
double | Alf, | ||
double | theta | ||
) |
Compute cross section.
\[ C_{S} = 4{\pi} \cdot f \cdot A_{lf} \cdot \cos(\theta) \]
Paper DOI: 10.1016/j.isprsjprs.2010.06.007
double AbstractPulseRunnable::calcReceivedPower | ( | double | emittedPower, |
double | targetRange, | ||
double | incidenceAngle, | ||
double | targetReflectivity, | ||
double | targetSpecularity, | ||
double | targetSpecularExponent, | ||
double | targetArea | ||
) |
Solve the laser radar equation.
Report title: Signature simulation and signal analysis for 3-D laser radar
Report authors: Tomas Carlsson, Ove Steinvall and Dietmar Letalick
double AbstractPulseRunnable::calcReceivedPower | ( | double | emittedPower, |
double | targetRange, | ||
double | sigma | ||
) |
Alternative received power computation method.
emittedPower | Emitted power |
targetRange | The distance with respect to intersection multiplied by the sine of the divergence angle |
sigma | Sigma value taken from LadLut specification |
void AbstractPulseRunnable::capturePoint | ( | Measurement & | m, |
RandomnessGenerator< double > & | rg, | ||
std::vector< Measurement > * | allMeasurements, | ||
std::mutex * | allMeasurementsMutex, | ||
std::vector< Measurement > * | cycleMeasurements, | ||
std::mutex * | cycleMeasurementsMutex | ||
) |
Capture point if proceed and write it.
m | Measurement |
rg | Randomness generator |
allMeasurements | Vector of all measurements to store captured point if requested |
allMeasurementsMutex | Mutex to handle concurrent access to vector of all measurements |
cycleMeasurements | Vector of current cycle measurements to store captured point if requested |
cycleMeasurementsMutex | Mutex to handle concurrent access to vector of current cycle measurements |
double AbstractPulseRunnable::phongBDRF | ( | double | incidenceAngle, |
double | targetSpecularity, | ||
double | targetSpecularExponent | ||
) |
Compute the phong model.
Paper title: NORMALIZATION OF LIDAR INTENSITY DATA BASED ON RANGE AND SURFACE INCIDENCE ANGLE
Paper authors: B. Jutzi, H. Gross