Mech-Eye API 2.5.0
API reference documentation for Mech-Eye 3D Laser Profiler
All Classes Functions Variables Typedefs Enumerations Enumerator Pages
ScanParameters.h
1#pragma once
2#include "Parameter.h"
3
4namespace mmind {
5
6namespace eye {
7
8namespace trigger_settings {
10{
11public:
12 static constexpr const char* name = "DataAcquisitionMethod";
13
14 static constexpr const char* description =
15 "This parameter determines how to generate data.\n\nFrame_Based: Generates one intensity "
16 "image and one depth map each time data acquisition is triggered.\nNonStop: Continuously "
17 "scans the target object and returns fixed-length data segments after data acquisition is "
18 "triggered.\n\nNote:\n* The length of the intensity image and depth map or the data "
19 "segment is set by the \"ScanLineCount\" parameter in the \"scan_settings\" namespace.";
20
21 static constexpr Parameter::Type type = Parameter::Type::_Enum;
22
23 enum struct Value {
24 Frame_Based = 0,
25 Nonstop = 1,
26 };
27};
28
30{
31public:
32 static constexpr const char* name = "DataAcquisitionTriggerSource";
33
34 static constexpr const char* description =
35 "Select the source of the signals that trigger the scan of a single frame.\nIf you use "
36 "external input signal to trigger scanning, select \"External\".\nIf you need to trigger "
37 "scanning with software, select \"Software\".";
38
39 static constexpr Parameter::Type type = Parameter::Type::_Enum;
40
41 enum struct Value {
42 Software,
43 External,
44 };
45};
46
48{
49public:
50 static constexpr const char* name = "LineScanTriggerSource";
51
52 static constexpr const char* description =
53 "Select the source of the signals that trigger the scan of a single line.\nIf you use "
54 "encoder to trigger scanning, select \"Encoder\".\nIf you need to trigger scanning at a "
55 "fixed rate, select \"FixedRate\" and adjust \"SoftwareTriggerRate\".";
56
57 static constexpr Parameter::Type type = Parameter::Type::_Enum;
58
59 enum struct Value {
60 FixedRate,
61 Encoder,
62 };
63};
64
66{
67public:
68 static constexpr const char* name = "SoftwareTriggerRate";
69
70 static constexpr const char* description =
71 "When \"LineScanTriggerSource\" is set to \"FixedRate\", set the fixed rate at which "
72 "the laser profiler is triggered to scan.\n\nThe maximum value of this parameter is the "
73 "current \"MaxScanRate\". \"SoftwareTriggerRate\" is unavailable when "
74 "\"LineScanTriggerSource\" is set to \"Encoder\".";
75
76 static constexpr Parameter::Type type = Parameter::Type::_Float;
77
78 static constexpr const char* unit = "Hz";
79};
80
82{
83public:
84 static constexpr const char* name = "MaxScanRate";
85
86 static constexpr const char* description =
87 "The maximum scan rate that the laser profiler can reach. The maximum scan rate is "
88 "affected by the following parameters: \"ExposureTime\", \"ZDirectionRoi\", and "
89 "\"TriggerDelay\"";
90
91 static constexpr Parameter::Type type = Parameter::Type::_Float;
92
93 static constexpr const char* unit = "Hz";
94};
95
97{
98public:
99 static constexpr const char* name = "TriggerDelay";
100
101 static constexpr const char* description =
102 "This parameter is only effective for firmware 2.4.0 and above.\n"
103 "Set the delay time between receiving a line scan trigger signal and emitting laser "
104 "light.\n\n"
105 "Note:\n"
106 "* Only adjust this parameter in the following situation: Multiple laser profilers are "
107 "used to scan the same target object, and their FOVs overlap. The laser profilers will "
108 "interfere with each other if they emit laser light at the same time.\n"
109 "* Increasing this parameter will reduce the max scan rate.\n"
110 "* The laser profiler starts exposure 10 μs after emitting laser light to ensure stable "
111 "brightness of the laser lines in the raw image.";
112
113 static constexpr Parameter::Type type = Parameter::Type::_Int;
114
115 static constexpr const char* unit = "us";
116};
117
119{
120public:
121 static constexpr const char* name = "EncoderTriggerDirection";
122
123 static constexpr const char* description =
124 "Select the encoder motion direction that triggers scanning.\nChannelALeading: Scanning "
125 "is triggered when channel A is leading.\nChannelBLeading: Scanning is triggered when "
126 "channel B is leading. \nBoth: Scanning is triggered when either channel A or channel B is "
127 "leading.";
128
129 static constexpr Parameter::Type type = Parameter::Type::_Enum;
130
131 enum struct Value {
132 ChannelALeading,
133 ChannelBLeading,
134 Both,
135 };
136};
137
139{
140public:
141 static constexpr const char* name = "EncoderTriggerSignalCountingMode";
142
143 static constexpr const char* description =
144 "Set the number of signals to be counted in an encoder cycle. Counted signals are used to "
145 "trigger scanning.\nNote: This parameter affects the adjustment of "
146 "\"EncoderTriggerInterval\".\n\nMultiple_1: counts 1 signal in an encoder "
147 "cycle.\nMULTIPLE_2: counts 2 signals in an encoder cycle.\nMULTIPLE_4: counts 4 signals "
148 "in an encoder cycle.";
149
150 static constexpr Parameter::Type type = Parameter::Type::_Enum;
151
152 enum struct Value {
153 Multiple_1,
154 Multiple_2,
155 Multiple_4,
156 };
157};
158
160{
161public:
162 static constexpr const char* name = "EncoderTriggerInterval";
163
164 static constexpr const char* description =
165 "Set the number of trigger signals needed for scanning one line.";
166
167 static constexpr Parameter::Type type = Parameter::Type::_Int;
168};
169} // namespace trigger_settings
170
171namespace scan_settings {
172
174{
175public:
176 static constexpr const char* name = "ScanLineCount";
177
178 static constexpr const char* description =
179 "Set the number of profiles in the acquired data.\n\nWhen the \"DataAcquisitionMethod\" "
180 "parameter in the \"trigger_settings\" namespace is set to \"Frame_Based\", this "
181 "parameter sets the number of profiles needed to generate one intensity image/depth "
182 "map.\nMake sure that the set value can cover one target object completely.\n\nWhen the "
183 "\"DataAcquisitionMethod\" parameter in the \"trigger_settings\" namespace is set to "
184 "\"Nonstop\", this parameter sets the length of the returned data segments.";
185
186 static constexpr Parameter::Type type = Parameter::Type::_Int;
187};
188
190{
191public:
192 static constexpr const char* name = "DataPointsPerProfile";
193
194 static constexpr const char* description = "The number of data points in a profile.";
195
196 static constexpr Parameter::Type type = Parameter::Type::_Int;
197
198 static constexpr const char* unit = "";
199};
200
202{
203public:
204 static constexpr const char* name = "ExposureDelay";
205
206 static constexpr const char* description =
207 "This parameter is only effective for firmware 2.3.4 and below.\nSet the delay time "
208 "between laser emission and start of exposure.\n\nLarger exposure delay "
209 "results in more stable brightness of the laser lines in the raw image, thus more stable "
210 "quality of the intensity image and depth map. However, the \"MaxScanRate\" will be "
211 "reduced.";
212
213 static constexpr Parameter::Type type = Parameter::Type::_Int;
214
215 static constexpr const char* unit = "us";
216};
217
219{
220public:
221 static constexpr const char* name = "BatchRetrievalTimeout";
222
223 static constexpr const char* description =
224 "Set the timeout period for retrieving a batch of data. If no batches are available for "
225 "retrieval within the set timeout period, the current round of data acquisition is "
226 "automatically stopped.\nFor firmware version 2.4.1 and below, this timeout should be at "
227 "least the time required to scan 16 lines. For firmware version 2.5.0 and above, it should "
228 "be at least the time needed to scan a single line. If line scan is triggered at a slow "
229 "rate, increase this parameter.";
230
231 static constexpr Parameter::Type type = Parameter::Type::_Int;
232
233 static constexpr const char* unit = "ms";
234};
235
237{
238public:
239 static constexpr const char* name = "CallbackRetrievalTimeout";
240
241 static constexpr const char* description =
242 "Set the timeout period for retrieving data when using a callback function. If none or "
243 "only some of the data is retrieved within the set timeout period, the current round of "
244 "data acquisition is automatically stopped. The amount of data to be retrieved is "
245 "determined by the \"ScanLineCount\" parameter.\nA value of 0 or -1 corresponds to an "
246 "infinite timeout period.";
247
248 static constexpr Parameter::Type type = Parameter::Type::_Int;
249
250 static constexpr const char* unit = "ms";
251};
252
253} // namespace scan_settings
254
255namespace point_cloud_resolutions {
257{
258public:
259 static constexpr const char* name = "XAxisResolution";
260
261 static constexpr const char* description =
262 "Sets the scan data resolution in the X direction, which is the distance between two "
263 "neighboring points along the direction of the laser line.";
264
265 static constexpr Parameter::Type type = Parameter::Type::_Float;
266
267 static constexpr const char* unit = "um";
268};
269
271{
272public:
273 static constexpr const char* name = "YResolution";
274
275 static constexpr const char* description =
276 "Sets the point cloud resolution in the Y-axis direction, which is the distance between "
277 "two neighboring points along the travel direction of the target object.";
278
279 static constexpr Parameter::Type type = Parameter::Type::_Float;
280
281 static constexpr const char* unit = "um";
282};
283} // namespace point_cloud_resolutions
284
285namespace correction {
287{
288public:
289 static constexpr const char* name = "EnableTiltCorrection";
290
291 static constexpr const char* description =
292 "Enable this parameter to apply the tilt correction result to the profile. Acquire data "
293 "again to see the effect.";
294
295 static constexpr Parameter::Type type = Parameter::Type::_Bool;
296};
297
299{
300public:
301 static constexpr const char* name = "EnableHeightCorrection";
302
303 static constexpr const char* description =
304 "Enable this parameter to apply the height correction result to the profile. Acquire data "
305 "again to see the effect.";
306
307 static constexpr Parameter::Type type = Parameter::Type::_Bool;
308};
309
311{
312public:
313 static constexpr const char* name = "TiltCorrectionAngle";
314
315 static constexpr const char* description = "Correct the tilt of the profile around the Y-axis.";
316
317 static constexpr Parameter::Type type = Parameter::Type::_Float;
318
319 static constexpr const char* unit = "degree";
320};
321
323{
324public:
325 static constexpr const char* name = "HeightCorrectionRatio";
326
327 static constexpr const char* description = "Correct the Z values of the profile.";
328
329 static constexpr Parameter::Type type = Parameter::Type::_Float;
330};
331} // namespace correction
332
333namespace transformation {
335{
336public:
337 static constexpr const char* name = "CoordinateTransformation";
338
339 static constexpr const char* description =
340 "The CoordinateTransformation, which represents the transformation matrix from the "
341 "camera coordinate system to a custom coordinate system. It can change the xyz values of "
342 "the point cloud.";
343
344 static constexpr Parameter::Type type = Parameter::Type::_FloatArray;
345};
346} // namespace transformation
347
348} // namespace eye
349} // namespace mmind
Type
Describes the device parameter data types.
Definition Parameter.h:30
@ _Int
Integer type.
Definition Parameter.h:31
@ _Enum
Enumeration type.
Definition Parameter.h:34
@ _Float
Double type.
Definition Parameter.h:32
@ _Bool
Boolean type.
Definition Parameter.h:33
@ _FloatArray
Vector of double types.
Definition Parameter.h:37