Go to the documentation of this file.00001
00002 #ifndef IRI_FILTER_JUMP_EDGE_SERVICE_APPLYPOINTCLOUDFILTER_H
00003 #define IRI_FILTER_JUMP_EDGE_SERVICE_APPLYPOINTCLOUDFILTER_H
00004 #include <string>
00005 #include <vector>
00006 #include <map>
00007 #include <ostream>
00008 #include "ros/serialization.h"
00009 #include "ros/builtin_message_traits.h"
00010 #include "ros/message_operations.h"
00011 #include "ros/time.h"
00012
00013 #include "ros/macros.h"
00014
00015 #include "ros/assert.h"
00016
00017 #include "ros/service_traits.h"
00018
00019 #include "sensor_msgs/PointCloud2.h"
00020
00021
00022 #include "sensor_msgs/PointCloud2.h"
00023 #include "sensor_msgs/PointCloud2.h"
00024 #include "sensor_msgs/Image.h"
00025
00026 namespace iri_filter_jump_edge
00027 {
00028 template <class ContainerAllocator>
00029 struct ApplyPointCloudFilterRequest_ {
00030 typedef ApplyPointCloudFilterRequest_<ContainerAllocator> Type;
00031
00032 ApplyPointCloudFilterRequest_()
00033 : input_pc()
00034 {
00035 }
00036
00037 ApplyPointCloudFilterRequest_(const ContainerAllocator& _alloc)
00038 : input_pc(_alloc)
00039 {
00040 }
00041
00042 typedef ::sensor_msgs::PointCloud2_<ContainerAllocator> _input_pc_type;
00043 ::sensor_msgs::PointCloud2_<ContainerAllocator> input_pc;
00044
00045
00046 typedef boost::shared_ptr< ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> > Ptr;
00047 typedef boost::shared_ptr< ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> const> ConstPtr;
00048 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00049 };
00050 typedef ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<std::allocator<void> > ApplyPointCloudFilterRequest;
00051
00052 typedef boost::shared_ptr< ::iri_filter_jump_edge::ApplyPointCloudFilterRequest> ApplyPointCloudFilterRequestPtr;
00053 typedef boost::shared_ptr< ::iri_filter_jump_edge::ApplyPointCloudFilterRequest const> ApplyPointCloudFilterRequestConstPtr;
00054
00055
00056 template <class ContainerAllocator>
00057 struct ApplyPointCloudFilterResponse_ {
00058 typedef ApplyPointCloudFilterResponse_<ContainerAllocator> Type;
00059
00060 ApplyPointCloudFilterResponse_()
00061 : filtered_pc()
00062 , residual_pc()
00063 , residual_img()
00064 {
00065 }
00066
00067 ApplyPointCloudFilterResponse_(const ContainerAllocator& _alloc)
00068 : filtered_pc(_alloc)
00069 , residual_pc(_alloc)
00070 , residual_img(_alloc)
00071 {
00072 }
00073
00074 typedef ::sensor_msgs::PointCloud2_<ContainerAllocator> _filtered_pc_type;
00075 ::sensor_msgs::PointCloud2_<ContainerAllocator> filtered_pc;
00076
00077 typedef ::sensor_msgs::PointCloud2_<ContainerAllocator> _residual_pc_type;
00078 ::sensor_msgs::PointCloud2_<ContainerAllocator> residual_pc;
00079
00080 typedef ::sensor_msgs::Image_<ContainerAllocator> _residual_img_type;
00081 ::sensor_msgs::Image_<ContainerAllocator> residual_img;
00082
00083
00084 typedef boost::shared_ptr< ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> > Ptr;
00085 typedef boost::shared_ptr< ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> const> ConstPtr;
00086 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00087 };
00088 typedef ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<std::allocator<void> > ApplyPointCloudFilterResponse;
00089
00090 typedef boost::shared_ptr< ::iri_filter_jump_edge::ApplyPointCloudFilterResponse> ApplyPointCloudFilterResponsePtr;
00091 typedef boost::shared_ptr< ::iri_filter_jump_edge::ApplyPointCloudFilterResponse const> ApplyPointCloudFilterResponseConstPtr;
00092
00093 struct ApplyPointCloudFilter
00094 {
00095
00096 typedef ApplyPointCloudFilterRequest Request;
00097 typedef ApplyPointCloudFilterResponse Response;
00098 Request request;
00099 Response response;
00100
00101 typedef Request RequestType;
00102 typedef Response ResponseType;
00103 };
00104 }
00105
00106 namespace ros
00107 {
00108 namespace message_traits
00109 {
00110 template<class ContainerAllocator> struct IsMessage< ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> > : public TrueType {};
00111 template<class ContainerAllocator> struct IsMessage< ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> const> : public TrueType {};
00112 template<class ContainerAllocator>
00113 struct MD5Sum< ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> > {
00114 static const char* value()
00115 {
00116 return "cc8a0ff70cde5ed9daa21011f9ebd9fc";
00117 }
00118
00119 static const char* value(const ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> &) { return value(); }
00120 static const uint64_t static_value1 = 0xcc8a0ff70cde5ed9ULL;
00121 static const uint64_t static_value2 = 0xdaa21011f9ebd9fcULL;
00122 };
00123
00124 template<class ContainerAllocator>
00125 struct DataType< ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> > {
00126 static const char* value()
00127 {
00128 return "iri_filter_jump_edge/ApplyPointCloudFilterRequest";
00129 }
00130
00131 static const char* value(const ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> &) { return value(); }
00132 };
00133
00134 template<class ContainerAllocator>
00135 struct Definition< ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> > {
00136 static const char* value()
00137 {
00138 return "\n\
00139 sensor_msgs/PointCloud2 input_pc\n\
00140 \n\
00141 ================================================================================\n\
00142 MSG: sensor_msgs/PointCloud2\n\
00143 # This message holds a collection of N-dimensional points, which may\n\
00144 # contain additional information such as normals, intensity, etc. The\n\
00145 # point data is stored as a binary blob, its layout described by the\n\
00146 # contents of the \"fields\" array.\n\
00147 \n\
00148 # The point cloud data may be organized 2d (image-like) or 1d\n\
00149 # (unordered). Point clouds organized as 2d images may be produced by\n\
00150 # camera depth sensors such as stereo or time-of-flight.\n\
00151 \n\
00152 # Time of sensor data acquisition, and the coordinate frame ID (for 3d\n\
00153 # points).\n\
00154 Header header\n\
00155 \n\
00156 # 2D structure of the point cloud. If the cloud is unordered, height is\n\
00157 # 1 and width is the length of the point cloud.\n\
00158 uint32 height\n\
00159 uint32 width\n\
00160 \n\
00161 # Describes the channels and their layout in the binary data blob.\n\
00162 PointField[] fields\n\
00163 \n\
00164 bool is_bigendian # Is this data bigendian?\n\
00165 uint32 point_step # Length of a point in bytes\n\
00166 uint32 row_step # Length of a row in bytes\n\
00167 uint8[] data # Actual point data, size is (row_step*height)\n\
00168 \n\
00169 bool is_dense # True if there are no invalid points\n\
00170 \n\
00171 ================================================================================\n\
00172 MSG: std_msgs/Header\n\
00173 # Standard metadata for higher-level stamped data types.\n\
00174 # This is generally used to communicate timestamped data \n\
00175 # in a particular coordinate frame.\n\
00176 # \n\
00177 # sequence ID: consecutively increasing ID \n\
00178 uint32 seq\n\
00179 #Two-integer timestamp that is expressed as:\n\
00180 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00181 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00182 # time-handling sugar is provided by the client library\n\
00183 time stamp\n\
00184 #Frame this data is associated with\n\
00185 # 0: no frame\n\
00186 # 1: global frame\n\
00187 string frame_id\n\
00188 \n\
00189 ================================================================================\n\
00190 MSG: sensor_msgs/PointField\n\
00191 # This message holds the description of one point entry in the\n\
00192 # PointCloud2 message format.\n\
00193 uint8 INT8 = 1\n\
00194 uint8 UINT8 = 2\n\
00195 uint8 INT16 = 3\n\
00196 uint8 UINT16 = 4\n\
00197 uint8 INT32 = 5\n\
00198 uint8 UINT32 = 6\n\
00199 uint8 FLOAT32 = 7\n\
00200 uint8 FLOAT64 = 8\n\
00201 \n\
00202 string name # Name of field\n\
00203 uint32 offset # Offset from start of point struct\n\
00204 uint8 datatype # Datatype enumeration, see above\n\
00205 uint32 count # How many elements in the field\n\
00206 \n\
00207 ";
00208 }
00209
00210 static const char* value(const ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> &) { return value(); }
00211 };
00212
00213 }
00214 }
00215
00216
00217 namespace ros
00218 {
00219 namespace message_traits
00220 {
00221 template<class ContainerAllocator> struct IsMessage< ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> > : public TrueType {};
00222 template<class ContainerAllocator> struct IsMessage< ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> const> : public TrueType {};
00223 template<class ContainerAllocator>
00224 struct MD5Sum< ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> > {
00225 static const char* value()
00226 {
00227 return "3dc41414c32aeee905433e8ab58b46a8";
00228 }
00229
00230 static const char* value(const ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> &) { return value(); }
00231 static const uint64_t static_value1 = 0x3dc41414c32aeee9ULL;
00232 static const uint64_t static_value2 = 0x05433e8ab58b46a8ULL;
00233 };
00234
00235 template<class ContainerAllocator>
00236 struct DataType< ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> > {
00237 static const char* value()
00238 {
00239 return "iri_filter_jump_edge/ApplyPointCloudFilterResponse";
00240 }
00241
00242 static const char* value(const ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> &) { return value(); }
00243 };
00244
00245 template<class ContainerAllocator>
00246 struct Definition< ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> > {
00247 static const char* value()
00248 {
00249 return "\n\
00250 sensor_msgs/PointCloud2 filtered_pc\n\
00251 sensor_msgs/PointCloud2 residual_pc\n\
00252 sensor_msgs/Image residual_img\n\
00253 \n\
00254 \n\
00255 ================================================================================\n\
00256 MSG: sensor_msgs/PointCloud2\n\
00257 # This message holds a collection of N-dimensional points, which may\n\
00258 # contain additional information such as normals, intensity, etc. The\n\
00259 # point data is stored as a binary blob, its layout described by the\n\
00260 # contents of the \"fields\" array.\n\
00261 \n\
00262 # The point cloud data may be organized 2d (image-like) or 1d\n\
00263 # (unordered). Point clouds organized as 2d images may be produced by\n\
00264 # camera depth sensors such as stereo or time-of-flight.\n\
00265 \n\
00266 # Time of sensor data acquisition, and the coordinate frame ID (for 3d\n\
00267 # points).\n\
00268 Header header\n\
00269 \n\
00270 # 2D structure of the point cloud. If the cloud is unordered, height is\n\
00271 # 1 and width is the length of the point cloud.\n\
00272 uint32 height\n\
00273 uint32 width\n\
00274 \n\
00275 # Describes the channels and their layout in the binary data blob.\n\
00276 PointField[] fields\n\
00277 \n\
00278 bool is_bigendian # Is this data bigendian?\n\
00279 uint32 point_step # Length of a point in bytes\n\
00280 uint32 row_step # Length of a row in bytes\n\
00281 uint8[] data # Actual point data, size is (row_step*height)\n\
00282 \n\
00283 bool is_dense # True if there are no invalid points\n\
00284 \n\
00285 ================================================================================\n\
00286 MSG: std_msgs/Header\n\
00287 # Standard metadata for higher-level stamped data types.\n\
00288 # This is generally used to communicate timestamped data \n\
00289 # in a particular coordinate frame.\n\
00290 # \n\
00291 # sequence ID: consecutively increasing ID \n\
00292 uint32 seq\n\
00293 #Two-integer timestamp that is expressed as:\n\
00294 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00295 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00296 # time-handling sugar is provided by the client library\n\
00297 time stamp\n\
00298 #Frame this data is associated with\n\
00299 # 0: no frame\n\
00300 # 1: global frame\n\
00301 string frame_id\n\
00302 \n\
00303 ================================================================================\n\
00304 MSG: sensor_msgs/PointField\n\
00305 # This message holds the description of one point entry in the\n\
00306 # PointCloud2 message format.\n\
00307 uint8 INT8 = 1\n\
00308 uint8 UINT8 = 2\n\
00309 uint8 INT16 = 3\n\
00310 uint8 UINT16 = 4\n\
00311 uint8 INT32 = 5\n\
00312 uint8 UINT32 = 6\n\
00313 uint8 FLOAT32 = 7\n\
00314 uint8 FLOAT64 = 8\n\
00315 \n\
00316 string name # Name of field\n\
00317 uint32 offset # Offset from start of point struct\n\
00318 uint8 datatype # Datatype enumeration, see above\n\
00319 uint32 count # How many elements in the field\n\
00320 \n\
00321 ================================================================================\n\
00322 MSG: sensor_msgs/Image\n\
00323 # This message contains an uncompressed image\n\
00324 # (0, 0) is at top-left corner of image\n\
00325 #\n\
00326 \n\
00327 Header header # Header timestamp should be acquisition time of image\n\
00328 # Header frame_id should be optical frame of camera\n\
00329 # origin of frame should be optical center of cameara\n\
00330 # +x should point to the right in the image\n\
00331 # +y should point down in the image\n\
00332 # +z should point into to plane of the image\n\
00333 # If the frame_id here and the frame_id of the CameraInfo\n\
00334 # message associated with the image conflict\n\
00335 # the behavior is undefined\n\
00336 \n\
00337 uint32 height # image height, that is, number of rows\n\
00338 uint32 width # image width, that is, number of columns\n\
00339 \n\
00340 # The legal values for encoding are in file src/image_encodings.cpp\n\
00341 # If you want to standardize a new string format, join\n\
00342 # ros-users@lists.sourceforge.net and send an email proposing a new encoding.\n\
00343 \n\
00344 string encoding # Encoding of pixels -- channel meaning, ordering, size\n\
00345 # taken from the list of strings in src/image_encodings.cpp\n\
00346 \n\
00347 uint8 is_bigendian # is this data bigendian?\n\
00348 uint32 step # Full row length in bytes\n\
00349 uint8[] data # actual matrix data, size is (step * rows)\n\
00350 \n\
00351 ";
00352 }
00353
00354 static const char* value(const ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> &) { return value(); }
00355 };
00356
00357 }
00358 }
00359
00360 namespace ros
00361 {
00362 namespace serialization
00363 {
00364
00365 template<class ContainerAllocator> struct Serializer< ::iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> >
00366 {
00367 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00368 {
00369 stream.next(m.input_pc);
00370 }
00371
00372 ROS_DECLARE_ALLINONE_SERIALIZER;
00373 };
00374 }
00375 }
00376
00377
00378 namespace ros
00379 {
00380 namespace serialization
00381 {
00382
00383 template<class ContainerAllocator> struct Serializer< ::iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> >
00384 {
00385 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00386 {
00387 stream.next(m.filtered_pc);
00388 stream.next(m.residual_pc);
00389 stream.next(m.residual_img);
00390 }
00391
00392 ROS_DECLARE_ALLINONE_SERIALIZER;
00393 };
00394 }
00395 }
00396
00397 namespace ros
00398 {
00399 namespace service_traits
00400 {
00401 template<>
00402 struct MD5Sum<iri_filter_jump_edge::ApplyPointCloudFilter> {
00403 static const char* value()
00404 {
00405 return "e697fd905e25ed1dfb7581a727f2cb22";
00406 }
00407
00408 static const char* value(const iri_filter_jump_edge::ApplyPointCloudFilter&) { return value(); }
00409 };
00410
00411 template<>
00412 struct DataType<iri_filter_jump_edge::ApplyPointCloudFilter> {
00413 static const char* value()
00414 {
00415 return "iri_filter_jump_edge/ApplyPointCloudFilter";
00416 }
00417
00418 static const char* value(const iri_filter_jump_edge::ApplyPointCloudFilter&) { return value(); }
00419 };
00420
00421 template<class ContainerAllocator>
00422 struct MD5Sum<iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> > {
00423 static const char* value()
00424 {
00425 return "e697fd905e25ed1dfb7581a727f2cb22";
00426 }
00427
00428 static const char* value(const iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> &) { return value(); }
00429 };
00430
00431 template<class ContainerAllocator>
00432 struct DataType<iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> > {
00433 static const char* value()
00434 {
00435 return "iri_filter_jump_edge/ApplyPointCloudFilter";
00436 }
00437
00438 static const char* value(const iri_filter_jump_edge::ApplyPointCloudFilterRequest_<ContainerAllocator> &) { return value(); }
00439 };
00440
00441 template<class ContainerAllocator>
00442 struct MD5Sum<iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> > {
00443 static const char* value()
00444 {
00445 return "e697fd905e25ed1dfb7581a727f2cb22";
00446 }
00447
00448 static const char* value(const iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> &) { return value(); }
00449 };
00450
00451 template<class ContainerAllocator>
00452 struct DataType<iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> > {
00453 static const char* value()
00454 {
00455 return "iri_filter_jump_edge/ApplyPointCloudFilter";
00456 }
00457
00458 static const char* value(const iri_filter_jump_edge::ApplyPointCloudFilterResponse_<ContainerAllocator> &) { return value(); }
00459 };
00460
00461 }
00462 }
00463
00464 #endif // IRI_FILTER_JUMP_EDGE_SERVICE_APPLYPOINTCLOUDFILTER_H
00465