00001 /* 00002 * Software License Agreement (Apache License) 00003 * 00004 * Copyright (c) 2014, Southwest Research Institute 00005 * 00006 * Licensed under the Apache License, Version 2.0 (the "License"); 00007 * you may not use this file except in compliance with the License. 00008 * You may obtain a copy of the License at 00009 * 00010 * http://www.apache.org/licenses/LICENSE-2.0 00011 * 00012 * Unless required by applicable law or agreed to in writing, software 00013 * distributed under the License is distributed on an "AS IS" BASIS, 00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00015 * See the License for the specific language governing permissions and 00016 * limitations under the License. 00017 */ 00018 00019 #ifndef BASIC_TYPES_H_ 00020 #define BASIC_TYPES_H_ 00021 00022 #include <vector> 00023 #include <boost/shared_ptr.hpp> 00024 #include <industrial_extrinsic_cal/basic_types.h> 00025 00026 namespace industrial_extrinsic_cal 00027 { 00028 00029 typedef double* P_BLOCK; 00030 00032 typedef struct 00033 { 00034 int x_min; 00035 int x_max; 00036 int y_min; 00037 int y_max; 00038 } Roi; 00039 00041 typedef struct 00042 { 00043 union 00044 { 00045 struct 00046 { 00047 double x; 00048 double y; 00049 double z; 00050 }; 00051 double pb[3]; 00052 }; 00053 } Point3d; 00054 00059 typedef struct 00060 { 00061 union 00062 { 00063 struct 00064 { 00065 double x; 00066 double y; 00067 double z; 00068 double ax; 00069 double ay; 00070 double az; 00071 }; 00072 struct 00073 { 00074 double pb_loc[3]; 00075 double pb_aa[3]; 00076 }; 00077 struct 00078 { 00079 double pb_pose[6]; 00080 }; 00081 }; 00082 }Pose6d; 00083 00085 typedef struct 00086 { 00087 int pattern_rows; 00088 int pattern_cols; 00089 } CheckerBoardParameters; 00091 typedef struct 00092 { 00093 int pattern_rows; 00094 int pattern_cols; 00095 bool is_symmetric; 00096 } CircleGridParameters; 00098 typedef struct 00099 { 00100 //std::string marker_pattern; 00101 double marker_width; 00102 } ARTargetParameters; 00103 00105 typedef struct 00106 { 00107 std::string target_name; 00108 int target_type; 00109 union 00110 { 00111 CheckerBoardParameters checker_board_parameters; 00112 CircleGridParameters circle_grid_parameters; 00113 ARTargetParameters ar_target_parameters; 00114 }; 00115 bool is_moving; 00116 Pose6d pose; 00117 unsigned int num_points; 00118 std::vector<Point3d> pts; 00119 bool fixed_pose; 00120 bool fixed_points; 00121 } Target; 00122 00124 typedef struct 00125 { 00126 boost::shared_ptr<Target> target; 00127 int point_id; 00128 double image_loc_x; 00129 double image_loc_y; 00130 } Observation; 00131 00133 typedef struct 00134 { 00135 std::vector<Observation> observations; 00136 } CameraObservations; 00137 00140 typedef struct 00141 { 00142 union 00143 { 00144 struct 00145 { 00146 double angle_axis[3]; 00147 double position[3]; 00148 double focal_length_x; 00149 double focal_length_y; 00150 double center_x; 00151 double center_y; 00152 double distortion_k1; 00153 double distortion_k2; 00154 double distortion_k3; 00155 double distortion_p1; 00156 double distortion_p2; 00157 }; 00158 struct 00159 { 00160 double pb_extrinsics[6]; 00161 double pb_intrinsics[9]; 00162 }; 00163 struct 00164 { 00165 double pb_all[15]; 00166 }; 00167 }; 00168 } CameraParameters; 00169 00171 typedef struct 00172 { 00173 int trigger_type; 00174 std::string trigger_popup_msg; 00175 } Trigger; 00176 00178 typedef struct MovingTarget 00179 { 00180 boost::shared_ptr<Target> targ; // must hold a copy of the target pose parameters, 00181 int scene_id; // but point parameters may be unused duplicates 00182 } MovingTarget; 00183 00184 }//end namespace industrial_extrinsiac_cal 00185 #endif