GoWebScan API
 All Classes Files Functions Variables Typedefs Macros Modules Pages
GoWebScanSdkDef.h
Go to the documentation of this file.
1 /**
2 * @file GoWebScanSdkDef.h
3 * @brief Essential GoWebScan declarations.
4 *
5 * @internal
6 * Copyright (C) 2017-2022 by LMI Technologies Inc.
7 * Licensed under the MIT License.
8 * Redistributed files must retain the above copyright notice.
9 */
10 #ifndef GO_WEB_SCAN_SDK_DEF_H
11 #define GO_WEB_SCAN_SDK_DEF_H
12 
13 #include <kApi/kApiDef.h>
14 
15 #if defined (GO_WEB_SCAN_EMIT)
16 # define GoWebScanFx(TYPE) kExportFx(TYPE) ///< GoWebScanSdk function declaration helper.
17 # define GoWebScanCx(TYPE) kExportCx(TYPE) ///< GoWebScanSdk dynamic function declaration helper.
18 # define GoWebScanDx(TYPE) kExportDx(TYPE) ///< GoWebScanSdk data declaration helper.
19 #elif defined (GO_WEB_SCAN_STATIC)
20 # define GoWebScanFx(TYPE) kInFx(TYPE)
21 # define GoWebScanCx(TYPE) kInCx(TYPE)
22 # define GoWebScanDx(TYPE) kInDx(TYPE)
23 #else
24 # define GoWebScanFx(TYPE) kImportFx(TYPE)
25 # define GoWebScanCx(TYPE) kImportCx(TYPE)
26 # define GoWebScanDx(TYPE) kImportDx(TYPE)
27 #endif
28 
29 
30 #define GO_WEB_SCAN_PROFILE_CAMERA_COUNT (2) ///< Count of profile cameras per sensor.
31 #define GO_WEB_SCAN_VISION_CAMERA_COUNT (2) ///< Count of vision cameras per sensor.
32 #define GO_WEB_SCAN_MAX_TRACHEID_ANGLE (179) ///< Maximum tracheid angle (degrees).
33 #define GO_WEB_SCAN_NULL_TRACHEID_ANGLE (k8U_MAX) ///< Null tracheid angle.
34 #define GO_WEB_SCAN_NULL_TRACHEID_SCATTER (0) ///< Null tracheid scatter.
35 #define GO_WEB_SCAN_NULL_TRACHEID_AREA (0) ///< Null tracheid area.
36 #define GO_WEB_SCAN_TRACHEID_AREA_EXPORT_DIV (1.5) ///< Tracheid area is divided before sending to user application.
37 #define GO_WEB_SCAN_CONCURRENCY_DEFAULT (-2) ///< Concurrency is not specified in settings.xml.
38 #define GO_WEB_SCAN_CONCURRENCY_OPTIMIZE (-1) ///< Concurrency should be optimized for the number of CPU cores.
39 #define GO_WEB_SCAN_VISION_TERRAIN_TARGET_X_RES (200) ///< Desired X resolution of profile data used for vision resampling (aka terrains) (mils).
40 #define GO_WEB_SCAN_MIN_OBJECT_Y_EXTENT (1000) ///< Minimum detection mode object width (mils).
41 #define GO_WEB_SCAN_MIN_OBJECT_GAP (500) ///< Minimum detection mode object gap (mils).
42 #define GO_WEB_SCAN_TASK_BUFFER_TIME (1000000) ///< Approximate maximum amount of time to buffer data at input to each pipe task.
43 #define GO_WEB_SCAN_SYNC_COHERENCY_DISTANCE (12000) ///< Data from different nodes should be at least this far apart before forcing drop (mils).
44 #define GO_WEB_SCAN_SYNC_COHERENCY_TIME (400000) ///< Data from different nodes should be at least this far apart before forcing drop (microseconds).
45 #define GO_WEB_SCAN_SYNC_BREAK_DISTANCE (24000) ///< Drop all data further than this amount from the current position (mils).
46 #define GO_WEB_SCAN_MAX_SYSTEM_SPEED (70000) ///< Maximum supported system speed (mils per second).
47 #define GO_WEB_SCAN_EXTENSION_WINDOW (2) ///< Maximum number of null range spot data before or after board edge along X axis.
48 #define GO_WEB_SCAN_FLATFIELD_RES_BITS (10) ///< Vision flatfield gain fractional bits preserved in integer calculations.
49 #define GO_WEB_SCAN_CAMERA_MARGIN (2000) ///< Amount of extra camera FOV (beyond nominal FOV) that can be included in results.
50 #define GO_WEB_SCAN_X_TILE_LCM (1000) ///< Least common multiple for every supported x-resolution.
51 
52 #define GO_WEB_SCAN_CAL_GAIN_WIDTH (64) ///< Width of gain images stored in calibration files.
53 #define GO_WEB_SCAN_CAL_GAIN_HEIGHT (8) ///< Height of gain images stored in calibration files.
54 #define GO_WEB_SCAN_CAL_VISION_Y_OFFSET_COUNT (2) ///< Width of y-offset array stored in calibration files.
55 #define GO_WEB_SCAN_CAL_TRIGGER_THRESHOLD (0.5) ///< At least this proportion profile dots must be valid for object detection.
56 #define GO_WEB_SCAN_CAL_TILE_Y_EXTENT (400) ///< Tile size for internal calibration calculations.
57 #define GO_WEB_SCAN_CAL_LEAD_Y_MARGIN (4000) ///< Leading edge data capture margin (mils).
58 #define GO_WEB_SCAN_CAL_TRAIL_Y_MARGIN (4000) ///< Trailing edge data capture margin (mils).
59 #define GO_WEB_SCAN_CAL_Y_MIN_GAP (1000) ///< Minimum gap between successive objects for calibration object detection (mils).
60 
61 #define GO_WEB_SCAN_UNASSIGNED_SERIAL_NUMBER (-1) ///< Serial number of unassigned node.
62 
63 #define GO_WEB_SCAN_TRACHEID_TO_PROFILE_MULTIPLIER_SEPARATE (3) ///< Separate tracheid exposure mode.
64 #define GO_WEB_SCAN_TRACHEID_TO_PROFILE_MULTIPLIER_COMBINED (2) ///< Combined profile/tracheid exposure mode.
65 
66 #define GO_WEB_SCAN_VISION_FRAME_RATE_DIVISOR (24) ///< Profile frame rate should be this value times larger than vision frame rate to prevent interference.
67 #define GO_WEB_SCAN_VISION_FRAME_RATE_DIVISOR_SEPARATE_EXPOSURES (32) ///< Vision frame rate divisor for when separate tracheid exposure is enabled. 32 profile periods contain 24 profile messages.
68 /**
69 * @struct GoWebScanMode
70 * @extends kValue
71 * @ingroup GoWebScanSdk
72 * @brief Represents a scan mode.
73 *
74 * The following enumerators are defined:
75 * - #GO_WEB_SCAN_MODE_UNKNOWN
76 * - #GO_WEB_SCAN_MODE_CALIBRATION
77 * - #GO_WEB_SCAN_MODE_DETECTION
78 * - #GO_WEB_SCAN_MODE_WEB
79 */
80 typedef k32s GoWebScanMode;
81 /** @name GoWebScanMode
82 *@{*/
83 #define GO_WEB_SCAN_MODE_UNKNOWN (0) ///< Mode of system is unknown.
84 #define GO_WEB_SCAN_MODE_CALIBRATION (1) ///< Mode for running and generating system calibration.
85 #define GO_WEB_SCAN_MODE_DETECTION (2) ///< Mode for detecting discrete objects.
86 #define GO_WEB_SCAN_MODE_WEB (3) ///< Mode for producing uniform resolution tiles.
87 /**@}*/
88 
89 /**
90 * @struct GoWebScanDataSource
91 * @extends kValue
92 * @ingroup GoWebScanSdk
93 * @brief Represents a type of sensor data.
94 *
95 * The following enumerators are defined:
96 * - #GO_WEB_SCAN_DATA_SOURCE_PROFILE
97 * - #GO_WEB_SCAN_DATA_SOURCE_VISION
98 * - #GO_WEB_SCAN_DATA_SOURCE_TRACHEID
99 */
100 typedef k32s GoWebScanDataSource;
101 /** @name GoWebScanDataSource
102 *@{*/
103 #define GO_WEB_SCAN_DATA_SOURCE_PROFILE (0) ///< Geometric data consisting of X and Z measurements.
104 #define GO_WEB_SCAN_DATA_SOURCE_VISION (1) ///< Raw bayer video images.
105 #define GO_WEB_SCAN_DATA_SOURCE_TRACHEID (2) ///< Spot shape information. Consists of scatter (minor to major ratio), angle, and area.
106 /**@}*/
107 
108 #define GO_WEB_SCAN_DATA_SOURCE_COUNT (3) ///< Number of data sources.
109 
110 /**
111 * @struct GoWebScanDetectionStyle
112 * @extends kValue
113 * @ingroup GoWebScanSdk
114 * @brief Represents a style of triggering the start of an object when in detection mode.
115 * The start of an object is triggered by a minimum number of non-null profiles. The
116 * detection style can either be global, meaning the non-null profiles can be
117 * disconnected, or local, which imposes the condition than the non-null profiles
118 * are contiguous.
119 *
120 * The following enumerators are defined:
121 * - #GO_WEB_SCAN_DETECTION_STYLE_GLOBAL
122 * - #GO_WEB_SCAN_DETECTION_STYLE_LOCAL
123 */
125 /** @name GoWebScanDetectionStyle
126 *@{*/
127 #define GO_WEB_SCAN_DETECTION_STYLE_GLOBAL (0) ///< Global detection triggering.
128 #define GO_WEB_SCAN_DETECTION_STYLE_LOCAL (1) ///< Local detection triggering.
129 /**@}*/
130 
131 /**
132 * @struct GoWebScanInterpolation
133 * @extends kValue
134 * @ingroup GoWebScanSdk
135 * @brief Represents a style of interpolation used during profile resampling.
136 *
137 * The following enumerators are defined:
138 * - #GO_WEB_SCAN_INTERPOLATION_NEAREST
139 * - #GO_WEB_SCAN_INTERPOLATION_LINEAR
140 */
142 /** @name GoWebScanInterpolation
143 *@{*/
144 #define GO_WEB_SCAN_INTERPOLATION_NEAREST (0) ///< Nearest neighbour.
145 #define GO_WEB_SCAN_INTERPOLATION_LINEAR (1) ///< Linear interpolation.
146 /**@}*/
147 
148 /**
149 * @struct GoWebScanStage
150 * @extends kValue
151 * @ingroup GoWebScanSdk
152 * @brief Represents a stage in the processing pipeline.
153 *
154 * The following enumerators are defined:
155 * - #GO_WEB_SCAN_STAGE_SAMPLE
156 * - #GO_WEB_SCAN_STAGE_SYNC
157 * - #GO_WEB_SCAN_STAGE_MERGE
158 * - #GO_WEB_SCAN_STAGE_WEB
159 * - #GO_WEB_SCAN_STAGE_DETECTION
160 */
161 typedef k32s GoWebScanStage;
162 /** @name GoWebScanStage
163 *@{*/
164 #define GO_WEB_SCAN_STAGE_SAMPLE (0) ///< Resampling stage.
165 #define GO_WEB_SCAN_STAGE_SYNC (1) ///< Synchronization and matching of resampled tiles.
166 #define GO_WEB_SCAN_STAGE_MERGE (2) ///< Merging stage.
167 #define GO_WEB_SCAN_STAGE_WEB (3) ///< Web mode output stage.
168 #define GO_WEB_SCAN_STAGE_DETECTION (4) ///< Board detection stage.
169 /**@}*/
170 
171 #define GO_WEB_SCAN_STAGE_COUNT (5) ///< Number of processing stages.
172 
173 /**
174 * @struct GoWebScanMsgId
175 * @extends kValue
176 * @ingroup GoWebScanSdk
177 * @brief Represents an ID for GoWebScan message objects.
178 *
179 * The following enumerators are defined:
180 * - #GO_WEB_SCAN_MSG_ID_INPUT
181 * - #GO_WEB_SCAN_MSG_ID_NODE_TILE
182 * - #GO_WEB_SCAN_MSG_ID_SYNC_LIST
183 * - #GO_WEB_SCAN_MSG_ID_PLANE_TILE
184 * - #GO_WEB_SCAN_MSG_ID_WEB_SET
185 * - #GO_WEB_SCAN_MSG_ID_DETECTION_SET
186 */
187 typedef k32s GoWebScanMsgId;
188 /** @name GoWebScanMsgId
189 *@{*/
190 #define GO_WEB_SCAN_MSG_ID_INPUT (0) ///< Message containing raw sensor data.
191 #define GO_WEB_SCAN_MSG_ID_NODE_TILE (1) ///< Message containing resampled tiles for a node.
192 #define GO_WEB_SCAN_MSG_ID_SYNC_LIST (2) ///< Message containing list of Y-matched tiles for the system.
193 #define GO_WEB_SCAN_MSG_ID_PLANE_TILE (3) ///< Message containing resampled and merged tiles for the system
194 #define GO_WEB_SCAN_MSG_ID_WEB_SET (4) ///< Message containing set of plane tiles
195 #define GO_WEB_SCAN_MSG_ID_DETECTION_SET (5) ///< Message containing a detected board.
196 /**@}*/
197 
198 #define GO_WEB_SCAN_MSG_ID_COUNT (6) ///< Number of message IDs.
199 
200 /**
201 * @struct GoWebScanInputId
202 * @extends kValue
203 * @ingroup GoWebScanSdk
204 * @brief Represents an ID for types of input messages.
205 *
206 * The following enumerators are defined:
207 * - #GO_WEB_SCAN_INPUT_ID_PROFILE
208 * - #GO_WEB_SCAN_INPUT_ID_VISION
209 * - #GO_WEB_SCAN_INPUT_ID_TRACHEID
210 */
211 typedef k32s GoWebScanInputId;
212 /** @name GoWebScanInputId
213 *@{*/
214 #define GO_WEB_SCAN_INPUT_ID_PROFILE (0) ///< Message containing raw profile data.
215 #define GO_WEB_SCAN_INPUT_ID_VISION (1) ///< Message containing raw vision data.
216 #define GO_WEB_SCAN_INPUT_ID_TRACHEID (2) ///< Message containing raw tracheid data.
217 /**@}*/
218 
219 #define GO_WEB_SCAN_INPUT_ID_COUNT (3) ///< Number of input message IDs.
220 
221 /**
222 * @struct GoWebScanNodeTileId
223 * @extends kValue
224 * @ingroup GoWebScanSdk
225 * @brief Represents an ID for types of tile messages.
226 *
227 * The following enumerators are defined:
228 * - #GO_WEB_SCAN_NODE_TILE_ID_PRESENCE
229 * - #GO_WEB_SCAN_NODE_TILE_ID_PROFILE
230 * - #GO_WEB_SCAN_NODE_TILE_ID_TERRAIN
231 * - #GO_WEB_SCAN_NODE_TILE_ID_VISION
232 * - #GO_WEB_SCAN_NODE_TILE_ID_TRACHEID
233 */
234 typedef k32s GoWebScanNodeTileId;
235 /** @name GoWebScanNodeTileId
236 *@{*/
237 #define GO_WEB_SCAN_NODE_TILE_ID_PRESENCE (0) ///< Message containing presence tiles (used for object detection).
238 #define GO_WEB_SCAN_NODE_TILE_ID_PROFILE (1) ///< Message containing profile tiles.
239 #define GO_WEB_SCAN_NODE_TILE_ID_TERRAIN (2) ///< Message containing terrain tiles (used for vision resampling).
240 #define GO_WEB_SCAN_NODE_TILE_ID_VISION (3) ///< Message containing vision tiles.
241 #define GO_WEB_SCAN_NODE_TILE_ID_TRACHEID (4) ///< Message containing tracheid tiles.
242 /**@}*/
243 
244 #define GO_WEB_SCAN_NODE_TILE_ID_COUNT (5) ///< Number of tile message IDs.
245 
246 /**
247 * @struct GoWebScanSyncId
248 * @extends kValue
249 * @ingroup GoWebScanSdk
250 * @brief Represents an ID for types of sync list messages.
251 *
252 * The following enumerators are defined:
253 * - #GO_WEB_SCAN_SYNC_ID_PRESENCE
254 * - #GO_WEB_SCAN_SYNC_ID_PROFILE
255 * - #GO_WEB_SCAN_SYNC_ID_VISION
256 * - #GO_WEB_SCAN_SYNC_ID_TRACHEID
257 */
258 typedef k32s GoWebScanSyncId;
259 /** @name GoWebScanSyncId
260 *@{*/
261 #define GO_WEB_SCAN_SYNC_ID_PRESENCE (0) ///< Message containing presence list.
262 #define GO_WEB_SCAN_SYNC_ID_PROFILE (1) ///< Message containing profile list.
263 #define GO_WEB_SCAN_SYNC_ID_VISION (2) ///< Message containing vision list.
264 #define GO_WEB_SCAN_SYNC_ID_TRACHEID (3) ///< Message containing tracheid list.
265 /**@}*/
266 
267 #define GO_WEB_SCAN_SYNC_ID_COUNT (4) ///< Number of sync message IDs.
268 
269 /**
270 * @struct GoWebScanPlaneTileId
271 * @extends kValue
272 * @ingroup GoWebScanSdk
273 * @brief Represents an ID for types of plane tile messages.
274 *
275 * The following enumerators are defined:
276 * - #GO_WEB_SCAN_PLANE_TILE_ID_PRESENCE
277 * - #GO_WEB_SCAN_PLANE_TILE_ID_PROFILE
278 * - #GO_WEB_SCAN_PLANE_TILE_ID_VISION
279 * - #GO_WEB_SCAN_PLANE_TILE_ID_TRACHEID
280 */
281 typedef k32s GoWebScanPlaneTileId;
282 /** @name GoWebScanPlaneTileId
283 *@{*/
284 #define GO_WEB_SCAN_PLANE_TILE_ID_PRESENCE (0) ///< Message containing presence plane tile.
285 #define GO_WEB_SCAN_PLANE_TILE_ID_PROFILE (1) ///< Message containing profile plane tile.
286 #define GO_WEB_SCAN_PLANE_TILE_ID_VISION (2) ///< Message containing vision plane tile.
287 #define GO_WEB_SCAN_PLANE_TILE_ID_TRACHEID (3) ///< Message containing tracheid plane tile
288 /**@}*/
289 
290 #define GO_WEB_SCAN_PLANE_TILE_ID_COUNT (4) ///< Number of plane tile message IDs.
291 
292 /**
293 * @struct GoWebScanMsgType
294 * @extends kValue
295 * @ingroup GoWebScanSdk
296 * @brief Represents a type of GoWebScan message.
297 *
298 * The following enumerators are defined:
299 * - #GO_WEB_SCAN_MSG_TYPE_PROFILE_INPUT
300 * - #GO_WEB_SCAN_MSG_TYPE_TRACHEID_INPUT
301 * - #GO_WEB_SCAN_MSG_TYPE_VISION_INPUT
302 * - #GO_WEB_SCAN_MSG_TYPE_PROFILE_TILE
303 * - #GO_WEB_SCAN_MSG_TYPE_TRACHEID_TILE
304 * - #GO_WEB_SCAN_MSG_TYPE_VISION_TILE
305 * - #GO_WEB_SCAN_MSG_TYPE_TILE_LIST
306 * - #GO_WEB_SCAN_MSG_TYPE_SYSTEM
307 */
308 typedef k32s GoWebScanMsgType;
309 /** @name GoWebScanMsgType
310 *@{*/
311 #define GO_WEB_SCAN_MSG_TYPE_PROFILE_INPUT (0) ///< Message containing raw profile data.
312 #define GO_WEB_SCAN_MSG_TYPE_TRACHEID_INPUT (1) ///< Message containing raw tracheid data.
313 #define GO_WEB_SCAN_MSG_TYPE_VISION_INPUT (2) ///< Message containing raw vision data.
314 #define GO_WEB_SCAN_MSG_TYPE_PROFILE_TILE (3) ///< Message containing profile tiles.
315 #define GO_WEB_SCAN_MSG_TYPE_TRACHEID_TILE (4) ///< Message containing tracheid tiles.
316 #define GO_WEB_SCAN_MSG_TYPE_VISION_TILE (5) ///< Message containing vision tiles.
317 #define GO_WEB_SCAN_MSG_TYPE_TILE_LIST (6) ///< Message containing a list of tiles.
318 #define GO_WEB_SCAN_MSG_TYPE_SYSTEM (7) ///< Message containing tiles for the whole system.
319 /**@}*/
320 
321 /**
322 * @struct GoWebScanSystemPlane
323 * @extends kValue
324 * @ingroup GoWebScanSdk
325 * @brief Represents the top or bottom plane of the system.
326 *
327 * The following enumerators are defined:
328 * - #GO_WEB_SCAN_SYSTEM_PLANE_TOP
329 * - #GO_WEB_SCAN_SYSTEM_PLANE_BOTTOM
330 */
331 typedef k32s GoWebScanSystemPlane;
332 /** @name GoWebScanSystemPlane
333 *@{*/
334 #define GO_WEB_SCAN_SYSTEM_PLANE_TOP (0) ///< Top plane of the system.
335 #define GO_WEB_SCAN_SYSTEM_PLANE_BOTTOM (1) ///< Bottom plane of the system.
336 /**@}*/
337 
338 #define GO_WEB_SCAN_SYSTEM_PLANE_COUNT (2) ///< Number of system planes.
339 
340 /**
341 * @struct GoWebScanXOrientation
342 * @extends kValue
343 * @ingroup GoWebScanSdk
344 * @brief Represents the direction of the X orientation. In a left-to-right system
345 * (as viewed from the front), the zero reference is on the left and sensor
346 * indices (defined by the sensor "Name" property) increase left-to-right.
347 * In a right-to-left system, the zero reference is on the right and sensor
348 * indices increase right-to-left.
349 *
350 * The following enumerators are defined:
351 * - #GO_WEB_SCAN_X_ORIENTATION_RIGHT_TO_LEFT
352 * - #GO_WEB_SCAN_X_ORIENTATION_LEFT_TO_RIGHT
353 */
355 /** @name GoWebScanXOrientation
356 *@{*/
357 #define GO_WEB_SCAN_X_ORIENTATION_RIGHT_TO_LEFT (0) ///< Right-to-left orientation
358 #define GO_WEB_SCAN_X_ORIENTATION_LEFT_TO_RIGHT (1) ///< Left-to-right orientation
359 /**@}*/
360 
361 /**
362 * @struct GoWebScanYOrientation
363 * @extends kValue
364 * @ingroup GoWebScanSdk
365 * @brief Represents the Y-orientation of the sensors: Facing Toward (1) or Facing
366 * Away (0). The sensor logo and labels are visible when sensors are facing
367 * toward.
368 *
369 * The following enumerators are defined:
370 * - #GO_WEB_SCAN_Y_ORIENTATION_AWAY
371 * - #GO_WEB_SCAN_Y_ORIENTATION_TOWARD
372 */
374 /** @name GoWebScanYOrientation
375 *@{*/
376 #define GO_WEB_SCAN_Y_ORIENTATION_AWAY (0) ///< Orientation where sensor labels are facing away.
377 #define GO_WEB_SCAN_Y_ORIENTATION_TOWARD (1) ///< Orientation where sensor labels are facing towards.
378 /**@}*/
379 
380 /**
381 * @struct GoWebScanCalStatus
382 * @extends kValue
383 * @ingroup GoWebScanSdk
384 * @brief Represents the status of calibration processing for the system.
385 *
386 * The following enumerators are defined:
387 * - #GO_WEB_SCAN_CAL_STATUS_OK
388 * - #GO_WEB_SCAN_CAL_STATUS_WARNING
389 * - #GO_WEB_SCAN_CAL_STATUS_ERROR
390 * - #GO_WEB_SCAN_CAL_STATUS_ERROR_COLLECTION
391 * - #GO_WEB_SCAN_CAL_STATUS_ERROR_PROCESSING
392 * - #GO_WEB_SCAN_CAL_STATUS_ERROR_REPLAY
393 */
394 typedef k32s GoWebScanCalStatus;
395 /** @name GoWebScanCalStatus
396 *@{*/
397 #define GO_WEB_SCAN_CAL_STATUS_OK (1) ///< Calibration is successful.
398 #define GO_WEB_SCAN_CAL_STATUS_WARNING (1000) ///< Generic warning. The results may be marginal.
399 #define GO_WEB_SCAN_CAL_STATUS_ERROR (2000) ///< Generic error.
400 #define GO_WEB_SCAN_CAL_STATUS_ERROR_COLLECTION (2001) ///< Data collection error.
401 #define GO_WEB_SCAN_CAL_STATUS_ERROR_PROCESSING (2002) ///< Data processing error.
402 #define GO_WEB_SCAN_CAL_STATUS_ERROR_REPLAY (2003) ///< Data replay error.
403 /**@}*/
404 
405 /**
406 * @struct GoWebScanCalActivity
407 * @extends kValue
408 * @ingroup GoWebScanSdk
409 * @brief Represents a stage or activity in the system calibration processing
410 * pipeline.
411 *
412 * The following enumerators are defined:
413 * - #GO_WEB_SCAN_CAL_ACTIVITY_PROFILE
414 * - #GO_WEB_SCAN_CAL_ACTIVITY_PROFILE_Y
415 * - #GO_WEB_SCAN_CAL_ACTIVITY_PROFILE_Z
416 * - #GO_WEB_SCAN_CAL_ACTIVITY_VISION
417 * - #GO_WEB_SCAN_CAL_ACTIVITY_VISION_X
418 * - #GO_WEB_SCAN_CAL_ACTIVITY_VISION_Y
419 * - #GO_WEB_SCAN_CAL_ACTIVITY_VISION_GAIN
420 */
421 typedef k32s GoWebScanCalActivity;
422 /** @name GoWebScanCalActivity
423 *@{*/
424 #define GO_WEB_SCAN_CAL_ACTIVITY_PROFILE (0) ///< Profile calibration.
425 #define GO_WEB_SCAN_CAL_ACTIVITY_PROFILE_Y (1) ///< Profile Y-calibration.
426 #define GO_WEB_SCAN_CAL_ACTIVITY_PROFILE_Z (2) ///< Profile Z-calibration.
427 #define GO_WEB_SCAN_CAL_ACTIVITY_VISION (1000) ///< Vision calibration.
428 #define GO_WEB_SCAN_CAL_ACTIVITY_VISION_X (1001) ///< Vision X-calibration.
429 #define GO_WEB_SCAN_CAL_ACTIVITY_VISION_Y (1002) ///< Vision Y-calibration.
430 #define GO_WEB_SCAN_CAL_ACTIVITY_VISION_GAIN (1003) ///< Vision gain calibration.
431 /**@}*/
432 
433 /**
434 * @struct GoWebScanCalNodeStatus
435 * @extends kValue
436 * @ingroup GoWebScanSdk
437 * @brief Represents a type of error or warning that occurred during system
438 * calibration processing of a node.
439 *
440 * The following enumerators are defined:
441 * - #GO_WEB_SCAN_CAL_NODE_STATUS_WARNING
442 * - #GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_FRAME_LOSS
443 * - #GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_INSUFFICIENT_DATA
444 * - #GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_HIGH_INTENSITY
445 * - #GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_X_COVERAGE
446 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR
447 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_PREREQUISITE
448 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_ALGORITHM
449 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FRAME_LOSS
450 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_INSUFFICIENT_DATA
451 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FEATURE
452 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_NOISE
453 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_LOW_INTENSITY
454 */
456 /** @name GoWebScanCalNodeStatus
457 *@{*/
458 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING (1000) ///< Calibration warning.
459 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_FRAME_LOSS (1003) ///< Camera data lost during capture.
460 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_INSUFFICIENT_DATA (1004) ///< Insufficient data for processing.
461 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_HIGH_INTENSITY (1007) ///< Intensity too high.
462 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_X_COVERAGE (1008) ///< Insufficient X coverage.
463 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR (2000) ///< Calibration error.
464 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_PREREQUISITE (2001) ///< Calibration not attempted.
465 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_ALGORITHM (2002) ///< Algorithm encountered unexpected condition.
466 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FRAME_LOSS (2003) ///< Camera data lost during capture.
467 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_INSUFFICIENT_DATA (2004) ///< Insufficient data for processing.
468 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FEATURE (2005) ///< Feature could not be located in data.
469 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_NOISE (2006) ///< Noisy data.
470 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_LOW_INTENSITY (2007) ///< Intensity too low.
471 /**@}*/
472 
473 /**
474 * @struct GoWebScanMsgStamp
475 * @extends kValue
476 * @ingroup GoWebScanSdk
477 * @brief Represents a message stamp containing properties of a message.
478 */
479 typedef struct GoWebScanMsgStamp
480 {
481  k32s id[4]; ///< Message ID. This ID can be formed from the message source node's position in the system.
482  k64s time; ///< Message timestamp. In internal units approximating microseconds where the true time in us = timestamp value / 1.024.
483  k64s encoder; ///< Message encoder value (ticks).
484  k64s position; ///< Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution.
486 
487 /**
488 * @struct GoWebScanSection
489 * @extends kValue
490 * @ingroup GoWebScanSdk
491 * @brief Represents a section of output system data. This can be defined by the user
492 * to allow for routing data to separate client destinations.
493 */
494 typedef struct GoWebScanSection
495 {
496  k32s id; ///< User-defined identifier for this section.
497  GoWebScanDataSource type; ///< Data type of section.
498  k32s x0; ///< Start of section along the X-axis (length), in system coordinates (mils).
499  k32s x1; ///< End of section along the X-axis (length), in system coordinates (mils). Should be greater than X0.
501 
502 /**
503 * @struct GoWebScanLinearFunction
504 * @extends kValue
505 * @ingroup GoWebScanSdk
506 * @brief Represents coefficients of a linear fit. The fit can be applied as follows:
507 * y(x) = c1*x + c0.
508 */
510 {
511  k64f c0; ///< First coefficient of fit.
512  k64f c1; ///< Second coefficient of fit.
514 
515 /**
516 * @struct GoWebScanInputAttr
517 * @extends kValue
518 * @ingroup GoWebScanSdk
519 * @brief Represents the attributes of an input GoWebScan message object. These values are
520 * copied from the raw sensor message stamp. Refer to GoStamp in GoSdk for more details.
521 */
522 typedef struct GoWebScanInputAttr
523 {
524  k64s time; ///< Message timestamp. In internal units approximating microseconds where the true time in us = timestamp value / 1.024.
525  k64s encoder; ///< Message encoder value (ticks).
526  k64s position; ///< Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution.
527  k64s inputs; ///< Status of the message. Bit mask containing frame information. Refer to GoStamp.
529 
530 /**
531 * @struct GoWebScanTracheidValue
532 * @extends kValue
533 * @ingroup GoWebScanSdk
534 * @brief Represents integer values of the spot tracheid data. These values are calculated
535 * from the spot shape.
536 */
538 {
539  k16s angle; ///< Angle of the spot (degrees).
540  k16s scatter; ///< Minor to major ratio of the spot, scaled to [0, 255].
541  k16s area; ///< Area of the spot (pixels).
543 
544 #define GO_WEB_SCAN_TRACHEID_VALUE_SET_NULL(X) ((X)->angle = k16S_NULL, (X)->scatter = k16S_NULL, (X)->area = k16S_NULL) ///< Sets the GoWebScanTracheidValue struct to null.
545 
546 /**
547 * @struct GoWebScanTracheidPoint
548 * @extends kValue
549 * @ingroup GoWebScanSdk
550 * @brief Represents a tracheid point, which is the integer tracheid data for a spot with
551 * the X position (mils) taken from the matching profile data.
552 */
554 {
555  k16s x; ///< X range (mils).
556  k16s angle; ///< Angle of the spot (degrees).
557  k16s scatter; ///< Minor to major ratio of the spot, scaled to [0, 255].
558  k16s area; ///< Area of the spot (pixels).
560 
561 #define GO_WEB_SCAN_TRACHEID_POINT_SET_NULL(X) ((X)->x = k16S_NULL, (X)->angle = k16S_NULL, (X)->scatter = k16S_NULL, (X)->area = k16S_NULL) ///< Sets the GoWebScanTracheidPoint struct to null.
562 
563 /**
564 * @struct GoWebScanGenericPoint16s
565 * @extends kValue
566 * @ingroup GoWebScanSdk
567 * @brief Represents a generic 16s point.
568 */
570 {
571  k16s x; ///< Generic X value
573 
574 /**
575 * @struct GoWebScanGenericPoint16s
576 * @extends kValue
577 * @ingroup GoWebScanSdk
578 * @brief Represents a user-defined obstruction to ignore a zone in X and Z in the input
579 * profile data. If there are any objects that regularly appear within the field of
580 * view of the sensors, such as chain runners, the zones in which those objects
581 * appear must be identified before the system will operate correctly in Calibration,
582 * Web, or Detection modes.
583 */
584 typedef struct GoWebScanObstruction
585 {
586  k32s x0; ///< Start of obstruction zone along the X-axis (length), in sensor coordinates (mils).
587  k32s x1; ///< End of obstruction zone along the X-axis (length), in sensor coordinates (mils).
588  k32s z0; ///< Start of obstruction zone along the z-axis (height), in sensor coordinates (mils).
589  k32s z1; ///< End of obstruction zone along the z-axis (length), in sensor coordinates (mils).
590 } GoWebScanObstruction;
591 
592 #include <GoWebScanSdk/GoWebScanSdkDef.x.h>
593 
594 #endif
k64s encoder
Message encoder value (ticks).
Definition: GoWebScanSdkDef.h:483
Represents a tracheid point, which is the integer tracheid data for a spot with the X position (mils)...
Definition: GoWebScanSdkDef.h:553
k32s id
User-defined identifier for this section.
Definition: GoWebScanSdkDef.h:496
Represents coefficients of a linear fit. The fit can be applied as follows: y(x) = c1*x + c0...
Definition: GoWebScanSdkDef.h:509
Represents a style of triggering the start of an object when in detection mode. The start of an objec...
Represents a style of interpolation used during profile resampling.
Represents an ID for types of tile messages.
Represents an ID for types of sync list messages.
k16s angle
Angle of the spot (degrees).
Definition: GoWebScanSdkDef.h:556
Represents a type of error or warning that occurred during system calibration processing of a node...
k16s area
Area of the spot (pixels).
Definition: GoWebScanSdkDef.h:558
k16s x
Generic X value.
Definition: GoWebScanSdkDef.h:571
k64s position
Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution...
Definition: GoWebScanSdkDef.h:526
Represents a type of sensor data.
k32s x1
End of section along the X-axis (length), in system coordinates (mils). Should be greater than X0...
Definition: GoWebScanSdkDef.h:499
Represents a stage in the processing pipeline.
k16s scatter
Minor to major ratio of the spot, scaled to [0, 255].
Definition: GoWebScanSdkDef.h:557
Represents an ID for GoWebScan message objects.
Represents a scan mode.
Represents a stage or activity in the system calibration processing pipeline.
k16s area
Area of the spot (pixels).
Definition: GoWebScanSdkDef.h:541
Represents integer values of the spot tracheid data. These values are calculated from the spot shape...
Definition: GoWebScanSdkDef.h:537
Represents a message stamp containing properties of a message.
Definition: GoWebScanSdkDef.h:479
k64s time
Message timestamp. In internal units approximating microseconds where the true time in us = timestamp...
Definition: GoWebScanSdkDef.h:524
k16s scatter
Minor to major ratio of the spot, scaled to [0, 255].
Definition: GoWebScanSdkDef.h:540
k64s time
Message timestamp. In internal units approximating microseconds where the true time in us = timestamp...
Definition: GoWebScanSdkDef.h:482
k64s encoder
Message encoder value (ticks).
Definition: GoWebScanSdkDef.h:525
k64s inputs
Status of the message. Bit mask containing frame information. Refer to GoStamp.
Definition: GoWebScanSdkDef.h:527
Represents the top or bottom plane of the system.
Represents the attributes of an input GoWebScan message object. These values are copied from the raw ...
Definition: GoWebScanSdkDef.h:522
Represents a generic 16s point.
Definition: GoWebScanSdkDef.h:569
Represents an ID for types of input messages.
Represents a type of GoWebScan message.
k64f c1
Second coefficient of fit.
Definition: GoWebScanSdkDef.h:512
GoWebScanDataSource type
Data type of section.
Definition: GoWebScanSdkDef.h:497
Represents the status of calibration processing for the system.
Represents a section of output system data. This can be defined by the user to allow for routing data...
Definition: GoWebScanSdkDef.h:494
Represents the direction of the X orientation. In a left-to-right system (as viewed from the front)...
Represents the Y-orientation of the sensors: Facing Toward (1) or Facing Away (0). The sensor logo and labels are visible when sensors are facing toward.
k32s x0
Start of section along the X-axis (length), in system coordinates (mils).
Definition: GoWebScanSdkDef.h:498
k64s position
Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution...
Definition: GoWebScanSdkDef.h:484
Represents an ID for types of plane tile messages.
k16s x
X range (mils).
Definition: GoWebScanSdkDef.h:555
k16s angle
Angle of the spot (degrees).
Definition: GoWebScanSdkDef.h:539
k64f c0
First coefficient of fit.
Definition: GoWebScanSdkDef.h:511