00001
00002 #ifndef ZYONZ_OBTAIN_ROI_JUMP_EDGE_BASED_SERVICE_EXTRACTTWOLEAVESROI_H
00003 #define ZYONZ_OBTAIN_ROI_JUMP_EDGE_BASED_SERVICE_EXTRACTTWOLEAVESROI_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/Image.h"
00020 #include "sensor_msgs/Image.h"
00021 #include "sensor_msgs/Image.h"
00022 #include "sensor_msgs/PointCloud2.h"
00023
00024
00025 #include "sensor_msgs/PointCloud2.h"
00026 #include "sensor_msgs/Image.h"
00027 #include "geometry_msgs/PoseStamped.h"
00028 #include "geometry_msgs/PoseStamped.h"
00029
00030 namespace zyonz_obtain_roi_jump_edge_based
00031 {
00032 template <class ContainerAllocator>
00033 struct ExtractTwoLeavesRoiRequest_ {
00034 typedef ExtractTwoLeavesRoiRequest_<ContainerAllocator> Type;
00035
00036 ExtractTwoLeavesRoiRequest_()
00037 : cluster_a_img()
00038 , cluster_b_img()
00039 , residual_img()
00040 , residual_pc()
00041 {
00042 }
00043
00044 ExtractTwoLeavesRoiRequest_(const ContainerAllocator& _alloc)
00045 : cluster_a_img(_alloc)
00046 , cluster_b_img(_alloc)
00047 , residual_img(_alloc)
00048 , residual_pc(_alloc)
00049 {
00050 }
00051
00052 typedef ::sensor_msgs::Image_<ContainerAllocator> _cluster_a_img_type;
00053 ::sensor_msgs::Image_<ContainerAllocator> cluster_a_img;
00054
00055 typedef ::sensor_msgs::Image_<ContainerAllocator> _cluster_b_img_type;
00056 ::sensor_msgs::Image_<ContainerAllocator> cluster_b_img;
00057
00058 typedef ::sensor_msgs::Image_<ContainerAllocator> _residual_img_type;
00059 ::sensor_msgs::Image_<ContainerAllocator> residual_img;
00060
00061 typedef ::sensor_msgs::PointCloud2_<ContainerAllocator> _residual_pc_type;
00062 ::sensor_msgs::PointCloud2_<ContainerAllocator> residual_pc;
00063
00064
00065 typedef boost::shared_ptr< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> > Ptr;
00066 typedef boost::shared_ptr< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> const> ConstPtr;
00067 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00068 };
00069 typedef ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<std::allocator<void> > ExtractTwoLeavesRoiRequest;
00070
00071 typedef boost::shared_ptr< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest> ExtractTwoLeavesRoiRequestPtr;
00072 typedef boost::shared_ptr< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest const> ExtractTwoLeavesRoiRequestConstPtr;
00073
00074
00075 template <class ContainerAllocator>
00076 struct ExtractTwoLeavesRoiResponse_ {
00077 typedef ExtractTwoLeavesRoiResponse_<ContainerAllocator> Type;
00078
00079 ExtractTwoLeavesRoiResponse_()
00080 : roi_pc()
00081 , roi_img()
00082 , roi_pose()
00083 , viewpoint_pose()
00084 {
00085 }
00086
00087 ExtractTwoLeavesRoiResponse_(const ContainerAllocator& _alloc)
00088 : roi_pc(_alloc)
00089 , roi_img(_alloc)
00090 , roi_pose(_alloc)
00091 , viewpoint_pose(_alloc)
00092 {
00093 }
00094
00095 typedef ::sensor_msgs::PointCloud2_<ContainerAllocator> _roi_pc_type;
00096 ::sensor_msgs::PointCloud2_<ContainerAllocator> roi_pc;
00097
00098 typedef ::sensor_msgs::Image_<ContainerAllocator> _roi_img_type;
00099 ::sensor_msgs::Image_<ContainerAllocator> roi_img;
00100
00101 typedef ::geometry_msgs::PoseStamped_<ContainerAllocator> _roi_pose_type;
00102 ::geometry_msgs::PoseStamped_<ContainerAllocator> roi_pose;
00103
00104 typedef ::geometry_msgs::PoseStamped_<ContainerAllocator> _viewpoint_pose_type;
00105 ::geometry_msgs::PoseStamped_<ContainerAllocator> viewpoint_pose;
00106
00107
00108 typedef boost::shared_ptr< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> > Ptr;
00109 typedef boost::shared_ptr< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> const> ConstPtr;
00110 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00111 };
00112 typedef ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<std::allocator<void> > ExtractTwoLeavesRoiResponse;
00113
00114 typedef boost::shared_ptr< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse> ExtractTwoLeavesRoiResponsePtr;
00115 typedef boost::shared_ptr< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse const> ExtractTwoLeavesRoiResponseConstPtr;
00116
00117 struct ExtractTwoLeavesRoi
00118 {
00119
00120 typedef ExtractTwoLeavesRoiRequest Request;
00121 typedef ExtractTwoLeavesRoiResponse Response;
00122 Request request;
00123 Response response;
00124
00125 typedef Request RequestType;
00126 typedef Response ResponseType;
00127 };
00128 }
00129
00130 namespace ros
00131 {
00132 namespace message_traits
00133 {
00134 template<class ContainerAllocator> struct IsMessage< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> > : public TrueType {};
00135 template<class ContainerAllocator> struct IsMessage< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> const> : public TrueType {};
00136 template<class ContainerAllocator>
00137 struct MD5Sum< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> > {
00138 static const char* value()
00139 {
00140 return "9d1fa894fa9d6a4cd9c06f0055af0613";
00141 }
00142
00143 static const char* value(const ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> &) { return value(); }
00144 static const uint64_t static_value1 = 0x9d1fa894fa9d6a4cULL;
00145 static const uint64_t static_value2 = 0xd9c06f0055af0613ULL;
00146 };
00147
00148 template<class ContainerAllocator>
00149 struct DataType< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> > {
00150 static const char* value()
00151 {
00152 return "zyonz_obtain_roi_jump_edge_based/ExtractTwoLeavesRoiRequest";
00153 }
00154
00155 static const char* value(const ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> &) { return value(); }
00156 };
00157
00158 template<class ContainerAllocator>
00159 struct Definition< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> > {
00160 static const char* value()
00161 {
00162 return "\n\
00163 sensor_msgs/Image cluster_a_img\n\
00164 sensor_msgs/Image cluster_b_img\n\
00165 sensor_msgs/Image residual_img\n\
00166 sensor_msgs/PointCloud2 residual_pc\n\
00167 \n\
00168 ================================================================================\n\
00169 MSG: sensor_msgs/Image\n\
00170 # This message contains an uncompressed image\n\
00171 # (0, 0) is at top-left corner of image\n\
00172 #\n\
00173 \n\
00174 Header header # Header timestamp should be acquisition time of image\n\
00175 # Header frame_id should be optical frame of camera\n\
00176 # origin of frame should be optical center of cameara\n\
00177 # +x should point to the right in the image\n\
00178 # +y should point down in the image\n\
00179 # +z should point into to plane of the image\n\
00180 # If the frame_id here and the frame_id of the CameraInfo\n\
00181 # message associated with the image conflict\n\
00182 # the behavior is undefined\n\
00183 \n\
00184 uint32 height # image height, that is, number of rows\n\
00185 uint32 width # image width, that is, number of columns\n\
00186 \n\
00187 # The legal values for encoding are in file src/image_encodings.cpp\n\
00188 # If you want to standardize a new string format, join\n\
00189 # ros-users@lists.sourceforge.net and send an email proposing a new encoding.\n\
00190 \n\
00191 string encoding # Encoding of pixels -- channel meaning, ordering, size\n\
00192 # taken from the list of strings in src/image_encodings.cpp\n\
00193 \n\
00194 uint8 is_bigendian # is this data bigendian?\n\
00195 uint32 step # Full row length in bytes\n\
00196 uint8[] data # actual matrix data, size is (step * rows)\n\
00197 \n\
00198 ================================================================================\n\
00199 MSG: std_msgs/Header\n\
00200 # Standard metadata for higher-level stamped data types.\n\
00201 # This is generally used to communicate timestamped data \n\
00202 # in a particular coordinate frame.\n\
00203 # \n\
00204 # sequence ID: consecutively increasing ID \n\
00205 uint32 seq\n\
00206 #Two-integer timestamp that is expressed as:\n\
00207 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00208 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00209 # time-handling sugar is provided by the client library\n\
00210 time stamp\n\
00211 #Frame this data is associated with\n\
00212 # 0: no frame\n\
00213 # 1: global frame\n\
00214 string frame_id\n\
00215 \n\
00216 ================================================================================\n\
00217 MSG: sensor_msgs/PointCloud2\n\
00218 # This message holds a collection of N-dimensional points, which may\n\
00219 # contain additional information such as normals, intensity, etc. The\n\
00220 # point data is stored as a binary blob, its layout described by the\n\
00221 # contents of the \"fields\" array.\n\
00222 \n\
00223 # The point cloud data may be organized 2d (image-like) or 1d\n\
00224 # (unordered). Point clouds organized as 2d images may be produced by\n\
00225 # camera depth sensors such as stereo or time-of-flight.\n\
00226 \n\
00227 # Time of sensor data acquisition, and the coordinate frame ID (for 3d\n\
00228 # points).\n\
00229 Header header\n\
00230 \n\
00231 # 2D structure of the point cloud. If the cloud is unordered, height is\n\
00232 # 1 and width is the length of the point cloud.\n\
00233 uint32 height\n\
00234 uint32 width\n\
00235 \n\
00236 # Describes the channels and their layout in the binary data blob.\n\
00237 PointField[] fields\n\
00238 \n\
00239 bool is_bigendian # Is this data bigendian?\n\
00240 uint32 point_step # Length of a point in bytes\n\
00241 uint32 row_step # Length of a row in bytes\n\
00242 uint8[] data # Actual point data, size is (row_step*height)\n\
00243 \n\
00244 bool is_dense # True if there are no invalid points\n\
00245 \n\
00246 ================================================================================\n\
00247 MSG: sensor_msgs/PointField\n\
00248 # This message holds the description of one point entry in the\n\
00249 # PointCloud2 message format.\n\
00250 uint8 INT8 = 1\n\
00251 uint8 UINT8 = 2\n\
00252 uint8 INT16 = 3\n\
00253 uint8 UINT16 = 4\n\
00254 uint8 INT32 = 5\n\
00255 uint8 UINT32 = 6\n\
00256 uint8 FLOAT32 = 7\n\
00257 uint8 FLOAT64 = 8\n\
00258 \n\
00259 string name # Name of field\n\
00260 uint32 offset # Offset from start of point struct\n\
00261 uint8 datatype # Datatype enumeration, see above\n\
00262 uint32 count # How many elements in the field\n\
00263 \n\
00264 ";
00265 }
00266
00267 static const char* value(const ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> &) { return value(); }
00268 };
00269
00270 }
00271 }
00272
00273
00274 namespace ros
00275 {
00276 namespace message_traits
00277 {
00278 template<class ContainerAllocator> struct IsMessage< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> > : public TrueType {};
00279 template<class ContainerAllocator> struct IsMessage< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> const> : public TrueType {};
00280 template<class ContainerAllocator>
00281 struct MD5Sum< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> > {
00282 static const char* value()
00283 {
00284 return "b47b7ae7bad2bb30c58b377d3daae68c";
00285 }
00286
00287 static const char* value(const ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> &) { return value(); }
00288 static const uint64_t static_value1 = 0xb47b7ae7bad2bb30ULL;
00289 static const uint64_t static_value2 = 0xc58b377d3daae68cULL;
00290 };
00291
00292 template<class ContainerAllocator>
00293 struct DataType< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> > {
00294 static const char* value()
00295 {
00296 return "zyonz_obtain_roi_jump_edge_based/ExtractTwoLeavesRoiResponse";
00297 }
00298
00299 static const char* value(const ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> &) { return value(); }
00300 };
00301
00302 template<class ContainerAllocator>
00303 struct Definition< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> > {
00304 static const char* value()
00305 {
00306 return "\n\
00307 sensor_msgs/PointCloud2 roi_pc\n\
00308 sensor_msgs/Image roi_img\n\
00309 geometry_msgs/PoseStamped roi_pose\n\
00310 geometry_msgs/PoseStamped viewpoint_pose\n\
00311 \n\
00312 \n\
00313 ================================================================================\n\
00314 MSG: sensor_msgs/PointCloud2\n\
00315 # This message holds a collection of N-dimensional points, which may\n\
00316 # contain additional information such as normals, intensity, etc. The\n\
00317 # point data is stored as a binary blob, its layout described by the\n\
00318 # contents of the \"fields\" array.\n\
00319 \n\
00320 # The point cloud data may be organized 2d (image-like) or 1d\n\
00321 # (unordered). Point clouds organized as 2d images may be produced by\n\
00322 # camera depth sensors such as stereo or time-of-flight.\n\
00323 \n\
00324 # Time of sensor data acquisition, and the coordinate frame ID (for 3d\n\
00325 # points).\n\
00326 Header header\n\
00327 \n\
00328 # 2D structure of the point cloud. If the cloud is unordered, height is\n\
00329 # 1 and width is the length of the point cloud.\n\
00330 uint32 height\n\
00331 uint32 width\n\
00332 \n\
00333 # Describes the channels and their layout in the binary data blob.\n\
00334 PointField[] fields\n\
00335 \n\
00336 bool is_bigendian # Is this data bigendian?\n\
00337 uint32 point_step # Length of a point in bytes\n\
00338 uint32 row_step # Length of a row in bytes\n\
00339 uint8[] data # Actual point data, size is (row_step*height)\n\
00340 \n\
00341 bool is_dense # True if there are no invalid points\n\
00342 \n\
00343 ================================================================================\n\
00344 MSG: std_msgs/Header\n\
00345 # Standard metadata for higher-level stamped data types.\n\
00346 # This is generally used to communicate timestamped data \n\
00347 # in a particular coordinate frame.\n\
00348 # \n\
00349 # sequence ID: consecutively increasing ID \n\
00350 uint32 seq\n\
00351 #Two-integer timestamp that is expressed as:\n\
00352 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00353 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00354 # time-handling sugar is provided by the client library\n\
00355 time stamp\n\
00356 #Frame this data is associated with\n\
00357 # 0: no frame\n\
00358 # 1: global frame\n\
00359 string frame_id\n\
00360 \n\
00361 ================================================================================\n\
00362 MSG: sensor_msgs/PointField\n\
00363 # This message holds the description of one point entry in the\n\
00364 # PointCloud2 message format.\n\
00365 uint8 INT8 = 1\n\
00366 uint8 UINT8 = 2\n\
00367 uint8 INT16 = 3\n\
00368 uint8 UINT16 = 4\n\
00369 uint8 INT32 = 5\n\
00370 uint8 UINT32 = 6\n\
00371 uint8 FLOAT32 = 7\n\
00372 uint8 FLOAT64 = 8\n\
00373 \n\
00374 string name # Name of field\n\
00375 uint32 offset # Offset from start of point struct\n\
00376 uint8 datatype # Datatype enumeration, see above\n\
00377 uint32 count # How many elements in the field\n\
00378 \n\
00379 ================================================================================\n\
00380 MSG: sensor_msgs/Image\n\
00381 # This message contains an uncompressed image\n\
00382 # (0, 0) is at top-left corner of image\n\
00383 #\n\
00384 \n\
00385 Header header # Header timestamp should be acquisition time of image\n\
00386 # Header frame_id should be optical frame of camera\n\
00387 # origin of frame should be optical center of cameara\n\
00388 # +x should point to the right in the image\n\
00389 # +y should point down in the image\n\
00390 # +z should point into to plane of the image\n\
00391 # If the frame_id here and the frame_id of the CameraInfo\n\
00392 # message associated with the image conflict\n\
00393 # the behavior is undefined\n\
00394 \n\
00395 uint32 height # image height, that is, number of rows\n\
00396 uint32 width # image width, that is, number of columns\n\
00397 \n\
00398 # The legal values for encoding are in file src/image_encodings.cpp\n\
00399 # If you want to standardize a new string format, join\n\
00400 # ros-users@lists.sourceforge.net and send an email proposing a new encoding.\n\
00401 \n\
00402 string encoding # Encoding of pixels -- channel meaning, ordering, size\n\
00403 # taken from the list of strings in src/image_encodings.cpp\n\
00404 \n\
00405 uint8 is_bigendian # is this data bigendian?\n\
00406 uint32 step # Full row length in bytes\n\
00407 uint8[] data # actual matrix data, size is (step * rows)\n\
00408 \n\
00409 ================================================================================\n\
00410 MSG: geometry_msgs/PoseStamped\n\
00411 # A Pose with reference coordinate frame and timestamp\n\
00412 Header header\n\
00413 Pose pose\n\
00414 \n\
00415 ================================================================================\n\
00416 MSG: geometry_msgs/Pose\n\
00417 # A representation of pose in free space, composed of postion and orientation. \n\
00418 Point position\n\
00419 Quaternion orientation\n\
00420 \n\
00421 ================================================================================\n\
00422 MSG: geometry_msgs/Point\n\
00423 # This contains the position of a point in free space\n\
00424 float64 x\n\
00425 float64 y\n\
00426 float64 z\n\
00427 \n\
00428 ================================================================================\n\
00429 MSG: geometry_msgs/Quaternion\n\
00430 # This represents an orientation in free space in quaternion form.\n\
00431 \n\
00432 float64 x\n\
00433 float64 y\n\
00434 float64 z\n\
00435 float64 w\n\
00436 \n\
00437 ";
00438 }
00439
00440 static const char* value(const ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> &) { return value(); }
00441 };
00442
00443 }
00444 }
00445
00446 namespace ros
00447 {
00448 namespace serialization
00449 {
00450
00451 template<class ContainerAllocator> struct Serializer< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> >
00452 {
00453 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00454 {
00455 stream.next(m.cluster_a_img);
00456 stream.next(m.cluster_b_img);
00457 stream.next(m.residual_img);
00458 stream.next(m.residual_pc);
00459 }
00460
00461 ROS_DECLARE_ALLINONE_SERIALIZER;
00462 };
00463 }
00464 }
00465
00466
00467 namespace ros
00468 {
00469 namespace serialization
00470 {
00471
00472 template<class ContainerAllocator> struct Serializer< ::zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> >
00473 {
00474 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00475 {
00476 stream.next(m.roi_pc);
00477 stream.next(m.roi_img);
00478 stream.next(m.roi_pose);
00479 stream.next(m.viewpoint_pose);
00480 }
00481
00482 ROS_DECLARE_ALLINONE_SERIALIZER;
00483 };
00484 }
00485 }
00486
00487 namespace ros
00488 {
00489 namespace service_traits
00490 {
00491 template<>
00492 struct MD5Sum<zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoi> {
00493 static const char* value()
00494 {
00495 return "17cd0e235cf2a2a2082aefd69aa6fa7d";
00496 }
00497
00498 static const char* value(const zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoi&) { return value(); }
00499 };
00500
00501 template<>
00502 struct DataType<zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoi> {
00503 static const char* value()
00504 {
00505 return "zyonz_obtain_roi_jump_edge_based/ExtractTwoLeavesRoi";
00506 }
00507
00508 static const char* value(const zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoi&) { return value(); }
00509 };
00510
00511 template<class ContainerAllocator>
00512 struct MD5Sum<zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> > {
00513 static const char* value()
00514 {
00515 return "17cd0e235cf2a2a2082aefd69aa6fa7d";
00516 }
00517
00518 static const char* value(const zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> &) { return value(); }
00519 };
00520
00521 template<class ContainerAllocator>
00522 struct DataType<zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> > {
00523 static const char* value()
00524 {
00525 return "zyonz_obtain_roi_jump_edge_based/ExtractTwoLeavesRoi";
00526 }
00527
00528 static const char* value(const zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiRequest_<ContainerAllocator> &) { return value(); }
00529 };
00530
00531 template<class ContainerAllocator>
00532 struct MD5Sum<zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> > {
00533 static const char* value()
00534 {
00535 return "17cd0e235cf2a2a2082aefd69aa6fa7d";
00536 }
00537
00538 static const char* value(const zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> &) { return value(); }
00539 };
00540
00541 template<class ContainerAllocator>
00542 struct DataType<zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> > {
00543 static const char* value()
00544 {
00545 return "zyonz_obtain_roi_jump_edge_based/ExtractTwoLeavesRoi";
00546 }
00547
00548 static const char* value(const zyonz_obtain_roi_jump_edge_based::ExtractTwoLeavesRoiResponse_<ContainerAllocator> &) { return value(); }
00549 };
00550
00551 }
00552 }
00553
00554 #endif // ZYONZ_OBTAIN_ROI_JUMP_EDGE_BASED_SERVICE_EXTRACTTWOLEAVESROI_H
00555