Mech-Eye API 2.6.0
API reference documentation for Mech-Eye 3D Laser Profiler
Loading...
Searching...
No Matches
MultiProfilerErrorStatus.h
1#pragma once
2#include <string>
3#include <unordered_map>
4#include "api_global.h"
5
6namespace mmind {
7namespace eye {
8class MMIND_API_EXPORT MultiProfilerErrorStatus
9{
10public:
11 enum ErrorCode {
12 MMIND_STATUS_SUCCESS = 0, //< Success.
13
14 // error code for calibration
15 MMIND_STATUS_EMPTY_DEPTH_IMAGE = -1,
16 MMIND_STATUS_PLANE_SEGMENTATION_FAILURE = -2,
17 MMIND_STATUS_NONE_PARALLEL_PLANES = -3,
18 MMIND_STATUS_OVERMUCH_PARALLEL_PLANES = -4,
19 MMIND_STATUS_REORDER_PLANES_FAILURE = -5,
20 MMIND_STATUS_REPROJECT_ERROR_HIGH = -6,
21 MMIND_STATUS_INVALID_ROI = -7,
22
23 // error code for stitcher
24 MMIND_STATUS_NON_STANDARD_RESOLUTION = -8,
25 MMIND_STATUS_CAMERA_MODEL_ERROR = -9,
26 MMIND_STATUS_INVALID_BOUNDARY_VALUE = -10,
27 MMIND_STATUS_FUSION_POINT_EXCEED_MEMORY = -11,
28 MMIND_STATUS_MULTI_STITCH_CAMERA_MODEL_EMPTY = -12,
29 MMIND_STATUS_MULTI_STITCH_PARAMS_EMPTY = -13,
30 MMIND_STATUS_PARAMS_ARE_NOT_CHECKED = -14,
31 MMIND_STATUS_POINT_CLOUDS_EMPTY = -15,
32 MMIND_STATUS_NO_IMAGE_AVAILABLE = -16,
33 MMIND_STATUS_DEPTH_INTENSITY_IMAGE_SIZE_UNMATCHED = -17,
34 MMIND_STATUS_DEPTH_IMAGE_TYPE_WRONG = -18,
35 MMIND_STATUS_INTENSITY_IMAGE_TYPE_WRONG = -19,
36 MMIND_STATUS_MAJOR_AND_MINOR_RESOLUTION_INCONSISTENCY = -20,
37 MMIND_STATUS_MULTI_STITCH_PARAMS_SIZE_INCONSISTENCY = -21,
38 MMIND_STATUS_MULTI_FUSION_PARAMS_SIZE_INCONSISTENCY = -22,
39 MMIND_STATUS_MINOR_INFO_UNMATCHED_IN_FUSION = -23,
40 MMIND_STATUS_EXTRACT_IMAGE_INFO_ERROR = -24,
41 MMIND_STATUS_EMPTY_BIASES_IN_FUSION = -25,
42 MMIND_STATUS_IMAGE_AND_MASK_SIZE_UNMATCHED_IN_FUSION = -26,
43
44 // error code for checking validity
45 MMIND_STATUS_INVALID_PARAM = -27,
46 MMIND_STATUS_INVALID_POSITIVE_PARAM = -28,
47 MMIND_STATUS_INVALID_IMAGE_CONFIG_PAIR = -29,
48 MMIND_STATUS_INVALID_IMAGE_RESULT_PAIR = -30,
49 MMIND_STATUS_EMPTY_MULTISYSTEM_CONFIG = -31,
50 MMIND_STATUS_INVALID_ROTATION_MATRIX = -32,
51 MMIND_STATUS_INVALID_MOVE_DIR_VECTOR = -33,
52 MMIND_STATUS_INVALID_MOVE_DIR_VECTOR_SIGN = -34,
53 MMIND_STATUS_INVALID_TOP_LENGTH = -35,
54 MMIND_STATUS_INVALID_ROTATE_RADIUS_ANGLE_MODE = -36,
55 MMIND_STATUS_INVALID_ROTATE_RADIUS_WIDE_MODE = -37,
56 MMIND_STATUS_INVALID_ROTATE_ANGLE_ANGLE_MODE = -38,
57 MMIND_STATUS_INVALID_ROTATE_ANGLE_WIDE_MODE = -39,
58 MMIND_STATUS_INVALID_TRANSLATE_DISTANCE_ANGLE_MODE = -40,
59 MMIND_STATUS_INVALID_ROTATE_AXIS_ANGLE_MODE = -41,
60 MMIND_STATUS_INVALID_ROTATE_AXIS_WIDE_MODE = -42,
61 MMIND_STATUS_INVALID_TRANSLATE_AXIS_ANGLE_MODE = -43,
62 MMIND_STATUS_INVALID_TRANSLATE_AXIS_WIDE_MODE = -44,
63 MMIND_STATUS_INVALID_DOWNSAMPLE = -45,
64 MMIND_STATUS_INVALID_DEPTH_GROUPID = -46,
65 MMIND_STATUS_INVALID_CONFIG_GROUPID = -47,
66 MMIND_STATUS_INVALID_RESULT_GROUPID = -48,
67
68 // error code for IO
69 MMIND_STATUS_EMPTY_PARAMS = -49,
70
71 // error code for load calib files
72 MMIND_STATUS_CONFIG_LOAD_FAILURE = -50,
73 MMIND_STATUS_RESULT_LOAD_FAILURE = -51,
74 MMIND_STATUS_EVALS_LOAD_FAILURE = -52,
75 MMIND_STATUS_DEPTH_LOAD_FAILURE = -53,
76
77 // error code for stitcher
78 MMIND_STATUS_INVALID_RESOLUTION = -54,
79
80 // error code for clouds stitch
81 MMIND_STATUS_DATA_NOT_SUPPORTED_BY_CURRENT_CLASS = -55,
82 MMIND_STATUS_PLEASE_STITCH_FIRST = -56,
83 MMIND_STATUS_ONLY_POINT_CLOUD_WITHOUT_INTENSITY_AVAILABLE = -57,
84 MMIND_STATUS_VOXEL_GRID_OVERFLOW = -58,
85 MMIND_STATUS_REFINED_RELIABILITY_TOO_LOW = -59,
86 MMIND_STATUS_NO_POINT_MATCHED_IN_REGISTRATION_STEP = -60,
87 MMIND_STATUS_INITIALIZED_UNSUPPORTED_STITCHER_TYPE = -61,
88 MMIND_STATUS_TRANSFORM_REFINE_PARAMS_EMPTY = -62,
89 MMIND_STATUS_MULTIRING_REGISTRATION_UNSUPPORT = -63,
90 MMIND_STATUS_WRONG_KNN_POINT_NUMBER = -64,
91 MMIND_STATUS_STITCH_OPTION_NOT_SUPPORTED = -65,
92 MMIND_STATUS_PARAM_REFINE_OPTION_NOT_SUPPORTED = -66,
93
94 // error code for calibration
95 MMIND_STATUS_EMPTY_CONFIG = -67,
96
97 // error code for checking validity
98 MMIND_STATUS_INVALID_NON_NEGATIVE_PARAM = -68,
99 MMIND_STATUS_INVALID_REF_POSITION_GROUPID = -69,
100 MMIND_STATUS_INVALID_CALIB_RESULT = -70,
101
102 // error code for single camera corrected
103 MMIND_STATUS_SINGLE_CAMERA_CORRECTION_PARAMS_NOT_CHECKED = -71,
104 MMIND_STATUS_INVALID_IMAGE_SIZE = -72,
105 MMIND_STATUS_INVALID_IMAGE_RESOLUTION = -73,
106
107 // error code for wide expansion stitch
108 MMIND_STATUS_LACK_OF_CAMERA_CONSISTENT_INFORMATION = -74,
109 };
110
111 enum ErrorSource { System, MajorDevice, MinorDevice };
112
113 MultiProfilerErrorStatus() = default;
114 MultiProfilerErrorStatus(ErrorCode code, const std::string& message)
115 : errorCode(code), errorDescription(message)
116 {
117 }
118 MultiProfilerErrorStatus(ErrorCode code, ErrorSource source = System, unsigned int groupID = 0,
119 const std::string& paraName = "")
120 : errorSource(source), groupID(groupID)
121 {
122 setErrorCodeAndDescription(code, paraName);
123 }
124
125 bool isOK() const
126 {
127 return errorCode == MMIND_STATUS_SUCCESS ||
128 errorCode == MMIND_STATUS_NON_STANDARD_RESOLUTION;
129 }
130
131 void setErrorCodeAndDescription(const ErrorCode& code)
132 {
133 this->errorCode = code;
134 this->errorDescription = errorInfoMap.at(code);
135 }
136
137 void setErrorCodeAndDescription(const ErrorCode& code, const std::string& paraName)
138 {
139 this->errorCode = code;
140 this->errorDescription = errorInfoMap.at(code) + paraName;
141 }
142
143 unsigned int groupID = 0;
144 ErrorSource errorSource = System;
145 ErrorCode errorCode = MMIND_STATUS_SUCCESS;
146 std::string errorDescription = "Success";
147
148private:
149 static const std::unordered_map<ErrorCode, std::string> errorInfoMap;
150};
151} // namespace eye
152} // namespace mmind