Helios++
Helios software for LiDAR simulations
ScannerSettings.h
1 #pragma once
2 
3 #include "Asset.h"
4 #include <memory>
5 
9 class ScannerSettings : public Asset {
10 
11 public:
12  // *** ATTRIBUTES *** //
13  // ******************** //
19  std::string id = "#nullid#";
24  std::shared_ptr<ScannerSettings> baseTemplate = nullptr;
25 
31  bool active = true;
43  double headRotateStart_rad = 0;
47  double headRotateStop_rad = 0;
51  int pulseFreq_Hz = 0;
55  double scanAngle_rad = 0;
67  int scanFreq_Hz = 0;
71  double beamDivAngle = 0.003;
75  double pulseLength_ns = 0;
79  double trajectoryTimeInterval = 0.0; // In seconds
80 
81  // *** CONSTRUCTION / DESTRUCTION *** //
82  // ************************************ //
86  ScannerSettings() = default;
87 
88  //Copy constructor:
90  if (other == NULL) return;
91 
92  this->active = other->active;
93  this->beamSampleQuality = other->beamSampleQuality;
94  this->headRotatePerSec_rad = other->headRotatePerSec_rad;
95  this->headRotateStart_rad = other->headRotateStart_rad;
96  this->headRotateStop_rad = other->headRotateStop_rad;
97  this->verticalAngleMin_rad = other->verticalAngleMin_rad;
98  this->verticalAngleMax_rad = other->verticalAngleMax_rad;
99  this->pulseFreq_Hz = other->pulseFreq_Hz;
100  this->scanAngle_rad = other->scanAngle_rad;
101  this->scanFreq_Hz = other->scanFreq_Hz;
102  this->beamDivAngle = other->beamDivAngle;
103  this->pulseLength_ns = other->pulseLength_ns;
104  this->trajectoryTimeInterval = other->trajectoryTimeInterval;
105  }
106 
107  // *** GETTERS and SETTERS *** //
108  // ***************************** //
116  bool hasTemplate() {return this->baseTemplate != nullptr;}
124 };
double headRotateStart_rad
Starting angle (radians) for the scanner head.
Definition: ScannerSettings.h:43
double trajectoryTimeInterval
Time interval between trajectory recollections (seconds)
Definition: ScannerSettings.h:79
int beamSampleQuality
Beam sample quality.
Definition: ScannerSettings.h:35
Base class for all assets.
Definition: Asset.h:10
double headRotateStop_rad
Ending angle (radians) for the scanner head.
Definition: ScannerSettings.h:47
ScannerSettings()=default
Scanner settings default constructor.
ScannerSettings & getTemplate()
Obtain template by reference.
Definition: ScannerSettings.h:123
double scanAngle_rad
Scan angle (radians)
Definition: ScannerSettings.h:55
bool active
Flag to specify if scanner is active (true) or not (false)
Definition: ScannerSettings.h:31
double pulseLength_ns
Pulse length (nanoseconds)
Definition: ScannerSettings.h:75
std::shared_ptr< ScannerSettings > baseTemplate
Template defining default values which was used to build the ScannerSettings object.
Definition: ScannerSettings.h:24
double verticalAngleMax_rad
Maximum vertical angle (radians)
Definition: ScannerSettings.h:63
bool hasTemplate()
Check if this ScannerSettings has an associated template (true) or not (false)
Definition: ScannerSettings.h:116
double headRotatePerSec_rad
Amount of rotation (radians) per second for the scanner head.
Definition: ScannerSettings.h:39
int scanFreq_Hz
Scanning frequency (hertz)
Definition: ScannerSettings.h:67
double beamDivAngle
Beam divergence angle (radians)
Definition: ScannerSettings.h:71
Scanner settings class.
Definition: ScannerSettings.h:9
double verticalAngleMin_rad
Minimum vertical angle (radians)
Definition: ScannerSettings.h:59
int pulseFreq_Hz
Pulse frequency (hertz)
Definition: ScannerSettings.h:51