Mech-Eye API 2.4.0
API reference documentation for Mech-Eye 3D Laser Profiler
Loading...
Searching...
No Matches
ScanParameters.h
1#pragma once
2#include "Parameter.h"
3
4namespace mmind {
5
6namespace eye {
7
8namespace trigger_settings {
9
11{
12public:
13 static constexpr const char* name = "DataAcquisitionTriggerSource";
14
15 static constexpr const char* description =
16 "Select the source of the signals that trigger the scan of a single frame.\nIf you use "
17 "external input signal to trigger scanning, select \"External\".\nIf you need to trigger "
18 "scanning with software, select \"Software\".";
19
20 static constexpr Parameter::Type type = Parameter::Type::_Enum;
21
22 enum struct Value {
23 Software,
24 External,
25 };
26};
27
29{
30public:
31 static constexpr const char* name = "LineScanTriggerSource";
32
33 static constexpr const char* description =
34 "Select the source of the signals that trigger the scan of a single line.\nIf you use "
35 "encoder to trigger scanning, select \"Encoder\".\nIf you need to trigger scanning at a "
36 "fixed rate, select \"FixedRate\" and adjust \"SoftwareTriggerRate\".";
37
38 static constexpr Parameter::Type type = Parameter::Type::_Enum;
39
40 enum struct Value {
41 FixedRate,
42 Encoder,
43 };
44};
45
47{
48public:
49 static constexpr const char* name = "SoftwareTriggerRate";
50
51 static constexpr const char* description =
52 "When \"LineScanTriggerSource\" is set to \"FixedRate\", set the fixed rate at which "
53 "the laser profiler is triggered to scan.\n\nThe maximum value of this parameter is the "
54 "current \"MaxScanRate\". \"SoftwareTriggerRate\" is unavailable when "
55 "\"LineScanTriggerSource\" is set to \"Encoder\".";
56
57 static constexpr Parameter::Type type = Parameter::Type::_Float;
58
59 static constexpr const char* unit = "Hz";
60};
61
63{
64public:
65 static constexpr const char* name = "MaxScanRate";
66
67 static constexpr const char* description =
68 "The maximum scan rate that the laser profiler can reach. The maximum scan rate is "
69 "affected by the following parameters: \"ExposureTime\", \"ZDirectionRoi\", and "
70 "\"TriggerDelay\"";
71
72 static constexpr Parameter::Type type = Parameter::Type::_Float;
73
74 static constexpr const char* unit = "Hz";
75};
76
78{
79public:
80 static constexpr const char* name = "TriggerDelay";
81
82 static constexpr const char* description =
83 "This parameter is only effective for firmware 2.4.0 and above.\n"
84 "Set the delay time between receiving a line scan trigger signal and emitting laser "
85 "light.\n\n"
86 "Note:\n"
87 "* Only adjust this parameter in the following situation: Multiple laser profilers are "
88 "used to scan the same target object, and their FOVs overlap. The laser profilers will "
89 "interfere with each other if they emit laser light at the same time.\n"
90 "* Increasing this parameter will reduce the max scan rate.\n"
91 "* The laser profiler starts exposure 10 μs after emitting laser light to ensure stable "
92 "brightness of the laser lines in the raw image.";
93
94 static constexpr Parameter::Type type = Parameter::Type::_Int;
95
96 static constexpr const char* unit = "us";
97};
98
100{
101public:
102 static constexpr const char* name = "EncoderTriggerDirection";
103
104 static constexpr const char* description =
105 "Select the encoder motion direction that triggers scanning.\nChannelALeading: Scanning "
106 "is triggered when channel A is leading.\nChannelBLeading: Scanning is triggered when "
107 "channel B is leading. \nBoth: Scanning is triggered when either channel A or channel B is "
108 "leading.";
109
110 static constexpr Parameter::Type type = Parameter::Type::_Enum;
111
112 enum struct Value {
113 ChannelALeading,
114 ChannelBLeading,
115 Both,
116 };
117};
118
120{
121public:
122 static constexpr const char* name = "EncoderTriggerSignalCountingMode";
123
124 static constexpr const char* description =
125 "Set the number of signals to be counted in an encoder cycle. Counted signals are used to "
126 "trigger scanning.\nNote: This parameter affects the adjustment of "
127 "\"EncoderTriggerInterval\".\n\nMultiple_1: counts 1 signal in an encoder "
128 "cycle.\nMULTIPLE_2: counts 2 signals in an encoder cycle.\nMULTIPLE_4: counts 3 signals "
129 "in an encoder cycle.";
130
131 static constexpr Parameter::Type type = Parameter::Type::_Enum;
132
133 enum struct Value {
134 Multiple_1,
135 Multiple_2,
136 Multiple_4,
137 };
138};
139
141{
142public:
143 static constexpr const char* name = "EncoderTriggerInterval";
144
145 static constexpr const char* description =
146 "Set the number of trigger signals needed for scanning one line.";
147
148 static constexpr Parameter::Type type = Parameter::Type::_Int;
149};
150} // namespace trigger_settings
151
152namespace scan_settings {
153
155{
156public:
157 static constexpr const char* name = "ScanLineCount";
158
159 static constexpr const char* description =
160 "Set the number of profiles needed to generate one intensity image/depth map.\nMake sure "
161 "that the set value can cover one target object completely.";
162
163 static constexpr Parameter::Type type = Parameter::Type::_Int;
164};
165
167{
168public:
169 static constexpr const char* name = "DataPointsPerProfile";
170
171 static constexpr const char* description = "The number of data points in a profile.";
172
173 static constexpr Parameter::Type type = Parameter::Type::_Int;
174
175 static constexpr const char* unit = "";
176};
177
179{
180public:
181 static constexpr const char* name = "ExposureDelay";
182
183 static constexpr const char* description =
184 "This parameter is only effective for firmware 2.3.4 and below.\nSet the delay time "
185 "between laser emission and start of exposure.\n\nLarger exposure delay "
186 "results in more stable brightness of the laser lines in the raw image, thus more stable "
187 "quality of the intensity image and depth map. However, the \"MaxScanRate\" will be "
188 "reduced.";
189
190 static constexpr Parameter::Type type = Parameter::Type::_Int;
191
192 static constexpr const char* unit = "us";
193};
194
196{
197public:
198 static constexpr const char* name = "BatchRetrievalTimeout";
199
200 static constexpr const char* description =
201 "Set the timeout period for retrieving a batch of data. If no batches are available for "
202 "retrieval within the set timeout period, the current round of data acquisition is "
203 "automatically stopped.\nThis timeout period should be no shorter than the amount of time "
204 "needed for scanning 16 lines. If line scan is triggered at a slow rate, increase this "
205 "parameter.";
206
207 static constexpr Parameter::Type type = Parameter::Type::_Int;
208
209 static constexpr const char* unit = "ms";
210};
211
213{
214public:
215 static constexpr const char* name = "CallbackRetrievalTimeout";
216
217 static constexpr const char* description =
218 "Set the timeout period for retrieving data when using a callback function. If none or "
219 "only some of the data is retrieved within the set timeout period, the current round of "
220 "data acquisition is automatically stopped. The amount of data to be retrieved is "
221 "determined by the \"ScanLineCount\" parameter.\nA value of 0 or -1 corresponds to an "
222 "infinite timeout period.";
223
224 static constexpr Parameter::Type type = Parameter::Type::_Int;
225
226 static constexpr const char* unit = "ms";
227};
228
229} // namespace scan_settings
230
231namespace point_cloud_resolutions {
233{
234public:
235 static constexpr const char* name = "XAxisResolution";
236
237 static constexpr const char* description =
238 "Sets the scan data resolution in the X direction, which is the distance between two "
239 "neighboring points along the direction of the laser line.";
240
241 static constexpr Parameter::Type type = Parameter::Type::_Float;
242
243 static constexpr const char* unit = "um";
244};
245
247{
248public:
249 static constexpr const char* name = "YResolution";
250
251 static constexpr const char* description =
252 "Sets the point cloud resolution in the Y-axis direction, which is the distance between "
253 "two neighboring points along the travel direction of the target object.";
254
255 static constexpr Parameter::Type type = Parameter::Type::_Float;
256
257 static constexpr const char* unit = "um";
258};
259} // namespace point_cloud_resolutions
260
261namespace correction {
262
264{
265public:
266 static constexpr const char* name = "TiltCorrectionAngle";
267
268 static constexpr const char* description = "Correct the tilt of the profile around the Y-axis.";
269
270 static constexpr Parameter::Type type = Parameter::Type::_Float;
271
272 static constexpr const char* unit = "degree";
273};
274
276{
277public:
278 static constexpr const char* name = "HeightCorrectionRatio";
279
280 static constexpr const char* description = "Correct the Z values of the profile.";
281
282 static constexpr Parameter::Type type = Parameter::Type::_Float;
283};
284} // namespace correction
285
286namespace transformation {
288{
289public:
290 static constexpr const char* name = "CoordinateTransformation";
291
292 static constexpr const char* description =
293 "The CoordinateTransformation, which represents the transformation matrix from the "
294 "camera coordinate system to a custom coordinate system. It can change the xyz values of "
295 "the point cloud.";
296
297 static constexpr Parameter::Type type = Parameter::Type::_FloatArray;
298};
299} // namespace transformation
300
301} // namespace eye
302} // 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
@ _FloatArray
Vector of double types.
Definition Parameter.h:37