Mech-Eye API 2.5.1
API reference documentation for Mech-Eye 3D Laser Profiler
Loading...
Searching...
No Matches
ScanParameters.h
Go to the documentation of this file.
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
36namespace mmind {
37
38namespace eye {
39
40namespace trigger_settings {
42{
43public:
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
54
55 enum struct Value {
56 Frame_Based = 0,
57 Nonstop = 1,
58 };
59};
60
62{
63public:
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
72
73 enum struct Value {
76 };
77};
78
80{
81public:
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
90
91 enum struct Value {
93 Encoder,
94 };
95};
96
98{
99public:
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
109
110 static constexpr const char* unit = "Hz";
111};
112
114{
115public:
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
124
125 static constexpr const char* unit = "Hz";
126};
127
129{
130public:
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
146
147 static constexpr const char* unit = "us";
148};
149
151{
152public:
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
162
163 enum struct Value {
166 Both,
167 };
168};
169
171{
172public:
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
183
184 enum struct Value {
188 };
189};
190
192{
193public:
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
200};
201} // namespace trigger_settings
202
203namespace scan_settings {
204
206{
207public:
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
219};
220
222{
223public:
224 static constexpr const char* name = "DataPointsPerProfile";
225
226 static constexpr const char* description = "The number of data points in a profile.";
227
229
230 static constexpr const char* unit = "";
231};
232
234{
235public:
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
246
247 static constexpr const char* unit = "us";
248};
249
251{
252public:
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
264
265 static constexpr const char* unit = "ms";
266};
267
269{
270public:
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
281
282 static constexpr const char* unit = "ms";
283};
284
285} // namespace scan_settings
286
287namespace point_cloud_resolutions {
289{
290public:
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
298
299 static constexpr const char* unit = "um";
300};
301
303{
304public:
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
312
313 static constexpr const char* unit = "um";
314};
315} // namespace point_cloud_resolutions
316
317namespace correction {
319{
320public:
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
328};
329
331{
332public:
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
340};
341
343{
344public:
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
350
351 static constexpr const char* unit = "degree";
352};
353
355{
356public:
357 static constexpr const char* name = "HeightCorrectionRatio";
358
359 static constexpr const char* description = "Correct the Z values of the profile.";
360
362};
363} // namespace correction
364
365namespace transformation {
367{
368public:
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
377};
378} // namespace transformation
379
380} // namespace eye
381} // namespace mmind
Type
Describes the device parameter data types.
Definition Parameter.h:30
@ _Int
Integer type.
Definition Parameter.h:31
@ _Float
Double type.
Definition Parameter.h:32
@ _Enum
Enumeration type.
Definition Parameter.h:34
@ _Bool
Boolean type.
Definition Parameter.h:33
@ _FloatArray
Vector of double types.
Definition Parameter.h:37
Definition ScanParameters.h:331
static constexpr const char * description
Definition ScanParameters.h:335
static constexpr const char * name
Definition ScanParameters.h:333
static constexpr Parameter::Type type
Definition ScanParameters.h:339
Definition ScanParameters.h:319
static constexpr const char * description
Definition ScanParameters.h:323
static constexpr const char * name
Definition ScanParameters.h:321
static constexpr Parameter::Type type
Definition ScanParameters.h:327
Definition ScanParameters.h:355
static constexpr const char * description
Definition ScanParameters.h:359
static constexpr const char * name
Definition ScanParameters.h:357
static constexpr Parameter::Type type
Definition ScanParameters.h:361
Definition ScanParameters.h:343
static constexpr const char * description
Definition ScanParameters.h:347
static constexpr const char * name
Definition ScanParameters.h:345
static constexpr const char * unit
Definition ScanParameters.h:351
static constexpr Parameter::Type type
Definition ScanParameters.h:349
static constexpr const char * description
Definition ScanParameters.h:293
static constexpr const char * name
Definition ScanParameters.h:291
static constexpr const char * unit
Definition ScanParameters.h:299
static constexpr Parameter::Type type
Definition ScanParameters.h:297
static constexpr const char * description
Definition ScanParameters.h:307
static constexpr const char * name
Definition ScanParameters.h:305
static constexpr const char * unit
Definition ScanParameters.h:313
static constexpr Parameter::Type type
Definition ScanParameters.h:311
static constexpr const char * description
Definition ScanParameters.h:255
static constexpr const char * name
Definition ScanParameters.h:253
static constexpr const char * unit
Definition ScanParameters.h:265
static constexpr Parameter::Type type
Definition ScanParameters.h:263
static constexpr const char * description
Definition ScanParameters.h:273
static constexpr const char * name
Definition ScanParameters.h:271
static constexpr const char * unit
Definition ScanParameters.h:282
static constexpr Parameter::Type type
Definition ScanParameters.h:280
static constexpr const char * description
Definition ScanParameters.h:226
static constexpr const char * name
Definition ScanParameters.h:224
static constexpr const char * unit
Definition ScanParameters.h:230
static constexpr Parameter::Type type
Definition ScanParameters.h:228
Definition ScanParameters.h:234
static constexpr const char * description
Definition ScanParameters.h:238
static constexpr const char * name
Definition ScanParameters.h:236
static constexpr const char * unit
Definition ScanParameters.h:247
static constexpr Parameter::Type type
Definition ScanParameters.h:245
Definition ScanParameters.h:206
static constexpr const char * description
Definition ScanParameters.h:210
static constexpr const char * name
Definition ScanParameters.h:208
static constexpr Parameter::Type type
Definition ScanParameters.h:218
static constexpr const char * description
Definition ScanParameters.h:371
static constexpr const char * name
Definition ScanParameters.h:369
static constexpr Parameter::Type type
Definition ScanParameters.h:376
static constexpr const char * description
Definition ScanParameters.h:46
static constexpr const char * name
Definition ScanParameters.h:44
static constexpr Parameter::Type type
Definition ScanParameters.h:53
static constexpr const char * description
Definition ScanParameters.h:66
static constexpr const char * name
Definition ScanParameters.h:64
static constexpr Parameter::Type type
Definition ScanParameters.h:71
static constexpr const char * description
Definition ScanParameters.h:155
static constexpr const char * name
Definition ScanParameters.h:153
static constexpr Parameter::Type type
Definition ScanParameters.h:161
static constexpr const char * description
Definition ScanParameters.h:196
static constexpr const char * name
Definition ScanParameters.h:194
static constexpr Parameter::Type type
Definition ScanParameters.h:199
static constexpr const char * description
Definition ScanParameters.h:175
static constexpr const char * name
Definition ScanParameters.h:173
static constexpr Parameter::Type type
Definition ScanParameters.h:182
static constexpr const char * description
Definition ScanParameters.h:84
static constexpr const char * name
Definition ScanParameters.h:82
static constexpr Parameter::Type type
Definition ScanParameters.h:89
Definition ScanParameters.h:114
static constexpr const char * description
Definition ScanParameters.h:118
static constexpr const char * name
Definition ScanParameters.h:116
static constexpr const char * unit
Definition ScanParameters.h:125
static constexpr Parameter::Type type
Definition ScanParameters.h:123
static constexpr const char * description
Definition ScanParameters.h:102
static constexpr const char * name
Definition ScanParameters.h:100
static constexpr const char * unit
Definition ScanParameters.h:110
static constexpr Parameter::Type type
Definition ScanParameters.h:108
Definition ScanParameters.h:129
static constexpr const char * description
Definition ScanParameters.h:133
static constexpr const char * name
Definition ScanParameters.h:131
static constexpr const char * unit
Definition ScanParameters.h:147
static constexpr Parameter::Type type
Definition ScanParameters.h:145
Definition Array2D.h:8