ScannerInfo.cpp
Go to the documentation of this file.
1 //
2 // ScannerInfo.cpp
3 //
4 //
5 
6 #include "ScannerInfo.hpp"
7 
8 #include "Position3D.hpp"
9 #include "Scan.hpp"
10 #include <cassert>
11 #include "../tools/Time.hpp"
12 #include "../tools/errorhandler.hpp"
13 #include "../tools/toolbox.hpp"
14 
15 namespace datatypes
16 {
17 
19  : m_deviceID(0)
20  , m_scannerType(0)
21  , m_scanNumber(0)
22  , m_startAngle(NaN_double)
23  , m_endAngle(NaN_double)
24  , m_processingFlags(0)
25  , m_scanStartTime(Time())
26  , m_scanEndTime(Time())
27  , m_scanFrequency(NaN_double)
28  , m_beamTilt(0)
29  , m_scanFlags(0)
30  , m_mountingPosition()
31 {
33 }
34 
36 {
37 }
38 
40 {
41  switch (st)
42  {
44  return "UNKNOWN";
45  break;
46  case Scannertype_LMS1xx:
47  return "LMS1xx";
48  break;
49  default:
50  printError("scannerTypeToString: Unknown scanner type, code=" + ::toString((UINT16)st) + ".");
51  return "(error - unknown type)";
52  }
53 }
54 
55 
56 bool ScannerInfo::operator==(const ScannerInfo& other) const
57 {
58  return
59  m_deviceID == other.m_deviceID
60  && m_scannerType == other.m_scannerType
61  && m_scanNumber == other.m_scanNumber
62  && (m_startAngle == other.m_startAngle || (isNaN(m_startAngle) && isNaN(other.m_startAngle)))
63  && (m_endAngle == other.m_endAngle || (isNaN(m_endAngle) && isNaN(other.m_endAngle)))
65  && m_scanEndTime == other.m_scanEndTime
67  && m_beamTilt == other.m_beamTilt
68  && m_scanFlags == other.m_scanFlags
70  ;
71 }
72 
73 void ScannerInfo::setProcessingFlags(const UINT16 processingFlags)
74 {
75  m_processingFlags = processingFlags;
76 }
77 
79 {
80  if ((m_processingFlags & 0x0400) != 0)
81  {
82  return true;
83  }
84 
85  return false;
86 }
87 
89 {
90  return !isRearMirrorSide();
91 }
92 
93 
95 {
96  assert(v >= -PI);
97  assert(v < PI);
98  m_startAngle = v;
99 }
100 
102 {
103  assert(v >= -PI);
104  assert(v < PI);
105  m_endAngle = v;
106 }
107 
109 {
110  m_scannerType = v;
111 }
112 
114 {
115  assert(v >= -PI);
116  assert(v < PI);
117  m_beamTilt = v;
118 }
119 
124 void ScannerInfo::setTimestamps (const Time& start,
125  const Time& end)
126 {
127  assert(start < end);
128  m_scanStartTime = start;
129  m_scanEndTime = end;
130 }
131 
136 /*
137 void ScannerInfo::setDeviceTimestamps (const boost::posix_time::ptime& start,
138  const boost::posix_time::ptime& end)
139 {
140  assert(!start.is_not_a_date_time());
141  assert(!end.is_not_a_date_time());
142  assert(start < end);
143  m_scanStartDeviceTime = start;
144  m_scanEndDeviceTime = end;
145 }
146 */
147 
149 {
150  assert(freq >= 0);
151  m_scanFrequency = freq;
152 }
153 
154 
155 // bool ScannerInfo::isGroundLabeled() const { return (m_scanFlags & Scan::FlagGroundLabeled) != 0; }
156 // bool ScannerInfo::isDirtLabeled() const { return (m_scanFlags & Scan::FlagDirtLabeled ) != 0; }
157 // bool ScannerInfo::isRainLabeled() const { return (m_scanFlags & Scan::FlagRainLabeled) != 0; }
158 // bool ScannerInfo::isCoverageLabeled() const { return (m_scanFlags & Scan::FlagCoverageLabeled) != 0; }
159 // bool ScannerInfo::isBackgroundLabeled() const { return (m_scanFlags & Scan::FlagBackgroundLabeled) != 0; }
160 // bool ScannerInfo::isReflectorLabeled() const { return (m_scanFlags & Scan::FlagReflectorLabeled) != 0; }
161 // bool ScannerInfo::isUpsideDown() const { return (m_scanFlags & Scan::FlagUpsideDown) != 0; }
162 // bool ScannerInfo::isRearMirrorSide() const { return (m_scanFlags & Scan::FlagRearMirrorSide) != 0; }
163 
164 } // namespace datatypes
UINT16
uint16_t UINT16
Definition: BasicDatatypes.hpp:27
UINT8
uint8_t UINT8
Definition: BasicDatatypes.hpp:29
datatypes::ScannerInfo::setTimestamps
void setTimestamps(const Time &start, const Time &end)
Set the start and end timestamp of the scan received by this scanner (in terms of the host computer c...
Definition: ScannerInfo.cpp:124
datatypes::ScannerInfo::isRearMirrorSide
bool isRearMirrorSide()
Definition: ScannerInfo.cpp:78
datatypes::ScannerInfo::setStartAngle
void setStartAngle(double v)
Definition: ScannerInfo.cpp:94
datatypes::ScannerInfo::setScanFrequency
void setScanFrequency(double freq)
Set the scanner's scan frequency in [Hz]. Must be non-negative.
Definition: ScannerInfo.cpp:148
Position3D.hpp
datatypes::ScannerInfo::m_scannerType
UINT8 m_scannerType
Definition: ScannerInfo.hpp:213
datatypes::ScannerInfo::m_deviceID
UINT8 m_deviceID
Accessor functions for scan flags.
Definition: ScannerInfo.hpp:212
datatypes::ScannerInfo::setScannerType
void setScannerType(UINT8 newScannerType)
Definition: ScannerInfo.cpp:108
NaN_double
const double NaN_double
Not-a-Number in double precision.
Definition: MathToolbox.cpp:13
datatypes::ScannerInfo
Definition: ScannerInfo.hpp:23
datatypes::ScannerInfo::operator==
bool operator==(const ScannerInfo &other) const
Equality predicate.
Definition: ScannerInfo.cpp:56
datatypes::ScannerInfo::isFrontMirrorSide
bool isFrontMirrorSide()
Definition: ScannerInfo.cpp:88
datatypes::BasicData::m_datatype
UINT16 m_datatype
Definition: BasicDatatypes.hpp:107
datatypes::Scannertype_LMS1xx
@ Scannertype_LMS1xx
Definition: ScannerInfo.hpp:19
datatypes::ScannerInfo::m_beamTilt
double m_beamTilt
Beam tilt of this scanner in radians.
Definition: ScannerInfo.hpp:237
datatypes::ScannerInfo::m_scanFlags
UINT32 m_scanFlags
Flags for the single scan belonging to this scanner info.
Definition: ScannerInfo.hpp:239
datatypes::ScannerInfo::m_startAngle
double m_startAngle
Definition: ScannerInfo.hpp:216
datatypes::ScannerInfo::m_scanEndTime
Time m_scanEndTime
End timestamp of the scan received by this scanner.
Definition: ScannerInfo.hpp:224
datatypes::ScannerInfo::m_scanStartTime
Time m_scanStartTime
Start timestamp of the scan received by this scanner.
Definition: ScannerInfo.hpp:222
datatypes::ScannerInfo::ScannerInfo
ScannerInfo()
Empty constructor.
Definition: ScannerInfo.cpp:18
datatypes::toString
std::string toString(const PositionWGS84::PositionWGS84SourceType &type)
Definition: PositionWGS84.cpp:408
datatypes::ScannerInfo::scannerTypeToString
static std::string scannerTypeToString(UINT8 st)
Definition: ScannerInfo.cpp:39
datatypes::ScannerInfo::setBeamTilt
void setBeamTilt(double tilt)
Definition: ScannerInfo.cpp:113
printError
void printError(std::string message)
Definition: errorhandler.cpp:88
datatypes::ScannerInfo::setProcessingFlags
void setProcessingFlags(const UINT16 processingFlags)
Definition: ScannerInfo.cpp:73
datatypes::ScannerInfo::m_scanNumber
UINT16 m_scanNumber
Definition: ScannerInfo.hpp:214
datatypes::ScannerInfo::m_scanFrequency
double m_scanFrequency
Scan frequency of this scanner.
Definition: ScannerInfo.hpp:235
datatypes::ScannerInfo::m_mountingPosition
Position3D m_mountingPosition
Definition: ScannerInfo.hpp:241
Time
Definition: Time.hpp:44
Scan.hpp
datatypes::ScannerInfo::~ScannerInfo
~ScannerInfo()
Definition: ScannerInfo.cpp:35
isNaN
bool isNaN(floatT x)
Checks if a floating point value is Not-a-Number (NaN)
Definition: MathToolbox.hpp:64
ScannerInfo.hpp
datatypes::Scannertype_UNKNOWN
@ Scannertype_UNKNOWN
Definition: ScannerInfo.hpp:18
Datatype_Scannerinfo
@ Datatype_Scannerinfo
Definition: BasicDatatypes.hpp:61
datatypes::ScannerInfo::m_endAngle
double m_endAngle
Definition: ScannerInfo.hpp:217
datatypes::ScannerInfo::m_processingFlags
UINT16 m_processingFlags
Definition: ScannerInfo.hpp:219
datatypes
Definition: BasicDatatypes.hpp:91
PI
#define PI
Definition: BasicDatatypes.hpp:34
datatypes::ScannerInfo::setEndAngle
void setEndAngle(double v)
Definition: ScannerInfo.cpp:101


libsick_ldmrs
Author(s): SICK AG , Martin Günther , Jochen Sprickerhof
autogenerated on Wed Oct 26 2022 02:11:57