00001
00002 #ifndef PR2_INTERACTIVE_SEGMENTATION_SERVICE_CORNERFIND_H
00003 #define PR2_INTERACTIVE_SEGMENTATION_SERVICE_CORNERFIND_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
00021
00022 #include "geometry_msgs/Point.h"
00023 #include "geometry_msgs/Point32.h"
00024 #include "geometry_msgs/Point.h"
00025 #include "geometry_msgs/Point32.h"
00026
00027 namespace pr2_interactive_segmentation
00028 {
00029 template <class ContainerAllocator>
00030 struct cornerFindRequest_ {
00031 typedef cornerFindRequest_<ContainerAllocator> Type;
00032
00033 cornerFindRequest_()
00034 : image()
00035 {
00036 }
00037
00038 cornerFindRequest_(const ContainerAllocator& _alloc)
00039 : image(_alloc)
00040 {
00041 }
00042
00043 typedef ::sensor_msgs::Image_<ContainerAllocator> _image_type;
00044 ::sensor_msgs::Image_<ContainerAllocator> image;
00045
00046
00047 private:
00048 static const char* __s_getDataType_() { return "pr2_interactive_segmentation/cornerFindRequest"; }
00049 public:
00050 ROS_DEPRECATED static const std::string __s_getDataType() { return __s_getDataType_(); }
00051
00052 ROS_DEPRECATED const std::string __getDataType() const { return __s_getDataType_(); }
00053
00054 private:
00055 static const char* __s_getMD5Sum_() { return "b13d2865c5af2a64e6e30ab1b56e1dd5"; }
00056 public:
00057 ROS_DEPRECATED static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
00058
00059 ROS_DEPRECATED const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
00060
00061 private:
00062 static const char* __s_getServerMD5Sum_() { return "ac8d58fdb334d1d395d0c60410ea3eb1"; }
00063 public:
00064 ROS_DEPRECATED static const std::string __s_getServerMD5Sum() { return __s_getServerMD5Sum_(); }
00065
00066 ROS_DEPRECATED const std::string __getServerMD5Sum() const { return __s_getServerMD5Sum_(); }
00067
00068 private:
00069 static const char* __s_getMessageDefinition_() { return "sensor_msgs/Image image\n\
00070 \n\
00071 ================================================================================\n\
00072 MSG: sensor_msgs/Image\n\
00073 # This message contains an uncompressed image\n\
00074 # (0, 0) is at top-left corner of image\n\
00075 #\n\
00076 \n\
00077 Header header # Header timestamp should be acquisition time of image\n\
00078 # Header frame_id should be optical frame of camera\n\
00079 # origin of frame should be optical center of cameara\n\
00080 # +x should point to the right in the image\n\
00081 # +y should point down in the image\n\
00082 # +z should point into to plane of the image\n\
00083 # If the frame_id here and the frame_id of the CameraInfo\n\
00084 # message associated with the image conflict\n\
00085 # the behavior is undefined\n\
00086 \n\
00087 uint32 height # image height, that is, number of rows\n\
00088 uint32 width # image width, that is, number of columns\n\
00089 \n\
00090 # The legal values for encoding are in file src/image_encodings.cpp\n\
00091 # If you want to standardize a new string format, join\n\
00092 # ros-users@lists.sourceforge.net and send an email proposing a new encoding.\n\
00093 \n\
00094 string encoding # Encoding of pixels -- channel meaning, ordering, size\n\
00095 # taken from the list of strings in src/image_encodings.cpp\n\
00096 \n\
00097 uint8 is_bigendian # is this data bigendian?\n\
00098 uint32 step # Full row length in bytes\n\
00099 uint8[] data # actual matrix data, size is (step * rows)\n\
00100 \n\
00101 ================================================================================\n\
00102 MSG: std_msgs/Header\n\
00103 # Standard metadata for higher-level stamped data types.\n\
00104 # This is generally used to communicate timestamped data \n\
00105 # in a particular coordinate frame.\n\
00106 # \n\
00107 # sequence ID: consecutively increasing ID \n\
00108 uint32 seq\n\
00109 #Two-integer timestamp that is expressed as:\n\
00110 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00111 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00112 # time-handling sugar is provided by the client library\n\
00113 time stamp\n\
00114 #Frame this data is associated with\n\
00115 # 0: no frame\n\
00116 # 1: global frame\n\
00117 string frame_id\n\
00118 \n\
00119 "; }
00120 public:
00121 ROS_DEPRECATED static const std::string __s_getMessageDefinition() { return __s_getMessageDefinition_(); }
00122
00123 ROS_DEPRECATED const std::string __getMessageDefinition() const { return __s_getMessageDefinition_(); }
00124
00125 ROS_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
00126 {
00127 ros::serialization::OStream stream(write_ptr, 1000000000);
00128 ros::serialization::serialize(stream, image);
00129 return stream.getData();
00130 }
00131
00132 ROS_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr)
00133 {
00134 ros::serialization::IStream stream(read_ptr, 1000000000);
00135 ros::serialization::deserialize(stream, image);
00136 return stream.getData();
00137 }
00138
00139 ROS_DEPRECATED virtual uint32_t serializationLength() const
00140 {
00141 uint32_t size = 0;
00142 size += ros::serialization::serializationLength(image);
00143 return size;
00144 }
00145
00146 typedef boost::shared_ptr< ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> > Ptr;
00147 typedef boost::shared_ptr< ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> const> ConstPtr;
00148 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00149 };
00150 typedef ::pr2_interactive_segmentation::cornerFindRequest_<std::allocator<void> > cornerFindRequest;
00151
00152 typedef boost::shared_ptr< ::pr2_interactive_segmentation::cornerFindRequest> cornerFindRequestPtr;
00153 typedef boost::shared_ptr< ::pr2_interactive_segmentation::cornerFindRequest const> cornerFindRequestConstPtr;
00154
00155
00156 template <class ContainerAllocator>
00157 struct cornerFindResponse_ {
00158 typedef cornerFindResponse_<ContainerAllocator> Type;
00159
00160 cornerFindResponse_()
00161 : corner()
00162 , push_direction()
00163 , corner_convex()
00164 , push_direction_convex()
00165 {
00166 }
00167
00168 cornerFindResponse_(const ContainerAllocator& _alloc)
00169 : corner(_alloc)
00170 , push_direction(_alloc)
00171 , corner_convex(_alloc)
00172 , push_direction_convex(_alloc)
00173 {
00174 }
00175
00176 typedef std::vector< ::geometry_msgs::Point_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point_<ContainerAllocator> >::other > _corner_type;
00177 std::vector< ::geometry_msgs::Point_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point_<ContainerAllocator> >::other > corner;
00178
00179 typedef std::vector< ::geometry_msgs::Point32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point32_<ContainerAllocator> >::other > _push_direction_type;
00180 std::vector< ::geometry_msgs::Point32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point32_<ContainerAllocator> >::other > push_direction;
00181
00182 typedef std::vector< ::geometry_msgs::Point_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point_<ContainerAllocator> >::other > _corner_convex_type;
00183 std::vector< ::geometry_msgs::Point_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point_<ContainerAllocator> >::other > corner_convex;
00184
00185 typedef std::vector< ::geometry_msgs::Point32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point32_<ContainerAllocator> >::other > _push_direction_convex_type;
00186 std::vector< ::geometry_msgs::Point32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point32_<ContainerAllocator> >::other > push_direction_convex;
00187
00188
00189 ROS_DEPRECATED uint32_t get_corner_size() const { return (uint32_t)corner.size(); }
00190 ROS_DEPRECATED void set_corner_size(uint32_t size) { corner.resize((size_t)size); }
00191 ROS_DEPRECATED void get_corner_vec(std::vector< ::geometry_msgs::Point_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point_<ContainerAllocator> >::other > & vec) const { vec = this->corner; }
00192 ROS_DEPRECATED void set_corner_vec(const std::vector< ::geometry_msgs::Point_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point_<ContainerAllocator> >::other > & vec) { this->corner = vec; }
00193 ROS_DEPRECATED uint32_t get_push_direction_size() const { return (uint32_t)push_direction.size(); }
00194 ROS_DEPRECATED void set_push_direction_size(uint32_t size) { push_direction.resize((size_t)size); }
00195 ROS_DEPRECATED void get_push_direction_vec(std::vector< ::geometry_msgs::Point32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point32_<ContainerAllocator> >::other > & vec) const { vec = this->push_direction; }
00196 ROS_DEPRECATED void set_push_direction_vec(const std::vector< ::geometry_msgs::Point32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point32_<ContainerAllocator> >::other > & vec) { this->push_direction = vec; }
00197 ROS_DEPRECATED uint32_t get_corner_convex_size() const { return (uint32_t)corner_convex.size(); }
00198 ROS_DEPRECATED void set_corner_convex_size(uint32_t size) { corner_convex.resize((size_t)size); }
00199 ROS_DEPRECATED void get_corner_convex_vec(std::vector< ::geometry_msgs::Point_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point_<ContainerAllocator> >::other > & vec) const { vec = this->corner_convex; }
00200 ROS_DEPRECATED void set_corner_convex_vec(const std::vector< ::geometry_msgs::Point_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point_<ContainerAllocator> >::other > & vec) { this->corner_convex = vec; }
00201 ROS_DEPRECATED uint32_t get_push_direction_convex_size() const { return (uint32_t)push_direction_convex.size(); }
00202 ROS_DEPRECATED void set_push_direction_convex_size(uint32_t size) { push_direction_convex.resize((size_t)size); }
00203 ROS_DEPRECATED void get_push_direction_convex_vec(std::vector< ::geometry_msgs::Point32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point32_<ContainerAllocator> >::other > & vec) const { vec = this->push_direction_convex; }
00204 ROS_DEPRECATED void set_push_direction_convex_vec(const std::vector< ::geometry_msgs::Point32_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::geometry_msgs::Point32_<ContainerAllocator> >::other > & vec) { this->push_direction_convex = vec; }
00205 private:
00206 static const char* __s_getDataType_() { return "pr2_interactive_segmentation/cornerFindResponse"; }
00207 public:
00208 ROS_DEPRECATED static const std::string __s_getDataType() { return __s_getDataType_(); }
00209
00210 ROS_DEPRECATED const std::string __getDataType() const { return __s_getDataType_(); }
00211
00212 private:
00213 static const char* __s_getMD5Sum_() { return "4b09fc7def371137a597cd91369399bc"; }
00214 public:
00215 ROS_DEPRECATED static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
00216
00217 ROS_DEPRECATED const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
00218
00219 private:
00220 static const char* __s_getServerMD5Sum_() { return "ac8d58fdb334d1d395d0c60410ea3eb1"; }
00221 public:
00222 ROS_DEPRECATED static const std::string __s_getServerMD5Sum() { return __s_getServerMD5Sum_(); }
00223
00224 ROS_DEPRECATED const std::string __getServerMD5Sum() const { return __s_getServerMD5Sum_(); }
00225
00226 private:
00227 static const char* __s_getMessageDefinition_() { return "geometry_msgs/Point[] corner\n\
00228 geometry_msgs/Point32[] push_direction\n\
00229 geometry_msgs/Point[] corner_convex\n\
00230 geometry_msgs/Point32[] push_direction_convex\n\
00231 \n\
00232 \n\
00233 ================================================================================\n\
00234 MSG: geometry_msgs/Point\n\
00235 # This contains the position of a point in free space\n\
00236 float64 x\n\
00237 float64 y\n\
00238 float64 z\n\
00239 \n\
00240 ================================================================================\n\
00241 MSG: geometry_msgs/Point32\n\
00242 # This contains the position of a point in free space(with 32 bits of precision).\n\
00243 # It is recommeded to use Point wherever possible instead of Point32. \n\
00244 # \n\
00245 # This recommendation is to promote interoperability. \n\
00246 #\n\
00247 # This message is designed to take up less space when sending\n\
00248 # lots of points at once, as in the case of a PointCloud. \n\
00249 \n\
00250 float32 x\n\
00251 float32 y\n\
00252 float32 z\n\
00253 "; }
00254 public:
00255 ROS_DEPRECATED static const std::string __s_getMessageDefinition() { return __s_getMessageDefinition_(); }
00256
00257 ROS_DEPRECATED const std::string __getMessageDefinition() const { return __s_getMessageDefinition_(); }
00258
00259 ROS_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
00260 {
00261 ros::serialization::OStream stream(write_ptr, 1000000000);
00262 ros::serialization::serialize(stream, corner);
00263 ros::serialization::serialize(stream, push_direction);
00264 ros::serialization::serialize(stream, corner_convex);
00265 ros::serialization::serialize(stream, push_direction_convex);
00266 return stream.getData();
00267 }
00268
00269 ROS_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr)
00270 {
00271 ros::serialization::IStream stream(read_ptr, 1000000000);
00272 ros::serialization::deserialize(stream, corner);
00273 ros::serialization::deserialize(stream, push_direction);
00274 ros::serialization::deserialize(stream, corner_convex);
00275 ros::serialization::deserialize(stream, push_direction_convex);
00276 return stream.getData();
00277 }
00278
00279 ROS_DEPRECATED virtual uint32_t serializationLength() const
00280 {
00281 uint32_t size = 0;
00282 size += ros::serialization::serializationLength(corner);
00283 size += ros::serialization::serializationLength(push_direction);
00284 size += ros::serialization::serializationLength(corner_convex);
00285 size += ros::serialization::serializationLength(push_direction_convex);
00286 return size;
00287 }
00288
00289 typedef boost::shared_ptr< ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> > Ptr;
00290 typedef boost::shared_ptr< ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> const> ConstPtr;
00291 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00292 };
00293 typedef ::pr2_interactive_segmentation::cornerFindResponse_<std::allocator<void> > cornerFindResponse;
00294
00295 typedef boost::shared_ptr< ::pr2_interactive_segmentation::cornerFindResponse> cornerFindResponsePtr;
00296 typedef boost::shared_ptr< ::pr2_interactive_segmentation::cornerFindResponse const> cornerFindResponseConstPtr;
00297
00298 struct cornerFind
00299 {
00300
00301 typedef cornerFindRequest Request;
00302 typedef cornerFindResponse Response;
00303 Request request;
00304 Response response;
00305
00306 typedef Request RequestType;
00307 typedef Response ResponseType;
00308 };
00309 }
00310
00311 namespace ros
00312 {
00313 namespace message_traits
00314 {
00315 template<class ContainerAllocator> struct IsMessage< ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> > : public TrueType {};
00316 template<class ContainerAllocator> struct IsMessage< ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> const> : public TrueType {};
00317 template<class ContainerAllocator>
00318 struct MD5Sum< ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> > {
00319 static const char* value()
00320 {
00321 return "b13d2865c5af2a64e6e30ab1b56e1dd5";
00322 }
00323
00324 static const char* value(const ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> &) { return value(); }
00325 static const uint64_t static_value1 = 0xb13d2865c5af2a64ULL;
00326 static const uint64_t static_value2 = 0xe6e30ab1b56e1dd5ULL;
00327 };
00328
00329 template<class ContainerAllocator>
00330 struct DataType< ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> > {
00331 static const char* value()
00332 {
00333 return "pr2_interactive_segmentation/cornerFindRequest";
00334 }
00335
00336 static const char* value(const ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> &) { return value(); }
00337 };
00338
00339 template<class ContainerAllocator>
00340 struct Definition< ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> > {
00341 static const char* value()
00342 {
00343 return "sensor_msgs/Image image\n\
00344 \n\
00345 ================================================================================\n\
00346 MSG: sensor_msgs/Image\n\
00347 # This message contains an uncompressed image\n\
00348 # (0, 0) is at top-left corner of image\n\
00349 #\n\
00350 \n\
00351 Header header # Header timestamp should be acquisition time of image\n\
00352 # Header frame_id should be optical frame of camera\n\
00353 # origin of frame should be optical center of cameara\n\
00354 # +x should point to the right in the image\n\
00355 # +y should point down in the image\n\
00356 # +z should point into to plane of the image\n\
00357 # If the frame_id here and the frame_id of the CameraInfo\n\
00358 # message associated with the image conflict\n\
00359 # the behavior is undefined\n\
00360 \n\
00361 uint32 height # image height, that is, number of rows\n\
00362 uint32 width # image width, that is, number of columns\n\
00363 \n\
00364 # The legal values for encoding are in file src/image_encodings.cpp\n\
00365 # If you want to standardize a new string format, join\n\
00366 # ros-users@lists.sourceforge.net and send an email proposing a new encoding.\n\
00367 \n\
00368 string encoding # Encoding of pixels -- channel meaning, ordering, size\n\
00369 # taken from the list of strings in src/image_encodings.cpp\n\
00370 \n\
00371 uint8 is_bigendian # is this data bigendian?\n\
00372 uint32 step # Full row length in bytes\n\
00373 uint8[] data # actual matrix data, size is (step * rows)\n\
00374 \n\
00375 ================================================================================\n\
00376 MSG: std_msgs/Header\n\
00377 # Standard metadata for higher-level stamped data types.\n\
00378 # This is generally used to communicate timestamped data \n\
00379 # in a particular coordinate frame.\n\
00380 # \n\
00381 # sequence ID: consecutively increasing ID \n\
00382 uint32 seq\n\
00383 #Two-integer timestamp that is expressed as:\n\
00384 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00385 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00386 # time-handling sugar is provided by the client library\n\
00387 time stamp\n\
00388 #Frame this data is associated with\n\
00389 # 0: no frame\n\
00390 # 1: global frame\n\
00391 string frame_id\n\
00392 \n\
00393 ";
00394 }
00395
00396 static const char* value(const ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> &) { return value(); }
00397 };
00398
00399 }
00400 }
00401
00402
00403 namespace ros
00404 {
00405 namespace message_traits
00406 {
00407 template<class ContainerAllocator> struct IsMessage< ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> > : public TrueType {};
00408 template<class ContainerAllocator> struct IsMessage< ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> const> : public TrueType {};
00409 template<class ContainerAllocator>
00410 struct MD5Sum< ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> > {
00411 static const char* value()
00412 {
00413 return "4b09fc7def371137a597cd91369399bc";
00414 }
00415
00416 static const char* value(const ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> &) { return value(); }
00417 static const uint64_t static_value1 = 0x4b09fc7def371137ULL;
00418 static const uint64_t static_value2 = 0xa597cd91369399bcULL;
00419 };
00420
00421 template<class ContainerAllocator>
00422 struct DataType< ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> > {
00423 static const char* value()
00424 {
00425 return "pr2_interactive_segmentation/cornerFindResponse";
00426 }
00427
00428 static const char* value(const ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> &) { return value(); }
00429 };
00430
00431 template<class ContainerAllocator>
00432 struct Definition< ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> > {
00433 static const char* value()
00434 {
00435 return "geometry_msgs/Point[] corner\n\
00436 geometry_msgs/Point32[] push_direction\n\
00437 geometry_msgs/Point[] corner_convex\n\
00438 geometry_msgs/Point32[] push_direction_convex\n\
00439 \n\
00440 \n\
00441 ================================================================================\n\
00442 MSG: geometry_msgs/Point\n\
00443 # This contains the position of a point in free space\n\
00444 float64 x\n\
00445 float64 y\n\
00446 float64 z\n\
00447 \n\
00448 ================================================================================\n\
00449 MSG: geometry_msgs/Point32\n\
00450 # This contains the position of a point in free space(with 32 bits of precision).\n\
00451 # It is recommeded to use Point wherever possible instead of Point32. \n\
00452 # \n\
00453 # This recommendation is to promote interoperability. \n\
00454 #\n\
00455 # This message is designed to take up less space when sending\n\
00456 # lots of points at once, as in the case of a PointCloud. \n\
00457 \n\
00458 float32 x\n\
00459 float32 y\n\
00460 float32 z\n\
00461 ";
00462 }
00463
00464 static const char* value(const ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> &) { return value(); }
00465 };
00466
00467 }
00468 }
00469
00470 namespace ros
00471 {
00472 namespace serialization
00473 {
00474
00475 template<class ContainerAllocator> struct Serializer< ::pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> >
00476 {
00477 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00478 {
00479 stream.next(m.image);
00480 }
00481
00482 ROS_DECLARE_ALLINONE_SERIALIZER;
00483 };
00484 }
00485 }
00486
00487
00488 namespace ros
00489 {
00490 namespace serialization
00491 {
00492
00493 template<class ContainerAllocator> struct Serializer< ::pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> >
00494 {
00495 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00496 {
00497 stream.next(m.corner);
00498 stream.next(m.push_direction);
00499 stream.next(m.corner_convex);
00500 stream.next(m.push_direction_convex);
00501 }
00502
00503 ROS_DECLARE_ALLINONE_SERIALIZER;
00504 };
00505 }
00506 }
00507
00508 namespace ros
00509 {
00510 namespace service_traits
00511 {
00512 template<>
00513 struct MD5Sum<pr2_interactive_segmentation::cornerFind> {
00514 static const char* value()
00515 {
00516 return "ac8d58fdb334d1d395d0c60410ea3eb1";
00517 }
00518
00519 static const char* value(const pr2_interactive_segmentation::cornerFind&) { return value(); }
00520 };
00521
00522 template<>
00523 struct DataType<pr2_interactive_segmentation::cornerFind> {
00524 static const char* value()
00525 {
00526 return "pr2_interactive_segmentation/cornerFind";
00527 }
00528
00529 static const char* value(const pr2_interactive_segmentation::cornerFind&) { return value(); }
00530 };
00531
00532 template<class ContainerAllocator>
00533 struct MD5Sum<pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> > {
00534 static const char* value()
00535 {
00536 return "ac8d58fdb334d1d395d0c60410ea3eb1";
00537 }
00538
00539 static const char* value(const pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> &) { return value(); }
00540 };
00541
00542 template<class ContainerAllocator>
00543 struct DataType<pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> > {
00544 static const char* value()
00545 {
00546 return "pr2_interactive_segmentation/cornerFind";
00547 }
00548
00549 static const char* value(const pr2_interactive_segmentation::cornerFindRequest_<ContainerAllocator> &) { return value(); }
00550 };
00551
00552 template<class ContainerAllocator>
00553 struct MD5Sum<pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> > {
00554 static const char* value()
00555 {
00556 return "ac8d58fdb334d1d395d0c60410ea3eb1";
00557 }
00558
00559 static const char* value(const pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> &) { return value(); }
00560 };
00561
00562 template<class ContainerAllocator>
00563 struct DataType<pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> > {
00564 static const char* value()
00565 {
00566 return "pr2_interactive_segmentation/cornerFind";
00567 }
00568
00569 static const char* value(const pr2_interactive_segmentation::cornerFindResponse_<ContainerAllocator> &) { return value(); }
00570 };
00571
00572 }
00573 }
00574
00575 #endif // PR2_INTERACTIVE_SEGMENTATION_SERVICE_CORNERFIND_H
00576