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-2021 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_SEPERATE (3) ///< Seperate 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_INTENSITY
445 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR
446 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_PREREQUISITE
447 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_ALGORITHM
448 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FRAME_LOSS
449 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_INSUFFICIENT_DATA
450 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FEATURE
451 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_NOISE
452 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_INTENSITY
453 */
455 /** @name GoWebScanCalNodeStatus
456 *@{*/
457 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING (1000) ///< Calibration warning.
458 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_FRAME_LOSS (1003) ///< Camera data lost during capture.
459 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_INSUFFICIENT_DATA (1004) ///< Insufficient data for processing.
460 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_INTENSITY (1007) ///< Intensity too high or too low.
461 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR (2000) ///< Calibration error.
462 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_PREREQUISITE (2001) ///< Calibration not attempted.
463 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_ALGORITHM (2002) ///< Algorithm encountered unexpected condition.
464 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FRAME_LOSS (2003) ///< Camera data lost during capture.
465 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_INSUFFICIENT_DATA (2004) ///< Insufficient data for processing.
466 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FEATURE (2005) ///< Feature could not be located in data.
467 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_NOISE (2006) ///< Noisy data.
468 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_INTENSITY (2007) ///< Intensity too high or too low.
469 /**@}*/
470 
471 /**
472 * @struct GoWebScanMsgStamp
473 * @extends kValue
474 * @ingroup GoWebScanSdk
475 * @brief Represents a message stamp containing properties of a message.
476 */
477 typedef struct GoWebScanMsgStamp
478 {
479  k32s id[4]; ///< Message ID. This ID can be formed from the message source node's position in the system.
480  k64s time; ///< Message timestamp. In internal units approximating microseconds where the true time in us = timestamp value / 1.024.
481  k64s encoder; ///< Message encoder value (ticks).
482  k64s position; ///< Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution.
484 
485 /**
486 * @struct GoWebScanSection
487 * @extends kValue
488 * @ingroup GoWebScanSdk
489 * @brief Represents a section of output system data. This can be defined by the user
490 * to allow for routing data to seperate client destinations.
491 */
492 typedef struct GoWebScanSection
493 {
494  k32s id; ///< User-defined identifier for this section.
495  GoWebScanDataSource type; ///< Data type of section.
496  k32s x0; ///< Start of section along the X-axis (length), in system coordinates (mils).
497  k32s x1; ///< End of section along the X-axis (length), in system coordinates (mils). Should be greater than X0.
499 
500 /**
501 * @struct GoWebScanLinearFunction
502 * @extends kValue
503 * @ingroup GoWebScanSdk
504 * @brief Represents coefficients of a linear fit. The fit can be applied as follows:
505 * y(x) = c1*x + c0.
506 */
508 {
509  k64f c0; ///< First coefficient of fit.
510  k64f c1; ///< Second coefficient of fit.
512 
513 /**
514 * @struct GoWebScanInputAttr
515 * @extends kValue
516 * @ingroup GoWebScanSdk
517 * @brief Represents the attributes of an input GoWebScan message object. These values are
518 * copied from the raw sensor message stamp. Refer to GoStamp in GoSdk for more details.
519 */
520 typedef struct GoWebScanInputAttr
521 {
522  k64s time; ///< Message timestamp. In internal units approximating microseconds where the true time in us = timestamp value / 1.024.
523  k64s encoder; ///< Message encoder value (ticks).
524  k64s position; ///< Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution.
525  k64s inputs; ///< Status of the message. Bit mask containing frame information. Refer to GoStamp.
527 
528 /**
529 * @struct GoWebScanTracheidValue
530 * @extends kValue
531 * @ingroup GoWebScanSdk
532 * @brief Represents integer values of the spot tracheid data. These values are calculated
533 * from the spot shape.
534 */
536 {
537  k16s angle; ///< Angle of the spot (degrees).
538  k16s scatter; ///< Minor to major ratio of the spot, scaled to [0, 255].
539  k16s area; ///< Area of the spot (pixels).
541 
542 #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.
543 
544 /**
545 * @struct GoWebScanTracheidPoint
546 * @extends kValue
547 * @ingroup GoWebScanSdk
548 * @brief Represents a tracheid point, which is the integer tracheid data for a spot with
549 * the X position (mils) taken from the matching profile data.
550 */
552 {
553  k16s x; ///< X range (mils).
554  k16s angle; ///< Angle of the spot (degrees).
555  k16s scatter; ///< Minor to major ratio of the spot, scaled to [0, 255].
556  k16s area; ///< Area of the spot (pixels).
558 
559 #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.
560 
561 /**
562 * @struct GoWebScanGenericPoint16s
563 * @extends kValue
564 * @ingroup GoWebScanSdk
565 * @brief Represents a generic 16s point.
566 */
568 {
569  k16s x; ///< Generic X value
571 
572 /**
573 * @struct GoWebScanGenericPoint16s
574 * @extends kValue
575 * @ingroup GoWebScanSdk
576 * @brief Represents a user-defined obstruction to ignore a zone in X and Z in the input
577 * profile data. If there are any objects that regularly appear within the field of
578 * view of the sensors, such as chain runners, the zones in which those objects
579 * appear must be identified before the system will operate correctly in Calibration,
580 * Web, or Detection modes.
581 */
582 typedef struct GoWebScanObstruction
583 {
584  k32s x0; ///< Start of obstruction zone along the X-axis (length), in sensor coordinates (mils).
585  k32s x1; ///< End of obstruction zone along the X-axis (length), in sensor coordinates (mils).
586  k32s z0; ///< Start of obstruction zone along the z-axis (height), in sensor coordinates (mils).
587  k32s z1; ///< End of obstruction zone along the z-axis (length), in sensor coordinates (mils).
588 } GoWebScanObstruction;
589 
590 #include <GoWebScanSdk/GoWebScanSdkDef.x.h>
591 
592 #endif
k64s encoder
Message encoder value (ticks).
Definition: GoWebScanSdkDef.h:481
Represents a tracheid point, which is the integer tracheid data for a spot with the X position (mils)...
Definition: GoWebScanSdkDef.h:551
k32s id
User-defined identifier for this section.
Definition: GoWebScanSdkDef.h:494
Represents coefficients of a linear fit. The fit can be applied as follows: y(x) = c1*x + c0...
Definition: GoWebScanSdkDef.h:507
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:554
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:556
k16s x
Generic X value.
Definition: GoWebScanSdkDef.h:569
k64s position
Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution...
Definition: GoWebScanSdkDef.h:524
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:497
Represents a stage in the processing pipeline.
k16s scatter
Minor to major ratio of the spot, scaled to [0, 255].
Definition: GoWebScanSdkDef.h:555
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:539
Represents integer values of the spot tracheid data. These values are calculated from the spot shape...
Definition: GoWebScanSdkDef.h:535
Represents a message stamp containing properties of a message.
Definition: GoWebScanSdkDef.h:477
k64s time
Message timestamp. In internal units approximating microseconds where the true time in us = timestamp...
Definition: GoWebScanSdkDef.h:522
k16s scatter
Minor to major ratio of the spot, scaled to [0, 255].
Definition: GoWebScanSdkDef.h:538
k64s time
Message timestamp. In internal units approximating microseconds where the true time in us = timestamp...
Definition: GoWebScanSdkDef.h:480
k64s encoder
Message encoder value (ticks).
Definition: GoWebScanSdkDef.h:523
k64s inputs
Status of the message. Bit mask containing frame information. Refer to GoStamp.
Definition: GoWebScanSdkDef.h:525
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:520
Represents a generic 16s point.
Definition: GoWebScanSdkDef.h:567
Represents an ID for types of input messages.
Represents a type of GoWebScan message.
k64f c1
Second coefficient of fit.
Definition: GoWebScanSdkDef.h:510
GoWebScanDataSource type
Data type of section.
Definition: GoWebScanSdkDef.h:495
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:492
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:496
k64s position
Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution...
Definition: GoWebScanSdkDef.h:482
Represents an ID for types of plane tile messages.
k16s x
X range (mils).
Definition: GoWebScanSdkDef.h:553
k16s angle
Angle of the spot (degrees).
Definition: GoWebScanSdkDef.h:537
k64f c0
First coefficient of fit.
Definition: GoWebScanSdkDef.h:509