00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef PCL_DATA_TYPES_H_
00038 #define PCL_DATA_TYPES_H_
00039
00040 #include <Eigen/Core>
00041 #include <bitset>
00042 #include <vector>
00043 #include "pcl/ros/register_point_struct.h"
00044 #include "pcl/win32_macros.h"
00045 #include <math.h>
00046
00047 namespace pcl
00048 {
00050 struct PointXYZ;
00051
00052
00054 struct PointXYZI;
00055
00056
00058 struct PointXYZRGBA;
00059
00060
00062 struct PointXYZRGB;
00063
00064
00066 struct PointXY;
00067
00068
00070 struct InterestPoint;
00071
00072
00074 struct Normal;
00075
00076
00078 struct PointNormal;
00079
00080
00082 struct PointXYZRGBNormal;
00083
00084
00086 struct PointXYZINormal;
00087
00088
00090 struct PointWithRange;
00091
00092
00094 struct PointWithViewpoint;
00095
00096
00098 struct MomentInvariants;
00099
00100
00101
00102
00104 struct PrincipalRadiiRSD;
00105
00106
00108 struct Boundary;
00109
00110
00112 struct PrincipalCurvatures;
00113
00114
00116 struct PFHSignature125;
00117
00118
00120 struct FPFHSignature33;
00121
00122
00124 struct VFHSignature308;
00125
00126
00128 struct Narf36;
00129
00130
00131
00133 typedef std::bitset<32> BorderTraits;
00134
00136 enum BorderTrait
00137 {
00138 BORDER_TRAIT__OBSTACLE_BORDER,
00139 BORDER_TRAIT__SHADOW_BORDER,
00140 BORDER_TRAIT__VEIL_POINT,
00141 BORDER_TRAIT__SHADOW_BORDER_TOP,
00142 BORDER_TRAIT__SHADOW_BORDER_RIGHT,
00143 BORDER_TRAIT__SHADOW_BORDER_BOTTOM,
00144 BORDER_TRAIT__SHADOW_BORDER_LEFT,
00145 BORDER_TRAIT__OBSTACLE_BORDER_TOP,
00146 BORDER_TRAIT__OBSTACLE_BORDER_RIGHT,
00147 BORDER_TRAIT__OBSTACLE_BORDER_BOTTOM,
00148 BORDER_TRAIT__OBSTACLE_BORDER_LEFT,
00149 BORDER_TRAIT__VEIL_POINT_TOP,
00150 BORDER_TRAIT__VEIL_POINT_RIGHT,
00151 BORDER_TRAIT__VEIL_POINT_BOTTOM,
00152 BORDER_TRAIT__VEIL_POINT_LEFT,
00153 };
00154
00156 struct BorderDescription;
00157
00158
00160 struct IntensityGradient;
00161
00162
00164 template <int N>
00165 struct Histogram;
00166
00167
00169 struct PointWithScale;
00170
00171
00173 struct PointSurfel;
00174
00175
00176
00178 template <typename PointType1, typename PointType2>
00179 inline float euclideanDistance(const PointType1& p1, const PointType2& p2);
00180
00182 template <typename PointType1, typename PointType2>
00183 inline float squaredEuclideanDistance(const PointType1& p1, const PointType2& p2);
00184
00186 template <typename PointType>
00187 inline bool hasValidXYZ(const PointType& p);
00188 }
00189
00190
00191 #include "pcl/impl/point_types.hpp"
00192
00193
00194
00195
00196
00197
00198 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::_PointXYZ,
00199 (float, x, x)
00200 (float, y, y)
00201 (float, z, z)
00202 );
00203
00204 POINT_CLOUD_REGISTER_POINT_WRAPPER(pcl::PointXYZ, pcl::_PointXYZ)
00205
00206 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PointXYZRGBA,
00207 (float, x, x)
00208 (float, y, y)
00209 (float, z, z)
00210 (uint32_t, rgba, rgba)
00211 );
00212 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PointXYZRGB,
00213 (float, x, x)
00214 (float, y, y)
00215 (float, z, z)
00216 (float, rgb, rgb)
00217 );
00218 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::InterestPoint,
00219 (float, x, x)
00220 (float, y, y)
00221 (float, z, z)
00222 (float, strength, strength)
00223 );
00224
00225 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PointXYZI,
00226 (float, x, x)
00227 (float, y, y)
00228 (float, z, z)
00229 (float, intensity, intensity)
00230 );
00231
00232 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::Normal,
00233 (float, normal_x, normal_x)
00234 (float, normal_y, normal_y)
00235 (float, normal_z, normal_z)
00236 (float, curvature, curvature)
00237 );
00238 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PointNormal,
00239 (float, x, x)
00240 (float, y, y)
00241 (float, z, z)
00242 (float, normal_x, normal_x)
00243 (float, normal_y, normal_y)
00244 (float, normal_z, normal_z)
00245 (float, curvature, curvature)
00246 );
00247 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PointXYZRGBNormal,
00248 (float, x, x)
00249 (float, y, y)
00250 (float, z, z)
00251 (float, rgb, rgb)
00252 (float, normal_x, normal_x)
00253 (float, normal_y, normal_y)
00254 (float, normal_z, normal_z)
00255 (float, curvature, curvature)
00256 );
00257 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PointXYZINormal,
00258 (float, x, x)
00259 (float, y, y)
00260 (float, z, z)
00261 (float, intensity, intensity)
00262 (float, normal_x, normal_x)
00263 (float, normal_y, normal_y)
00264 (float, normal_z, normal_z)
00265 (float, curvature, curvature)
00266 );
00267 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PointWithRange,
00268 (float, x, x)
00269 (float, y, y)
00270 (float, z, z)
00271 (float, range, range)
00272 );
00273
00274 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::_PointWithViewpoint,
00275 (float, x, x)
00276 (float, y, y)
00277 (float, z, z)
00278 (float, vp_x, vp_x)
00279 (float, vp_y, vp_y)
00280 (float, vp_z, vp_z)
00281 );
00282
00283 POINT_CLOUD_REGISTER_POINT_WRAPPER(pcl::PointWithViewpoint, pcl::_PointWithViewpoint);
00284
00285
00286 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::MomentInvariants,
00287 (float, j1, j1)
00288 (float, j2, j2)
00289 (float, j3, j3)
00290 );
00291
00292 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PrincipalRadiiRSD,
00293 (float, r_min, r_min)
00294 (float, r_max, r_max)
00295 );
00296
00297 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::Boundary,
00298 (uint8_t, boundary_point, boundary_point)
00299 );
00300
00301 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PrincipalCurvatures,
00302 (float, principal_curvature_x, principal_curvature_x)
00303 (float, principal_curvature_y, principal_curvature_y)
00304 (float, principal_curvature_z, principal_curvature_z)
00305 (float, pc1, pc1)
00306 (float, pc2, pc2)
00307 );
00308
00309 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PFHSignature125,
00310 (float[125], histogram, pfh)
00311 );
00312
00313 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::FPFHSignature33,
00314 (float[33], histogram, fpfh)
00315 );
00316
00317 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::VFHSignature308,
00318 (float[308], histogram, vfh)
00319 );
00320
00321 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::Narf36,
00322 (float[36], descriptor, descriptor)
00323 );
00324
00325 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::IntensityGradient,
00326 (float, gradient_x, gradient_x)
00327 (float, gradient_y, gradient_y)
00328 (float, gradient_z, gradient_z)
00329 );
00330
00331 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PointWithScale,
00332 (float, x, x)
00333 (float, y, y)
00334 (float, z, z)
00335 (float, scale, scale)
00336 );
00337
00338 POINT_CLOUD_REGISTER_POINT_STRUCT(pcl::PointSurfel,
00339 (float, x, x)
00340 (float, y, y)
00341 (float, z, z)
00342 (float, normal_x, normal_x)
00343 (float, normal_y, normal_y)
00344 (float, normal_z, normal_z)
00345 (uint32_t, rgba, rgba)
00346 (float, radius, radius)
00347 (float, confidence, confidence)
00348 (float, curvature, curvature)
00349 );
00350
00351
00352
00353
00354
00355
00356
00357
00358 #endif //#ifndef PCL_DATA_TYPES_H_