00001
00002 #ifndef TABLETOP_OBJECT_DETECTOR_SERVICE_TABLETOPDETECTION_H
00003 #define TABLETOP_OBJECT_DETECTOR_SERVICE_TABLETOPDETECTION_H
00004 #include <string>
00005 #include <vector>
00006 #include <ostream>
00007 #include "ros/serialization.h"
00008 #include "ros/builtin_message_traits.h"
00009 #include "ros/message_operations.h"
00010 #include "ros/message.h"
00011 #include "ros/time.h"
00012
00013 #include "ros/service_traits.h"
00014
00015
00016
00017 #include "tabletop_object_detector/TabletopDetectionResult.h"
00018
00019 namespace tabletop_object_detector
00020 {
00021 template <class ContainerAllocator>
00022 struct TabletopDetectionRequest_ : public ros::Message
00023 {
00024 typedef TabletopDetectionRequest_<ContainerAllocator> Type;
00025
00026 TabletopDetectionRequest_()
00027 : return_clusters(false)
00028 , return_models(false)
00029 , num_models(0)
00030 {
00031 }
00032
00033 TabletopDetectionRequest_(const ContainerAllocator& _alloc)
00034 : return_clusters(false)
00035 , return_models(false)
00036 , num_models(0)
00037 {
00038 }
00039
00040 typedef uint8_t _return_clusters_type;
00041 uint8_t return_clusters;
00042
00043 typedef uint8_t _return_models_type;
00044 uint8_t return_models;
00045
00046 typedef int32_t _num_models_type;
00047 int32_t num_models;
00048
00049
00050 private:
00051 static const char* __s_getDataType_() { return "tabletop_object_detector/TabletopDetectionRequest"; }
00052 public:
00053 ROS_DEPRECATED static const std::string __s_getDataType() { return __s_getDataType_(); }
00054
00055 ROS_DEPRECATED const std::string __getDataType() const { return __s_getDataType_(); }
00056
00057 private:
00058 static const char* __s_getMD5Sum_() { return "f42d30308c026708dba683b43ccd22b8"; }
00059 public:
00060 ROS_DEPRECATED static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
00061
00062 ROS_DEPRECATED const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
00063
00064 private:
00065 static const char* __s_getServerMD5Sum_() { return "0fb5dfc7b06846e22a42e6d876eab8e1"; }
00066 public:
00067 ROS_DEPRECATED static const std::string __s_getServerMD5Sum() { return __s_getServerMD5Sum_(); }
00068
00069 ROS_DEPRECATED const std::string __getServerMD5Sum() const { return __s_getServerMD5Sum_(); }
00070
00071 private:
00072 static const char* __s_getMessageDefinition_() { return "\n\
00073 \n\
00074 \n\
00075 \n\
00076 \n\
00077 bool return_clusters\n\
00078 \n\
00079 \n\
00080 \n\
00081 bool return_models\n\
00082 \n\
00083 \n\
00084 int32 num_models\n\
00085 \n\
00086 "; }
00087 public:
00088 ROS_DEPRECATED static const std::string __s_getMessageDefinition() { return __s_getMessageDefinition_(); }
00089
00090 ROS_DEPRECATED const std::string __getMessageDefinition() const { return __s_getMessageDefinition_(); }
00091
00092 ROS_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
00093 {
00094 ros::serialization::OStream stream(write_ptr, 1000000000);
00095 ros::serialization::serialize(stream, return_clusters);
00096 ros::serialization::serialize(stream, return_models);
00097 ros::serialization::serialize(stream, num_models);
00098 return stream.getData();
00099 }
00100
00101 ROS_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr)
00102 {
00103 ros::serialization::IStream stream(read_ptr, 1000000000);
00104 ros::serialization::deserialize(stream, return_clusters);
00105 ros::serialization::deserialize(stream, return_models);
00106 ros::serialization::deserialize(stream, num_models);
00107 return stream.getData();
00108 }
00109
00110 ROS_DEPRECATED virtual uint32_t serializationLength() const
00111 {
00112 uint32_t size = 0;
00113 size += ros::serialization::serializationLength(return_clusters);
00114 size += ros::serialization::serializationLength(return_models);
00115 size += ros::serialization::serializationLength(num_models);
00116 return size;
00117 }
00118
00119 typedef boost::shared_ptr< ::tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> > Ptr;
00120 typedef boost::shared_ptr< ::tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> const> ConstPtr;
00121 };
00122 typedef ::tabletop_object_detector::TabletopDetectionRequest_<std::allocator<void> > TabletopDetectionRequest;
00123
00124 typedef boost::shared_ptr< ::tabletop_object_detector::TabletopDetectionRequest> TabletopDetectionRequestPtr;
00125 typedef boost::shared_ptr< ::tabletop_object_detector::TabletopDetectionRequest const> TabletopDetectionRequestConstPtr;
00126
00127
00128 template <class ContainerAllocator>
00129 struct TabletopDetectionResponse_ : public ros::Message
00130 {
00131 typedef TabletopDetectionResponse_<ContainerAllocator> Type;
00132
00133 TabletopDetectionResponse_()
00134 : detection()
00135 {
00136 }
00137
00138 TabletopDetectionResponse_(const ContainerAllocator& _alloc)
00139 : detection(_alloc)
00140 {
00141 }
00142
00143 typedef ::tabletop_object_detector::TabletopDetectionResult_<ContainerAllocator> _detection_type;
00144 ::tabletop_object_detector::TabletopDetectionResult_<ContainerAllocator> detection;
00145
00146
00147 private:
00148 static const char* __s_getDataType_() { return "tabletop_object_detector/TabletopDetectionResponse"; }
00149 public:
00150 ROS_DEPRECATED static const std::string __s_getDataType() { return __s_getDataType_(); }
00151
00152 ROS_DEPRECATED const std::string __getDataType() const { return __s_getDataType_(); }
00153
00154 private:
00155 static const char* __s_getMD5Sum_() { return "7d44034c76d519b86ba5c0a56ff5cf38"; }
00156 public:
00157 ROS_DEPRECATED static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
00158
00159 ROS_DEPRECATED const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
00160
00161 private:
00162 static const char* __s_getServerMD5Sum_() { return "0fb5dfc7b06846e22a42e6d876eab8e1"; }
00163 public:
00164 ROS_DEPRECATED static const std::string __s_getServerMD5Sum() { return __s_getServerMD5Sum_(); }
00165
00166 ROS_DEPRECATED const std::string __getServerMD5Sum() const { return __s_getServerMD5Sum_(); }
00167
00168 private:
00169 static const char* __s_getMessageDefinition_() { return "\n\
00170 TabletopDetectionResult detection\n\
00171 \n\
00172 \n\
00173 ================================================================================\n\
00174 MSG: tabletop_object_detector/TabletopDetectionResult\n\
00175 # Contains all the information from one run of the tabletop detection node\n\
00176 \n\
00177 # The information for the plane that has been detected\n\
00178 Table table\n\
00179 \n\
00180 # The raw clusters detected in the scan \n\
00181 sensor_msgs/PointCloud[] clusters\n\
00182 \n\
00183 # The list of potential models that have been detected for each cluster\n\
00184 # An empty list will be returned for a cluster that has no recognition results at all\n\
00185 household_objects_database_msgs/DatabaseModelPoseList[] models\n\
00186 \n\
00187 # For each cluster, the index of the list of models that was fit to that cluster\n\
00188 # keep in mind that multiple raw clusters can correspond to a single fit\n\
00189 int32[] cluster_model_indices\n\
00190 \n\
00191 # Whether the detection has succeeded or failed\n\
00192 int32 NO_CLOUD_RECEIVED = 1\n\
00193 int32 NO_TABLE = 2\n\
00194 int32 OTHER_ERROR = 3\n\
00195 int32 SUCCESS = 4\n\
00196 int32 result\n\
00197 \n\
00198 ================================================================================\n\
00199 MSG: tabletop_object_detector/Table\n\
00200 # Informs that a planar table has been detected at a given location\n\
00201 \n\
00202 # The pose gives you the transform that take you to the coordinate system\n\
00203 # of the table, with the origin somewhere in the table plane and the \n\
00204 # z axis normal to the plane\n\
00205 geometry_msgs/PoseStamped pose\n\
00206 \n\
00207 # These values give you the observed extents of the table, along x and y,\n\
00208 # in the table's own coordinate system (above)\n\
00209 # there is no guarantee that the origin of the table coordinate system is\n\
00210 # inside the boundary defined by these values. \n\
00211 float32 x_min\n\
00212 float32 x_max\n\
00213 float32 y_min\n\
00214 float32 y_max\n\
00215 \n\
00216 # There is no guarantee that the table doe NOT extend further than these \n\
00217 # values; this is just as far as we've observed it.\n\
00218 \n\
00219 ================================================================================\n\
00220 MSG: geometry_msgs/PoseStamped\n\
00221 # A Pose with reference coordinate frame and timestamp\n\
00222 Header header\n\
00223 Pose pose\n\
00224 \n\
00225 ================================================================================\n\
00226 MSG: std_msgs/Header\n\
00227 # Standard metadata for higher-level stamped data types.\n\
00228 # This is generally used to communicate timestamped data \n\
00229 # in a particular coordinate frame.\n\
00230 # \n\
00231 # sequence ID: consecutively increasing ID \n\
00232 uint32 seq\n\
00233 #Two-integer timestamp that is expressed as:\n\
00234 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00235 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00236 # time-handling sugar is provided by the client library\n\
00237 time stamp\n\
00238 #Frame this data is associated with\n\
00239 # 0: no frame\n\
00240 # 1: global frame\n\
00241 string frame_id\n\
00242 \n\
00243 ================================================================================\n\
00244 MSG: geometry_msgs/Pose\n\
00245 # A representation of pose in free space, composed of postion and orientation. \n\
00246 Point position\n\
00247 Quaternion orientation\n\
00248 \n\
00249 ================================================================================\n\
00250 MSG: geometry_msgs/Point\n\
00251 # This contains the position of a point in free space\n\
00252 float64 x\n\
00253 float64 y\n\
00254 float64 z\n\
00255 \n\
00256 ================================================================================\n\
00257 MSG: geometry_msgs/Quaternion\n\
00258 # This represents an orientation in free space in quaternion form.\n\
00259 \n\
00260 float64 x\n\
00261 float64 y\n\
00262 float64 z\n\
00263 float64 w\n\
00264 \n\
00265 ================================================================================\n\
00266 MSG: sensor_msgs/PointCloud\n\
00267 # This message holds a collection of 3d points, plus optional additional\n\
00268 # information about each point.\n\
00269 \n\
00270 # Time of sensor data acquisition, coordinate frame ID.\n\
00271 Header header\n\
00272 \n\
00273 # Array of 3d points. Each Point32 should be interpreted as a 3d point\n\
00274 # in the frame given in the header.\n\
00275 geometry_msgs/Point32[] points\n\
00276 \n\
00277 # Each channel should have the same number of elements as points array,\n\
00278 # and the data in each channel should correspond 1:1 with each point.\n\
00279 # Channel names in common practice are listed in ChannelFloat32.msg.\n\
00280 ChannelFloat32[] channels\n\
00281 \n\
00282 ================================================================================\n\
00283 MSG: geometry_msgs/Point32\n\
00284 # This contains the position of a point in free space(with 32 bits of precision).\n\
00285 # It is recommeded to use Point wherever possible instead of Point32. \n\
00286 # \n\
00287 # This recommendation is to promote interoperability. \n\
00288 #\n\
00289 # This message is designed to take up less space when sending\n\
00290 # lots of points at once, as in the case of a PointCloud. \n\
00291 \n\
00292 float32 x\n\
00293 float32 y\n\
00294 float32 z\n\
00295 ================================================================================\n\
00296 MSG: sensor_msgs/ChannelFloat32\n\
00297 # This message is used by the PointCloud message to hold optional data\n\
00298 # associated with each point in the cloud. The length of the values\n\
00299 # array should be the same as the length of the points array in the\n\
00300 # PointCloud, and each value should be associated with the corresponding\n\
00301 # point.\n\
00302 \n\
00303 # Channel names in existing practice include:\n\
00304 # \"u\", \"v\" - row and column (respectively) in the left stereo image.\n\
00305 # This is opposite to usual conventions but remains for\n\
00306 # historical reasons. The newer PointCloud2 message has no\n\
00307 # such problem.\n\
00308 # \"rgb\" - For point clouds produced by color stereo cameras. uint8\n\
00309 # (R,G,B) values packed into the least significant 24 bits,\n\
00310 # in order.\n\
00311 # \"intensity\" - laser or pixel intensity.\n\
00312 # \"distance\"\n\
00313 \n\
00314 # The channel name should give semantics of the channel (e.g.\n\
00315 # \"intensity\" instead of \"value\").\n\
00316 string name\n\
00317 \n\
00318 # The values array should be 1-1 with the elements of the associated\n\
00319 # PointCloud.\n\
00320 float32[] values\n\
00321 \n\
00322 ================================================================================\n\
00323 MSG: household_objects_database_msgs/DatabaseModelPoseList\n\
00324 # stores a list of possible database models recognition results\n\
00325 DatabaseModelPose[] model_list\n\
00326 ================================================================================\n\
00327 MSG: household_objects_database_msgs/DatabaseModelPose\n\
00328 # Informs that a specific model from the Model Database has been \n\
00329 # identified at a certain location\n\
00330 \n\
00331 # the database id of the model\n\
00332 int32 model_id\n\
00333 \n\
00334 # the pose that it can be found in\n\
00335 geometry_msgs/PoseStamped pose\n\
00336 \n\
00337 # a measure of the confidence level in this detection result\n\
00338 float32 confidence\n\
00339 "; }
00340 public:
00341 ROS_DEPRECATED static const std::string __s_getMessageDefinition() { return __s_getMessageDefinition_(); }
00342
00343 ROS_DEPRECATED const std::string __getMessageDefinition() const { return __s_getMessageDefinition_(); }
00344
00345 ROS_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
00346 {
00347 ros::serialization::OStream stream(write_ptr, 1000000000);
00348 ros::serialization::serialize(stream, detection);
00349 return stream.getData();
00350 }
00351
00352 ROS_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr)
00353 {
00354 ros::serialization::IStream stream(read_ptr, 1000000000);
00355 ros::serialization::deserialize(stream, detection);
00356 return stream.getData();
00357 }
00358
00359 ROS_DEPRECATED virtual uint32_t serializationLength() const
00360 {
00361 uint32_t size = 0;
00362 size += ros::serialization::serializationLength(detection);
00363 return size;
00364 }
00365
00366 typedef boost::shared_ptr< ::tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> > Ptr;
00367 typedef boost::shared_ptr< ::tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> const> ConstPtr;
00368 };
00369 typedef ::tabletop_object_detector::TabletopDetectionResponse_<std::allocator<void> > TabletopDetectionResponse;
00370
00371 typedef boost::shared_ptr< ::tabletop_object_detector::TabletopDetectionResponse> TabletopDetectionResponsePtr;
00372 typedef boost::shared_ptr< ::tabletop_object_detector::TabletopDetectionResponse const> TabletopDetectionResponseConstPtr;
00373
00374 struct TabletopDetection
00375 {
00376
00377 typedef TabletopDetectionRequest Request;
00378 typedef TabletopDetectionResponse Response;
00379 Request request;
00380 Response response;
00381
00382 typedef Request RequestType;
00383 typedef Response ResponseType;
00384 };
00385 }
00386
00387 namespace ros
00388 {
00389 namespace message_traits
00390 {
00391 template<class ContainerAllocator>
00392 struct MD5Sum< ::tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> > {
00393 static const char* value()
00394 {
00395 return "f42d30308c026708dba683b43ccd22b8";
00396 }
00397
00398 static const char* value(const ::tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> &) { return value(); }
00399 static const uint64_t static_value1 = 0xf42d30308c026708ULL;
00400 static const uint64_t static_value2 = 0xdba683b43ccd22b8ULL;
00401 };
00402
00403 template<class ContainerAllocator>
00404 struct DataType< ::tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> > {
00405 static const char* value()
00406 {
00407 return "tabletop_object_detector/TabletopDetectionRequest";
00408 }
00409
00410 static const char* value(const ::tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> &) { return value(); }
00411 };
00412
00413 template<class ContainerAllocator>
00414 struct Definition< ::tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> > {
00415 static const char* value()
00416 {
00417 return "\n\
00418 \n\
00419 \n\
00420 \n\
00421 \n\
00422 bool return_clusters\n\
00423 \n\
00424 \n\
00425 \n\
00426 bool return_models\n\
00427 \n\
00428 \n\
00429 int32 num_models\n\
00430 \n\
00431 ";
00432 }
00433
00434 static const char* value(const ::tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> &) { return value(); }
00435 };
00436
00437 template<class ContainerAllocator> struct IsFixedSize< ::tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> > : public TrueType {};
00438 }
00439 }
00440
00441
00442 namespace ros
00443 {
00444 namespace message_traits
00445 {
00446 template<class ContainerAllocator>
00447 struct MD5Sum< ::tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> > {
00448 static const char* value()
00449 {
00450 return "7d44034c76d519b86ba5c0a56ff5cf38";
00451 }
00452
00453 static const char* value(const ::tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> &) { return value(); }
00454 static const uint64_t static_value1 = 0x7d44034c76d519b8ULL;
00455 static const uint64_t static_value2 = 0x6ba5c0a56ff5cf38ULL;
00456 };
00457
00458 template<class ContainerAllocator>
00459 struct DataType< ::tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> > {
00460 static const char* value()
00461 {
00462 return "tabletop_object_detector/TabletopDetectionResponse";
00463 }
00464
00465 static const char* value(const ::tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> &) { return value(); }
00466 };
00467
00468 template<class ContainerAllocator>
00469 struct Definition< ::tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> > {
00470 static const char* value()
00471 {
00472 return "\n\
00473 TabletopDetectionResult detection\n\
00474 \n\
00475 \n\
00476 ================================================================================\n\
00477 MSG: tabletop_object_detector/TabletopDetectionResult\n\
00478 # Contains all the information from one run of the tabletop detection node\n\
00479 \n\
00480 # The information for the plane that has been detected\n\
00481 Table table\n\
00482 \n\
00483 # The raw clusters detected in the scan \n\
00484 sensor_msgs/PointCloud[] clusters\n\
00485 \n\
00486 # The list of potential models that have been detected for each cluster\n\
00487 # An empty list will be returned for a cluster that has no recognition results at all\n\
00488 household_objects_database_msgs/DatabaseModelPoseList[] models\n\
00489 \n\
00490 # For each cluster, the index of the list of models that was fit to that cluster\n\
00491 # keep in mind that multiple raw clusters can correspond to a single fit\n\
00492 int32[] cluster_model_indices\n\
00493 \n\
00494 # Whether the detection has succeeded or failed\n\
00495 int32 NO_CLOUD_RECEIVED = 1\n\
00496 int32 NO_TABLE = 2\n\
00497 int32 OTHER_ERROR = 3\n\
00498 int32 SUCCESS = 4\n\
00499 int32 result\n\
00500 \n\
00501 ================================================================================\n\
00502 MSG: tabletop_object_detector/Table\n\
00503 # Informs that a planar table has been detected at a given location\n\
00504 \n\
00505 # The pose gives you the transform that take you to the coordinate system\n\
00506 # of the table, with the origin somewhere in the table plane and the \n\
00507 # z axis normal to the plane\n\
00508 geometry_msgs/PoseStamped pose\n\
00509 \n\
00510 # These values give you the observed extents of the table, along x and y,\n\
00511 # in the table's own coordinate system (above)\n\
00512 # there is no guarantee that the origin of the table coordinate system is\n\
00513 # inside the boundary defined by these values. \n\
00514 float32 x_min\n\
00515 float32 x_max\n\
00516 float32 y_min\n\
00517 float32 y_max\n\
00518 \n\
00519 # There is no guarantee that the table doe NOT extend further than these \n\
00520 # values; this is just as far as we've observed it.\n\
00521 \n\
00522 ================================================================================\n\
00523 MSG: geometry_msgs/PoseStamped\n\
00524 # A Pose with reference coordinate frame and timestamp\n\
00525 Header header\n\
00526 Pose pose\n\
00527 \n\
00528 ================================================================================\n\
00529 MSG: std_msgs/Header\n\
00530 # Standard metadata for higher-level stamped data types.\n\
00531 # This is generally used to communicate timestamped data \n\
00532 # in a particular coordinate frame.\n\
00533 # \n\
00534 # sequence ID: consecutively increasing ID \n\
00535 uint32 seq\n\
00536 #Two-integer timestamp that is expressed as:\n\
00537 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00538 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00539 # time-handling sugar is provided by the client library\n\
00540 time stamp\n\
00541 #Frame this data is associated with\n\
00542 # 0: no frame\n\
00543 # 1: global frame\n\
00544 string frame_id\n\
00545 \n\
00546 ================================================================================\n\
00547 MSG: geometry_msgs/Pose\n\
00548 # A representation of pose in free space, composed of postion and orientation. \n\
00549 Point position\n\
00550 Quaternion orientation\n\
00551 \n\
00552 ================================================================================\n\
00553 MSG: geometry_msgs/Point\n\
00554 # This contains the position of a point in free space\n\
00555 float64 x\n\
00556 float64 y\n\
00557 float64 z\n\
00558 \n\
00559 ================================================================================\n\
00560 MSG: geometry_msgs/Quaternion\n\
00561 # This represents an orientation in free space in quaternion form.\n\
00562 \n\
00563 float64 x\n\
00564 float64 y\n\
00565 float64 z\n\
00566 float64 w\n\
00567 \n\
00568 ================================================================================\n\
00569 MSG: sensor_msgs/PointCloud\n\
00570 # This message holds a collection of 3d points, plus optional additional\n\
00571 # information about each point.\n\
00572 \n\
00573 # Time of sensor data acquisition, coordinate frame ID.\n\
00574 Header header\n\
00575 \n\
00576 # Array of 3d points. Each Point32 should be interpreted as a 3d point\n\
00577 # in the frame given in the header.\n\
00578 geometry_msgs/Point32[] points\n\
00579 \n\
00580 # Each channel should have the same number of elements as points array,\n\
00581 # and the data in each channel should correspond 1:1 with each point.\n\
00582 # Channel names in common practice are listed in ChannelFloat32.msg.\n\
00583 ChannelFloat32[] channels\n\
00584 \n\
00585 ================================================================================\n\
00586 MSG: geometry_msgs/Point32\n\
00587 # This contains the position of a point in free space(with 32 bits of precision).\n\
00588 # It is recommeded to use Point wherever possible instead of Point32. \n\
00589 # \n\
00590 # This recommendation is to promote interoperability. \n\
00591 #\n\
00592 # This message is designed to take up less space when sending\n\
00593 # lots of points at once, as in the case of a PointCloud. \n\
00594 \n\
00595 float32 x\n\
00596 float32 y\n\
00597 float32 z\n\
00598 ================================================================================\n\
00599 MSG: sensor_msgs/ChannelFloat32\n\
00600 # This message is used by the PointCloud message to hold optional data\n\
00601 # associated with each point in the cloud. The length of the values\n\
00602 # array should be the same as the length of the points array in the\n\
00603 # PointCloud, and each value should be associated with the corresponding\n\
00604 # point.\n\
00605 \n\
00606 # Channel names in existing practice include:\n\
00607 # \"u\", \"v\" - row and column (respectively) in the left stereo image.\n\
00608 # This is opposite to usual conventions but remains for\n\
00609 # historical reasons. The newer PointCloud2 message has no\n\
00610 # such problem.\n\
00611 # \"rgb\" - For point clouds produced by color stereo cameras. uint8\n\
00612 # (R,G,B) values packed into the least significant 24 bits,\n\
00613 # in order.\n\
00614 # \"intensity\" - laser or pixel intensity.\n\
00615 # \"distance\"\n\
00616 \n\
00617 # The channel name should give semantics of the channel (e.g.\n\
00618 # \"intensity\" instead of \"value\").\n\
00619 string name\n\
00620 \n\
00621 # The values array should be 1-1 with the elements of the associated\n\
00622 # PointCloud.\n\
00623 float32[] values\n\
00624 \n\
00625 ================================================================================\n\
00626 MSG: household_objects_database_msgs/DatabaseModelPoseList\n\
00627 # stores a list of possible database models recognition results\n\
00628 DatabaseModelPose[] model_list\n\
00629 ================================================================================\n\
00630 MSG: household_objects_database_msgs/DatabaseModelPose\n\
00631 # Informs that a specific model from the Model Database has been \n\
00632 # identified at a certain location\n\
00633 \n\
00634 # the database id of the model\n\
00635 int32 model_id\n\
00636 \n\
00637 # the pose that it can be found in\n\
00638 geometry_msgs/PoseStamped pose\n\
00639 \n\
00640 # a measure of the confidence level in this detection result\n\
00641 float32 confidence\n\
00642 ";
00643 }
00644
00645 static const char* value(const ::tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> &) { return value(); }
00646 };
00647
00648 }
00649 }
00650
00651 namespace ros
00652 {
00653 namespace serialization
00654 {
00655
00656 template<class ContainerAllocator> struct Serializer< ::tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> >
00657 {
00658 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00659 {
00660 stream.next(m.return_clusters);
00661 stream.next(m.return_models);
00662 stream.next(m.num_models);
00663 }
00664
00665 ROS_DECLARE_ALLINONE_SERIALIZER;
00666 };
00667 }
00668 }
00669
00670
00671 namespace ros
00672 {
00673 namespace serialization
00674 {
00675
00676 template<class ContainerAllocator> struct Serializer< ::tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> >
00677 {
00678 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00679 {
00680 stream.next(m.detection);
00681 }
00682
00683 ROS_DECLARE_ALLINONE_SERIALIZER;
00684 };
00685 }
00686 }
00687
00688 namespace ros
00689 {
00690 namespace service_traits
00691 {
00692 template<>
00693 struct MD5Sum<tabletop_object_detector::TabletopDetection> {
00694 static const char* value()
00695 {
00696 return "0fb5dfc7b06846e22a42e6d876eab8e1";
00697 }
00698
00699 static const char* value(const tabletop_object_detector::TabletopDetection&) { return value(); }
00700 };
00701
00702 template<>
00703 struct DataType<tabletop_object_detector::TabletopDetection> {
00704 static const char* value()
00705 {
00706 return "tabletop_object_detector/TabletopDetection";
00707 }
00708
00709 static const char* value(const tabletop_object_detector::TabletopDetection&) { return value(); }
00710 };
00711
00712 template<class ContainerAllocator>
00713 struct MD5Sum<tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> > {
00714 static const char* value()
00715 {
00716 return "0fb5dfc7b06846e22a42e6d876eab8e1";
00717 }
00718
00719 static const char* value(const tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> &) { return value(); }
00720 };
00721
00722 template<class ContainerAllocator>
00723 struct DataType<tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> > {
00724 static const char* value()
00725 {
00726 return "tabletop_object_detector/TabletopDetection";
00727 }
00728
00729 static const char* value(const tabletop_object_detector::TabletopDetectionRequest_<ContainerAllocator> &) { return value(); }
00730 };
00731
00732 template<class ContainerAllocator>
00733 struct MD5Sum<tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> > {
00734 static const char* value()
00735 {
00736 return "0fb5dfc7b06846e22a42e6d876eab8e1";
00737 }
00738
00739 static const char* value(const tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> &) { return value(); }
00740 };
00741
00742 template<class ContainerAllocator>
00743 struct DataType<tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> > {
00744 static const char* value()
00745 {
00746 return "tabletop_object_detector/TabletopDetection";
00747 }
00748
00749 static const char* value(const tabletop_object_detector::TabletopDetectionResponse_<ContainerAllocator> &) { return value(); }
00750 };
00751
00752 }
00753 }
00754
00755 #endif // TABLETOP_OBJECT_DETECTOR_SERVICE_TABLETOPDETECTION_H
00756