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