Helios++
Helios software for LiDAR simulations
PyBeamDeflectorWrapper.h
1 #pragma once
2 
3 #ifdef PYTHON_BINDING
4 
5 #include <AbstractBeamDeflector.h>
6 #include <scanner/beamDeflector/ConicBeamDeflector.h>
7 #include <scanner/beamDeflector/FiberArrayBeamDeflector.h>
8 #include <scanner/beamDeflector/OscillatingMirrorBeamDeflector.h>
9 #include <scanner/beamDeflector/PolygonMirrorBeamDeflector.h>
10 #include <scanner/beamDeflector/RisleyBeamDeflector.h>
11 
12 #include <memory>
13 
14 namespace pyhelios{
15 
24 public:
25  // *** ATTRIBUTES *** //
26  // ******************** //
27  AbstractBeamDeflector &beamDeflector;
28 
29  // *** CONSTRUCTION *** //
30  // ********************** //
32  std::shared_ptr<AbstractBeamDeflector> beamDeflector
33  ) : beamDeflector(*beamDeflector) {}
34  virtual ~PyBeamDeflectorWrapper(){}
35 
36  // *** GETTERS and SETTERS *** //
37  // ***************************** //
38  inline double getScanFreqMax()
39  {return beamDeflector.cfg_device_scanFreqMax_Hz;}
40  inline void setScanFreqMax(double scanFreqMax_Hz)
41  {beamDeflector.cfg_device_scanFreqMax_Hz = scanFreqMax_Hz;}
42  inline double getScanFreqMin()
43  {return beamDeflector.cfg_device_scanFreqMin_Hz;}
44  inline void setScanFreqMin(double scanFreqMin_Hz)
45  {beamDeflector.cfg_device_scanFreqMin_Hz = scanFreqMin_Hz;}
46  inline double getScanAngleMax()
47  {return beamDeflector.cfg_device_scanAngleMax_rad;}
48  inline void setScanAngleMax(double scanAngleMax)
49  {beamDeflector.cfg_device_scanAngleMax_rad = scanAngleMax;}
50  inline double getScanFreq()
51  {return beamDeflector.cfg_device_scanFreqMin_Hz;}
52  inline void setScanFreq(double scanFreq)
53  {beamDeflector.cfg_device_scanFreqMin_Hz = scanFreq;}
54  inline double getScanAngle()
55  {return beamDeflector.cfg_setting_scanAngle_rad;}
56  inline void setScanAngle(double scanAngle)
57  {beamDeflector.cfg_setting_scanAngle_rad = scanAngle;}
58  inline double getVerticalAngleMin()
59  {return beamDeflector.cfg_setting_verticalAngleMin_rad;}
60  inline void setVerticalAngleMin(double verticalAngleMin)
61  {beamDeflector.cfg_setting_verticalAngleMin_rad = verticalAngleMin;}
62  inline double getVerticalAngleMax()
63  {return beamDeflector.cfg_setting_verticalAngleMax_rad;}
64  inline void setVerticalAngleMax(double verticalAngleMax)
65  {beamDeflector.cfg_setting_verticalAngleMax_rad = verticalAngleMax;}
66  inline double getCurrentBeamAngle()
67  {return beamDeflector.state_currentBeamAngle_rad;}
68  inline void setCurrentBeamAngle(double currentBeamAngle)
69  {beamDeflector.state_currentBeamAngle_rad = currentBeamAngle;}
70  inline double getAngleDiff()
71  {return beamDeflector.state_angleDiff_rad;}
72  inline void setAngleDiff(double angleDiff)
73  {beamDeflector.state_angleDiff_rad = angleDiff;}
74  inline double getCachedAngleBetweenPulses()
75  {return beamDeflector.cached_angleBetweenPulses_rad;}
76  inline void setCachedAngleBetweenPulses(double angleBetweenPulses)
77  {beamDeflector.cached_angleBetweenPulses_rad = angleBetweenPulses;}
78  inline Rotation& getEmitterRelativeAttitude()
79  {return beamDeflector.getEmitterRelativeAttitudeByReference();}
80  inline std::string getOpticsType() const {return getOpticsType(0);}
81  inline std::string getOpticsType(size_t const idx) const {
82  try{
83  dynamic_cast<ConicBeamDeflector &>(beamDeflector);
84  return "CONIC";
85  }catch(std::exception &ex){}
86  try{
87  dynamic_cast<FiberArrayBeamDeflector &>(beamDeflector);
88  return "FIBER_ARRAY";
89  }catch(std::exception &ex){}
90  try{
91  dynamic_cast<OscillatingMirrorBeamDeflector &>(beamDeflector);
92  return "OSCILLATING_MIRROR";
93  }catch(std::exception &ex){}
94  try{
95  dynamic_cast<PolygonMirrorBeamDeflector &>(beamDeflector);
96  return "POLYGON_MIRROR";
97  }catch(std::exception &ex){}
98  try{
99  dynamic_cast<RisleyBeamDeflector &>(beamDeflector);
100  return "RISLEY";
101  }catch(std::exception &ex){}
102  return "UNKNOWN";
103  }
104 };
105 
106 }
107 
108 #endif
Base abstract class for beam deflectors.
Definition: AbstractBeamDeflector.h:10
Rotation & getEmitterRelativeAttitudeByReference()
Get the relative emitter attitude by referencce.
Definition: AbstractBeamDeflector.h:129
double cfg_device_scanFreqMax_Hz
Minimum scanning frequency (hertz)
Definition: AbstractBeamDeflector.h:18
double cfg_device_scanAngleMax_rad
Maximum scanning angle (radians)
Definition: AbstractBeamDeflector.h:26
double cfg_setting_scanAngle_rad
Scanning angle (radians)
Definition: AbstractBeamDeflector.h:36
double cfg_setting_verticalAngleMin_rad
Minimum vertical scanning angle (radians)
Definition: AbstractBeamDeflector.h:40
double cfg_setting_verticalAngleMax_rad
Maximum vertical scanning angle (radians)
Definition: AbstractBeamDeflector.h:44
double state_currentBeamAngle_rad
Current beam angle (radians)
Definition: AbstractBeamDeflector.h:50
double cached_angleBetweenPulses_rad
Angle between pulses (radians)
Definition: AbstractBeamDeflector.h:63
double state_angleDiff_rad
Angle differential (radians)
Definition: AbstractBeamDeflector.h:54
double cfg_device_scanFreqMin_Hz
Maximum scanning frequency (hertz)
Definition: AbstractBeamDeflector.h:22
Class representing a conic beam deflector.
Definition: ConicBeamDeflector.h:7
Class representing a fiber array beam deflector.
Definition: FiberArrayBeamDeflector.h:8
Class representing an oscillating mirror beam deflector.
Definition: OscillatingMirrorBeamDeflector.h:120
Class representing a polygon mirror beam deflector.
Definition: PolygonMirrorBeamDeflector.h:8
Class representing a risley prisms beam deflector.
Definition: RisleyBeamDeflector.h:10
Definition: Rotation.h:80
Wrapper for AbstractBeamDeflector class.
Definition: PyBeamDeflectorWrapper.h:23