Helios++
Helios software for LiDAR simulations
AbstractPulseRunnable.h
1 #pragma once
2 
3 #include <scanner/detector/PulseTask.h>
4 #include <scanner/detector/AbstractDetector.h>
5 #include <noise/RandomnessGenerator.h>
6 class Measurement;
7 #include "LasSpecification.h"
8 class Scanner;
9 #include <scanner/SimulatedPulse.h>
10 
11 
12 #include <mutex>
13 
14 
19 public:
20  // *** ATTRIBUTES *** //
21  // ******************** //
25  std::shared_ptr<Scanner> scanner = nullptr;
29  std::shared_ptr<AbstractDetector> detector = nullptr;
43  std::function<void(
45  double &distance,
46  glm::dvec3 &beamOrigin,
47  glm::dvec3 &beamDirection
49 
50  // *** CONSTRUCTION / DESTRUCTION *** //
51  // ************************************ //
59  std::shared_ptr<Scanner> const scanner,
60  SimulatedPulse const &pulse
61  );
62 
63  // *** M E T H O D S *** //
64  // *********************** //
72  virtual void initialize();
86  void capturePoint(
87  Measurement & m,
89  std::vector<Measurement> *allMeasurements,
90  std::mutex *allMeasurementsMutex,
91  std::vector<Measurement> *cycleMeasurements,
92  std::mutex *cycleMeasurementsMutex
93  );
94 
120  double &distance,
121  glm::dvec3 &beamOrigin,
122  glm::dvec3 &beamDirection
123  );
205  double &distance,
206  glm::dvec3 &beamOrigin,
207  glm::dvec3 &beamDirection
208  );
209 
210 };
Base abstract class for pulse runnables.
Definition: AbstractPulseRunnable.h:18
std::shared_ptr< Scanner > scanner
Scanner used to simulate the pulse.
Definition: AbstractPulseRunnable.h:25
virtual void initialize()
Initialize pending attributes of the abstract pulse runnable before doing further computations.
Definition: AbstractPulseRunnable.cpp:55
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.
Definition: AbstractPulseRunnable.cpp:58
AbstractPulseRunnable(std::shared_ptr< Scanner > const scanner, SimulatedPulse const &pulse)
Base constructor for pulse runnables.
Definition: AbstractPulseRunnable.cpp:17
std::shared_ptr< AbstractDetector > detector
Detector used to simulate pulse.
Definition: AbstractPulseRunnable.h:29
std::function< void(RandomnessGenerator< double > &rg, double &distance, glm::dvec3 &beamOrigin, glm::dvec3 &beamDirection)> applyMeasurementError
Function to apply error to received measurement.
Definition: AbstractPulseRunnable.h:48
void applyMeasurementErrorFromExpr(RandomnessGenerator< double > &rg, double &distance, glm::dvec3 &beamOrigin, glm::dvec3 &beamDirection)
Apply error to received measurement.
Definition: AbstractPulseRunnable.cpp:101
void applyMeasurementErrorDirectly(RandomnessGenerator< double > &rg, double &distance, glm::dvec3 &beamOrigin, glm::dvec3 &beamDirection)
Apply error to received measurement.
Definition: AbstractPulseRunnable.cpp:93
Scene & scene
Reference to the scene that is being scanned.
Definition: AbstractPulseRunnable.h:37
SimulatedPulse pulse
The definition of the pulse to be simulated.
Definition: AbstractPulseRunnable.h:33
Class representing a measurement.
Definition: Measurement.h:13
Pulse task interface.
Definition: PulseTask.h:13
Class representing a scanner asset.
Definition: Scanner.h:28
Class representing a scene asset.
Definition: Scene.h:28
Class representing a simulated laser pulse.
Definition: SimulatedPulse.h:10