Helios++
Helios software for LiDAR simulations
ScannerHead.h
1 #pragma once
2 
3 #include "ScannerSettings.h"
4 
5 #include "maths/Rotation.h"
6 
13 class ScannerHead {
14 private:
15  // *** ATTRIBUTES *** //
16  // ******************** //
21 
22  // Settings:
39 
40  // State variables:
45 
46  // Cache variables:
50  Rotation cached_mountRelativeAttitude = Rotation(glm::dvec3(0, 1, 0), 0);
51 
52 public:
53  // Device definition:
57  glm::dvec3 cfg_device_rotateAxis = glm::dvec3(1, 0, 0);
58 
59  // *** CONSTRUCTION / DESTRUCTION *** //
60  // ************************************ //
66  ScannerHead(glm::dvec3 headRotationAxis, double headRotatePerSecMax_rad) {
67  this->cfg_device_rotateAxis = headRotationAxis;
68  this->cfg_device_rotatePerSecMax_rad = headRotatePerSecMax_rad;
69  }
70  virtual ~ScannerHead() {}
71 
72 
73  // *** M E T H O D S *** //
74  // *********************** //
79  void applySettings(std::shared_ptr<ScannerSettings> settings);
84  void doSimStep(double pulseFreq_Hz);
85 
95  bool rotateCompleted();
96 
97  // *** GETTERS and SETTERS *** //
98  // ***************************** //
111  {return this->cached_mountRelativeAttitude;}
112 
124  void setRotatePerSecMax(double rotatePerSecMax)
125  {this->cfg_device_rotatePerSecMax_rad = rotatePerSecMax;}
126 
138  void setCurrentRotateAngle_rad(double angle_rad);
139 
151  void setRotatePerSec_rad(double rotateSpeed_rad);
152 
164  void setRotateStop(double rotateStop)
165  {this->cfg_setting_rotateStop_rad = rotateStop;}
166 
178  void setRotateStart(double rotateStart)
179  {this->cfg_setting_rotateStart_rad = rotateStart;}
180 
192  void setRotateRange(double rotateRange)
193  {this->cfg_setting_rotateRange_rad = rotateRange;}
194 
195 };
Definition: Rotation.h:80
Definition: ScannerHead.h:13
double getRotatePerSecMax()
Get the maximum rotation per second.
Definition: ScannerHead.h:118
double getRotateCurrent()
Get the current rotation angle.
Definition: ScannerHead.h:132
Rotation getMountRelativeAttitude()
Obtain the relative mount attitude.
Definition: ScannerHead.cpp:30
double cfg_setting_rotateRange_rad
Difference between rotation stop and start angles (radians)
Definition: ScannerHead.h:38
double getRotateStart()
Get rotation start angle.
Definition: ScannerHead.h:172
void setRotateRange(double rotateRange)
Set rotation range.
Definition: ScannerHead.h:192
double state_currentRotateAngle_rad
Current rotation angle (radians)
Definition: ScannerHead.h:44
double cfg_setting_rotateStop_rad
Rotation stop angle (radians)
Definition: ScannerHead.h:30
Rotation cached_mountRelativeAttitude
Relative scanner head mount attitude.
Definition: ScannerHead.h:50
bool rotateCompleted()
Check if rotation has been completed.
Definition: ScannerHead.cpp:34
void applySettings(std::shared_ptr< ScannerSettings > settings)
Apply scanner settings to the scanner head.
Definition: ScannerHead.cpp:12
double cfg_setting_rotateStart_rad
Rotation start angle (radians)
Definition: ScannerHead.h:34
void setRotateStart(double rotateStart)
Set rotation start angle.
Definition: ScannerHead.h:178
void setRotateStop(double rotateStop)
Set rotation stop angle.
Definition: ScannerHead.h:164
double cfg_device_rotatePerSecMax_rad
Maximum rotation per second (radians)
Definition: ScannerHead.h:20
void setCurrentRotateAngle_rad(double angle_rad)
Set the current rotation angle.
Definition: ScannerHead.cpp:48
void doSimStep(double pulseFreq_Hz)
Perform computations for current simulation step.
Definition: ScannerHead.cpp:21
void setRotatePerSecMax(double rotatePerSecMax)
Set the maximum rotation per second.
Definition: ScannerHead.h:124
Rotation & getMountRelativeAttitudeByReference()
Definition: ScannerHead.h:110
void setRotatePerSec_rad(double rotateSpeed_rad)
Set rotation per second.
Definition: ScannerHead.cpp:60
ScannerHead(glm::dvec3 headRotationAxis, double headRotatePerSecMax_rad)
Scanner head constructor.
Definition: ScannerHead.h:66
double getRotateStop()
Get rotation stop angle.
Definition: ScannerHead.h:158
double getRotateRange()
Get rotation range.
Definition: ScannerHead.h:186
double cfg_setting_rotatePerSec_rad
Rotation per second (radians)
Definition: ScannerHead.h:26
double getRotatePerSec_rad()
Get rotation per second.
Definition: ScannerHead.h:145
glm::dvec3 cfg_device_rotateAxis
Rotation axis.
Definition: ScannerHead.h:57