Mech-Eye API
2.5.2
API reference documentation for Mech-Eye 3D Laser Profiler
Loading...
Searching...
No Matches
profiler
parameters
ScanParameters.h
1
/*******************************************************************************
2
*BSD 3-Clause License
3
*
4
*Copyright (c) 2016-2025, Mech-Mind Robotics Technologies Co., Ltd.
5
*All rights reserved.
6
*
7
*Redistribution and use in source and binary forms, with or without
8
*modification, are permitted provided that the following conditions are met:
9
*
10
*1. Redistributions of source code must retain the above copyright notice, this
11
* list of conditions and the following disclaimer.
12
*
13
*2. Redistributions in binary form must reproduce the above copyright notice,
14
* this list of conditions and the following disclaimer in the documentation
15
* and/or other materials provided with the distribution.
16
*
17
*3. Neither the name of the copyright holder nor the names of its
18
* contributors may be used to endorse or promote products derived from
19
* this software without specific prior written permission.
20
*
21
*THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
*AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
*IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
*DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
*FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
*DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
*SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
*CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
*OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
*OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
******************************************************************************/
32
33
#pragma once
34
#include "Parameter.h"
35
36
namespace
mmind {
37
38
namespace
eye {
39
40
namespace
trigger_settings {
41
class
DataAcquisitionMethod
42
{
43
public
:
44
static
constexpr
const
char
* name =
"DataAcquisitionMethod"
;
45
46
static
constexpr
const
char
* description =
47
"This parameter determines how to generate data.\n\nFrame_Based: Generates one intensity "
48
"image and one depth map each time data acquisition is triggered.\nNonStop: Continuously "
49
"scans the target object and returns fixed-length data segments after data acquisition is "
50
"triggered.\n\nNote:\n* The length of the intensity image and depth map or the data "
51
"segment is set by the \"ScanLineCount\" parameter in the \"scan_settings\" namespace."
;
52
53
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
54
55
enum struct
Value {
56
Frame_Based = 0,
57
Nonstop = 1,
58
};
59
};
60
61
class
DataAcquisitionTriggerSource
62
{
63
public
:
64
static
constexpr
const
char
* name =
"DataAcquisitionTriggerSource"
;
65
66
static
constexpr
const
char
* description =
67
"Select the source of the signals that trigger the scan of a single frame.\nIf you use "
68
"external input signal to trigger scanning, select \"External\".\nIf you need to trigger "
69
"scanning with software, select \"Software\"."
;
70
71
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
72
73
enum struct
Value {
74
Software,
75
External,
76
};
77
};
78
79
class
LineScanTriggerSource
80
{
81
public
:
82
static
constexpr
const
char
* name =
"LineScanTriggerSource"
;
83
84
static
constexpr
const
char
* description =
85
"Select the source of the signals that trigger the scan of a single line.\nIf you use "
86
"encoder to trigger scanning, select \"Encoder\".\nIf you need to trigger scanning at a "
87
"fixed rate, select \"FixedRate\" and adjust \"SoftwareTriggerRate\"."
;
88
89
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
90
91
enum struct
Value {
92
FixedRate,
93
Encoder,
94
};
95
};
96
97
class
SoftwareTriggerRate
98
{
99
public
:
100
static
constexpr
const
char
* name =
"SoftwareTriggerRate"
;
101
102
static
constexpr
const
char
* description =
103
"When \"LineScanTriggerSource\" is set to \"FixedRate\", set the fixed rate at which "
104
"the laser profiler is triggered to scan.\n\nThe maximum value of this parameter is the "
105
"current \"MaxScanRate\". \"SoftwareTriggerRate\" is unavailable when "
106
"\"LineScanTriggerSource\" is set to \"Encoder\"."
;
107
108
static
constexpr
Parameter::Type
type =
Parameter::Type::_Float
;
109
110
static
constexpr
const
char
* unit =
"Hz"
;
111
};
112
113
class
MaxScanRate
114
{
115
public
:
116
static
constexpr
const
char
* name =
"MaxScanRate"
;
117
118
static
constexpr
const
char
* description =
119
"The maximum scan rate that the laser profiler can reach. The maximum scan rate is "
120
"affected by the following parameters: \"ExposureTime\", \"ZDirectionRoi\", and "
121
"\"TriggerDelay\""
;
122
123
static
constexpr
Parameter::Type
type =
Parameter::Type::_Float
;
124
125
static
constexpr
const
char
* unit =
"Hz"
;
126
};
127
128
class
TriggerDelay
129
{
130
public
:
131
static
constexpr
const
char
* name =
"TriggerDelay"
;
132
133
static
constexpr
const
char
* description =
134
"This parameter is only effective for firmware 2.4.0 and above.\n"
135
"Set the delay time between receiving a line scan trigger signal and emitting laser "
136
"light.\n\n"
137
"Note:\n"
138
"* Only adjust this parameter in the following situation: Multiple laser profilers are "
139
"used to scan the same target object, and their FOVs overlap. The laser profilers will "
140
"interfere with each other if they emit laser light at the same time.\n"
141
"* Increasing this parameter will reduce the max scan rate.\n"
142
"* The laser profiler starts exposure 10 μs after emitting laser light to ensure stable "
143
"brightness of the laser lines in the raw image."
;
144
145
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
146
147
static
constexpr
const
char
* unit =
"us"
;
148
};
149
150
class
EncoderTriggerDirection
151
{
152
public
:
153
static
constexpr
const
char
* name =
"EncoderTriggerDirection"
;
154
155
static
constexpr
const
char
* description =
156
"Select the encoder motion direction that triggers scanning.\nChannelALeading: Scanning "
157
"is triggered when channel A is leading.\nChannelBLeading: Scanning is triggered when "
158
"channel B is leading. \nBoth: Scanning is triggered when either channel A or channel B is "
159
"leading."
;
160
161
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
162
163
enum struct
Value {
164
ChannelALeading,
165
ChannelBLeading,
166
Both,
167
};
168
};
169
170
class
EncoderTriggerSignalCountingMode
171
{
172
public
:
173
static
constexpr
const
char
* name =
"EncoderTriggerSignalCountingMode"
;
174
175
static
constexpr
const
char
* description =
176
"Set the number of signals to be counted in an encoder cycle. Counted signals are used to "
177
"trigger scanning.\nNote: This parameter affects the adjustment of "
178
"\"EncoderTriggerInterval\".\n\nMultiple_1: counts 1 signal in an encoder "
179
"cycle.\nMULTIPLE_2: counts 2 signals in an encoder cycle.\nMULTIPLE_4: counts 4 signals "
180
"in an encoder cycle."
;
181
182
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
183
184
enum struct
Value {
185
Multiple_1,
186
Multiple_2,
187
Multiple_4,
188
};
189
};
190
191
class
EncoderTriggerInterval
192
{
193
public
:
194
static
constexpr
const
char
* name =
"EncoderTriggerInterval"
;
195
196
static
constexpr
const
char
* description =
197
"Set the number of trigger signals needed for scanning one line."
;
198
199
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
200
};
201
}
// namespace trigger_settings
202
203
namespace
scan_settings {
204
205
class
ScanLineCount
206
{
207
public
:
208
static
constexpr
const
char
* name =
"ScanLineCount"
;
209
210
static
constexpr
const
char
* description =
211
"Set the number of profiles in the acquired data.\n\nWhen the \"DataAcquisitionMethod\" "
212
"parameter in the \"trigger_settings\" namespace is set to \"Frame_Based\", this "
213
"parameter sets the number of profiles needed to generate one intensity image/depth "
214
"map.\nMake sure that the set value can cover one target object completely.\n\nWhen the "
215
"\"DataAcquisitionMethod\" parameter in the \"trigger_settings\" namespace is set to "
216
"\"Nonstop\", this parameter sets the length of the returned data segments."
;
217
218
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
219
};
220
221
class
DataPointsPerProfile
222
{
223
public
:
224
static
constexpr
const
char
* name =
"DataPointsPerProfile"
;
225
226
static
constexpr
const
char
* description =
"The number of data points in a profile."
;
227
228
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
229
230
static
constexpr
const
char
* unit =
""
;
231
};
232
233
class
ExposureDelay
234
{
235
public
:
236
static
constexpr
const
char
* name =
"ExposureDelay"
;
237
238
static
constexpr
const
char
* description =
239
"This parameter is only effective for firmware 2.3.4 and below.\nSet the delay time "
240
"between laser emission and start of exposure.\n\nLarger exposure delay "
241
"results in more stable brightness of the laser lines in the raw image, thus more stable "
242
"quality of the intensity image and depth map. However, the \"MaxScanRate\" will be "
243
"reduced."
;
244
245
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
246
247
static
constexpr
const
char
* unit =
"us"
;
248
};
249
250
class
BatchRetrievalTimeout
251
{
252
public
:
253
static
constexpr
const
char
* name =
"BatchRetrievalTimeout"
;
254
255
static
constexpr
const
char
* description =
256
"Set the timeout period for retrieving a batch of data. If no batches are available for "
257
"retrieval within the set timeout period, the current round of data acquisition is "
258
"automatically stopped.\nFor firmware version 2.4.1 and below, this timeout should be at "
259
"least the time required to scan 16 lines. For firmware version 2.5.0 and above, it should "
260
"be at least the time needed to scan a single line. If line scan is triggered at a slow "
261
"rate, increase this parameter."
;
262
263
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
264
265
static
constexpr
const
char
* unit =
"ms"
;
266
};
267
268
class
CallbackRetrievalTimeout
269
{
270
public
:
271
static
constexpr
const
char
* name =
"CallbackRetrievalTimeout"
;
272
273
static
constexpr
const
char
* description =
274
"Set the timeout period for retrieving data when using a callback function. If none or "
275
"only some of the data is retrieved within the set timeout period, the current round of "
276
"data acquisition is automatically stopped. The amount of data to be retrieved is "
277
"determined by the \"ScanLineCount\" parameter.\nA value of 0 or -1 corresponds to an "
278
"infinite timeout period."
;
279
280
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
281
282
static
constexpr
const
char
* unit =
"ms"
;
283
};
284
285
}
// namespace scan_settings
286
287
namespace
point_cloud_resolutions {
288
class
XAxisResolution
289
{
290
public
:
291
static
constexpr
const
char
* name =
"XAxisResolution"
;
292
293
static
constexpr
const
char
* description =
294
"Sets the scan data resolution in the X direction, which is the distance between two "
295
"neighboring points along the direction of the laser line."
;
296
297
static
constexpr
Parameter::Type
type =
Parameter::Type::_Float
;
298
299
static
constexpr
const
char
* unit =
"um"
;
300
};
301
302
class
YResolution
303
{
304
public
:
305
static
constexpr
const
char
* name =
"YResolution"
;
306
307
static
constexpr
const
char
* description =
308
"Sets the point cloud resolution in the Y-axis direction, which is the distance between "
309
"two neighboring points along the travel direction of the target object."
;
310
311
static
constexpr
Parameter::Type
type =
Parameter::Type::_Float
;
312
313
static
constexpr
const
char
* unit =
"um"
;
314
};
315
}
// namespace point_cloud_resolutions
316
317
namespace
correction {
318
class
EnableTiltCorrection
319
{
320
public
:
321
static
constexpr
const
char
* name =
"EnableTiltCorrection"
;
322
323
static
constexpr
const
char
* description =
324
"Enable this parameter to apply the tilt correction result to the profile. Acquire data "
325
"again to see the effect."
;
326
327
static
constexpr
Parameter::Type
type =
Parameter::Type::_Bool
;
328
};
329
330
class
EnableHeightCorrection
331
{
332
public
:
333
static
constexpr
const
char
* name =
"EnableHeightCorrection"
;
334
335
static
constexpr
const
char
* description =
336
"Enable this parameter to apply the height correction result to the profile. Acquire data "
337
"again to see the effect."
;
338
339
static
constexpr
Parameter::Type
type =
Parameter::Type::_Bool
;
340
};
341
342
class
TiltCorrectionAngle
343
{
344
public
:
345
static
constexpr
const
char
* name =
"TiltCorrectionAngle"
;
346
347
static
constexpr
const
char
* description =
"Correct the tilt of the profile around the Y-axis."
;
348
349
static
constexpr
Parameter::Type
type =
Parameter::Type::_Float
;
350
351
static
constexpr
const
char
* unit =
"degree"
;
352
};
353
354
class
HeightCorrectionRatio
355
{
356
public
:
357
static
constexpr
const
char
* name =
"HeightCorrectionRatio"
;
358
359
static
constexpr
const
char
* description =
"Correct the Z values of the profile."
;
360
361
static
constexpr
Parameter::Type
type =
Parameter::Type::_Float
;
362
};
363
}
// namespace correction
364
365
namespace
transformation {
366
class
CoordinateTransformation
367
{
368
public
:
369
static
constexpr
const
char
* name =
"CoordinateTransformation"
;
370
371
static
constexpr
const
char
* description =
372
"The CoordinateTransformation, which represents the transformation matrix from the "
373
"camera coordinate system to a custom coordinate system. It can change the xyz values of "
374
"the point cloud."
;
375
376
static
constexpr
Parameter::Type
type =
Parameter::Type::_FloatArray
;
377
};
378
}
// namespace transformation
379
380
}
// namespace eye
381
}
// namespace mmind
mmind::eye::Parameter::Type
Type
Describes the device parameter data types.
Definition
Parameter.h:30
mmind::eye::Parameter::_Int
@ _Int
Integer type.
Definition
Parameter.h:31
mmind::eye::Parameter::_Enum
@ _Enum
Enumeration type.
Definition
Parameter.h:34
mmind::eye::Parameter::_Float
@ _Float
Double type.
Definition
Parameter.h:32
mmind::eye::Parameter::_Bool
@ _Bool
Boolean type.
Definition
Parameter.h:33
mmind::eye::Parameter::_FloatArray
@ _FloatArray
Vector of double types.
Definition
Parameter.h:37
mmind::eye::correction::EnableHeightCorrection
Definition
ScanParameters.h:331
mmind::eye::correction::EnableTiltCorrection
Definition
ScanParameters.h:319
mmind::eye::correction::HeightCorrectionRatio
Definition
ScanParameters.h:355
mmind::eye::correction::TiltCorrectionAngle
Definition
ScanParameters.h:343
mmind::eye::point_cloud_resolutions::XAxisResolution
Definition
ScanParameters.h:289
mmind::eye::point_cloud_resolutions::YResolution
Definition
ScanParameters.h:303
mmind::eye::scan_settings::BatchRetrievalTimeout
Definition
ScanParameters.h:251
mmind::eye::scan_settings::CallbackRetrievalTimeout
Definition
ScanParameters.h:269
mmind::eye::scan_settings::DataPointsPerProfile
Definition
ScanParameters.h:222
mmind::eye::scan_settings::ExposureDelay
Definition
ScanParameters.h:234
mmind::eye::scan_settings::ScanLineCount
Definition
ScanParameters.h:206
mmind::eye::transformation::CoordinateTransformation
Definition
ScanParameters.h:367
mmind::eye::trigger_settings::DataAcquisitionMethod
Definition
ScanParameters.h:42
mmind::eye::trigger_settings::DataAcquisitionTriggerSource
Definition
ScanParameters.h:62
mmind::eye::trigger_settings::EncoderTriggerDirection
Definition
ScanParameters.h:151
mmind::eye::trigger_settings::EncoderTriggerInterval
Definition
ScanParameters.h:192
mmind::eye::trigger_settings::EncoderTriggerSignalCountingMode
Definition
ScanParameters.h:171
mmind::eye::trigger_settings::LineScanTriggerSource
Definition
ScanParameters.h:80
mmind::eye::trigger_settings::MaxScanRate
Definition
ScanParameters.h:114
mmind::eye::trigger_settings::SoftwareTriggerRate
Definition
ScanParameters.h:98
mmind::eye::trigger_settings::TriggerDelay
Definition
ScanParameters.h:129
Generated by
1.10.0