00001
00002 #ifndef ARTICULATION_MSGS_SERVICE_ALIGNMODELSRV_H
00003 #define ARTICULATION_MSGS_SERVICE_ALIGNMODELSRV_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 "articulation_msgs/ModelMsg.h"
00020 #include "articulation_msgs/ModelMsg.h"
00021
00022
00023 #include "articulation_msgs/ModelMsg.h"
00024 #include "articulation_msgs/ModelMsg.h"
00025
00026 namespace articulation_msgs
00027 {
00028 template <class ContainerAllocator>
00029 struct AlignModelSrvRequest_ {
00030 typedef AlignModelSrvRequest_<ContainerAllocator> Type;
00031
00032 AlignModelSrvRequest_()
00033 : model()
00034 , data()
00035 {
00036 }
00037
00038 AlignModelSrvRequest_(const ContainerAllocator& _alloc)
00039 : model(_alloc)
00040 , data(_alloc)
00041 {
00042 }
00043
00044 typedef ::articulation_msgs::ModelMsg_<ContainerAllocator> _model_type;
00045 ::articulation_msgs::ModelMsg_<ContainerAllocator> model;
00046
00047 typedef ::articulation_msgs::ModelMsg_<ContainerAllocator> _data_type;
00048 ::articulation_msgs::ModelMsg_<ContainerAllocator> data;
00049
00050
00051 typedef boost::shared_ptr< ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> > Ptr;
00052 typedef boost::shared_ptr< ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> const> ConstPtr;
00053 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00054 };
00055 typedef ::articulation_msgs::AlignModelSrvRequest_<std::allocator<void> > AlignModelSrvRequest;
00056
00057 typedef boost::shared_ptr< ::articulation_msgs::AlignModelSrvRequest> AlignModelSrvRequestPtr;
00058 typedef boost::shared_ptr< ::articulation_msgs::AlignModelSrvRequest const> AlignModelSrvRequestConstPtr;
00059
00060
00061 template <class ContainerAllocator>
00062 struct AlignModelSrvResponse_ {
00063 typedef AlignModelSrvResponse_<ContainerAllocator> Type;
00064
00065 AlignModelSrvResponse_()
00066 : model_aligned()
00067 , data_aligned()
00068 , R()
00069 , T()
00070 , dist_rot(0.0)
00071 , dist_trans(0.0)
00072 {
00073 R.assign(0.0);
00074 T.assign(0.0);
00075 }
00076
00077 AlignModelSrvResponse_(const ContainerAllocator& _alloc)
00078 : model_aligned(_alloc)
00079 , data_aligned(_alloc)
00080 , R()
00081 , T()
00082 , dist_rot(0.0)
00083 , dist_trans(0.0)
00084 {
00085 R.assign(0.0);
00086 T.assign(0.0);
00087 }
00088
00089 typedef ::articulation_msgs::ModelMsg_<ContainerAllocator> _model_aligned_type;
00090 ::articulation_msgs::ModelMsg_<ContainerAllocator> model_aligned;
00091
00092 typedef ::articulation_msgs::ModelMsg_<ContainerAllocator> _data_aligned_type;
00093 ::articulation_msgs::ModelMsg_<ContainerAllocator> data_aligned;
00094
00095 typedef boost::array<double, 9> _R_type;
00096 boost::array<double, 9> R;
00097
00098 typedef boost::array<double, 3> _T_type;
00099 boost::array<double, 3> T;
00100
00101 typedef double _dist_rot_type;
00102 double dist_rot;
00103
00104 typedef float _dist_trans_type;
00105 float dist_trans;
00106
00107
00108 typedef boost::shared_ptr< ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> > Ptr;
00109 typedef boost::shared_ptr< ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> const> ConstPtr;
00110 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00111 };
00112 typedef ::articulation_msgs::AlignModelSrvResponse_<std::allocator<void> > AlignModelSrvResponse;
00113
00114 typedef boost::shared_ptr< ::articulation_msgs::AlignModelSrvResponse> AlignModelSrvResponsePtr;
00115 typedef boost::shared_ptr< ::articulation_msgs::AlignModelSrvResponse const> AlignModelSrvResponseConstPtr;
00116
00117 struct AlignModelSrv
00118 {
00119
00120 typedef AlignModelSrvRequest Request;
00121 typedef AlignModelSrvResponse 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< ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> > : public TrueType {};
00135 template<class ContainerAllocator> struct IsMessage< ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> const> : public TrueType {};
00136 template<class ContainerAllocator>
00137 struct MD5Sum< ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> > {
00138 static const char* value()
00139 {
00140 return "5c799f696feeb9619c32ac4dd7352a60";
00141 }
00142
00143 static const char* value(const ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> &) { return value(); }
00144 static const uint64_t static_value1 = 0x5c799f696feeb961ULL;
00145 static const uint64_t static_value2 = 0x9c32ac4dd7352a60ULL;
00146 };
00147
00148 template<class ContainerAllocator>
00149 struct DataType< ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> > {
00150 static const char* value()
00151 {
00152 return "articulation_msgs/AlignModelSrvRequest";
00153 }
00154
00155 static const char* value(const ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> &) { return value(); }
00156 };
00157
00158 template<class ContainerAllocator>
00159 struct Definition< ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> > {
00160 static const char* value()
00161 {
00162 return "\n\
00163 \n\
00164 \n\
00165 \n\
00166 \n\
00167 \n\
00168 \n\
00169 articulation_msgs/ModelMsg model\n\
00170 articulation_msgs/ModelMsg data\n\
00171 \n\
00172 ================================================================================\n\
00173 MSG: articulation_msgs/ModelMsg\n\
00174 # Single kinematic model\n\
00175 #\n\
00176 # A kinematic model is defined by its model class name, and a set of parameters. \n\
00177 # The client may additionally specify a model id, that can be used to colorize the\n\
00178 # model when visualized using the RVIZ model display.\n\
00179 # \n\
00180 # For a list of currently implemented models, see the documetation at\n\
00181 # http://www.ros.org/wiki/articulation_models\n\
00182 #\n\
00183 #\n\
00184 \n\
00185 std_msgs/Header header # frame and timestamp\n\
00186 \n\
00187 int32 id # user specified model id\n\
00188 string name # name of the model family (e.g. \"rotational\",\n\
00189 # \"prismatic\", \"pca-gp\", \"rigid\")\n\
00190 articulation_msgs/ParamMsg[] params # model parameters\n\
00191 articulation_msgs/TrackMsg track # trajectory from which the model is estimated, or\n\
00192 # that is evaluated using the model\n\
00193 \n\
00194 ================================================================================\n\
00195 MSG: std_msgs/Header\n\
00196 # Standard metadata for higher-level stamped data types.\n\
00197 # This is generally used to communicate timestamped data \n\
00198 # in a particular coordinate frame.\n\
00199 # \n\
00200 # sequence ID: consecutively increasing ID \n\
00201 uint32 seq\n\
00202 #Two-integer timestamp that is expressed as:\n\
00203 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00204 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00205 # time-handling sugar is provided by the client library\n\
00206 time stamp\n\
00207 #Frame this data is associated with\n\
00208 # 0: no frame\n\
00209 # 1: global frame\n\
00210 string frame_id\n\
00211 \n\
00212 ================================================================================\n\
00213 MSG: articulation_msgs/ParamMsg\n\
00214 # Single parameter passed to or from model fitting\n\
00215 #\n\
00216 # This mechanism allows to flexibly pass parameters to \n\
00217 # model fitting (and vice versa). Note that these parameters \n\
00218 # are model-specific: A client may supply additional\n\
00219 # parameters to the model estimator, and, similarly, a estimator\n\
00220 # may add the estimated model parameters to the model message.\n\
00221 # When the model is then evaluated, for example to make predictions\n\
00222 # or to compute the likelihood, the model class can then use\n\
00223 # these parameters.\n\
00224 #\n\
00225 # A parameter has a name, a value, and a type. The type globally\n\
00226 # indicates whether it is a prior parameter (prior to model fitting),\n\
00227 # or a model parameter (found during model fitting, using a maximum-\n\
00228 # likelihood estimator), or a cached evaluation (e.g., the likelihood\n\
00229 # or the BIC are a typical \"side\"-product of model estimation, and\n\
00230 # can therefore already be cached).\n\
00231 #\n\
00232 # For a list of currently used parameters, see the documentation at\n\
00233 # http://www.ros.org/wiki/articulation_models\n\
00234 #\n\
00235 \n\
00236 uint8 PRIOR=0 # indicates a prior model parameter \n\
00237 # (e.g., \"sigma_position\")\n\
00238 uint8 PARAM=1 # indicates a estimated model parameter \n\
00239 # (e.g., \"rot_radius\", the estimated radius)\n\
00240 uint8 EVAL=2 # indicates a cached evaluation of the model, given \n\
00241 # the current trajectory\n\
00242 # (e.g., \"loglikelihood\", the log likelihood of the\n\
00243 # data, given the model and its parameters)\n\
00244 \n\
00245 string name # name of the parameter\n\
00246 float64 value # value of the parameter\n\
00247 uint8 type # type of the parameter (PRIOR, PARAM, EVAL)\n\
00248 \n\
00249 \n\
00250 ================================================================================\n\
00251 MSG: articulation_msgs/TrackMsg\n\
00252 # Single kinematic trajectory\n\
00253 #\n\
00254 # This message contains a kinematic trajectory. The trajectory is specified\n\
00255 # as a vector of 6D poses. An additional flag, track_type, indicates whether\n\
00256 # the track is valid, and whether it includes orientation. The track id\n\
00257 # can be used for automatic coloring in the RVIZ track plugin, and can be \n\
00258 # freely chosen by the client. \n\
00259 #\n\
00260 # A model is fitting only from the trajectory stored in the pose[]-vector. \n\
00261 # Additional information may be associated to each pose using the channels\n\
00262 # vector, with arbitrary # fields (e.g., to include applied/measured forces). \n\
00263 #\n\
00264 # After model evaluation,\n\
00265 # also the associated configurations of the object are stored in the channels,\n\
00266 # named \"q[0]\"..\"q[DOF-1]\", where DOF is the number of degrees of freedom.\n\
00267 # Model evaluation also projects the poses in the pose vector onto the model,\n\
00268 # and stores these ideal poses in the vector pose_projected. Further, during model\n\
00269 # evaluation, a new set of (uniform) configurations over the valid configuration\n\
00270 # range is sampled, and the result is stored in pose_resampled.\n\
00271 # The vector pose_flags contains additional display flags for the poses in the\n\
00272 # pose vector, for example, whether a pose is visible and/or\n\
00273 # the end of a trajectory segment. At the moment, this is only used by the\n\
00274 # prior_model_learner.\n\
00275 #\n\
00276 \n\
00277 std_msgs/Header header # frame and timestamp\n\
00278 int32 id # used-specified track id\n\
00279 \n\
00280 geometry_msgs/Pose[] pose # sequence of poses, defining the observed trajectory\n\
00281 std_msgs/Header[] pose_headers # Timestamp and frame for each pose (and pose_projected)\n\
00282 geometry_msgs/Pose[] pose_projected # sequence of poses, projected to the model \n\
00283 # (after model evaluation)\n\
00284 geometry_msgs/Pose[] pose_resampled # sequence of poses, re-sampled from the model in\n\
00285 # the valid configuration range\n\
00286 uint32[] pose_flags # bit-wise combination of POSE_VISIBLE and POSE_END_OF_SEGMENT\n\
00287 \n\
00288 uint32 POSE_VISIBLE=1\n\
00289 uint32 POSE_END_OF_SEGMENT=2\n\
00290 \n\
00291 # Each channel should have the same number of elements as pose array, \n\
00292 # and the data in each channel should correspond 1:1 with each pose\n\
00293 # possible channels: \"width\", \"height\", \"rgb\", ...\n\
00294 sensor_msgs/ChannelFloat32[] channels \n\
00295 \n\
00296 \n\
00297 \n\
00298 ================================================================================\n\
00299 MSG: geometry_msgs/Pose\n\
00300 # A representation of pose in free space, composed of postion and orientation. \n\
00301 Point position\n\
00302 Quaternion orientation\n\
00303 \n\
00304 ================================================================================\n\
00305 MSG: geometry_msgs/Point\n\
00306 # This contains the position of a point in free space\n\
00307 float64 x\n\
00308 float64 y\n\
00309 float64 z\n\
00310 \n\
00311 ================================================================================\n\
00312 MSG: geometry_msgs/Quaternion\n\
00313 # This represents an orientation in free space in quaternion form.\n\
00314 \n\
00315 float64 x\n\
00316 float64 y\n\
00317 float64 z\n\
00318 float64 w\n\
00319 \n\
00320 ================================================================================\n\
00321 MSG: sensor_msgs/ChannelFloat32\n\
00322 # This message is used by the PointCloud message to hold optional data\n\
00323 # associated with each point in the cloud. The length of the values\n\
00324 # array should be the same as the length of the points array in the\n\
00325 # PointCloud, and each value should be associated with the corresponding\n\
00326 # point.\n\
00327 \n\
00328 # Channel names in existing practice include:\n\
00329 # \"u\", \"v\" - row and column (respectively) in the left stereo image.\n\
00330 # This is opposite to usual conventions but remains for\n\
00331 # historical reasons. The newer PointCloud2 message has no\n\
00332 # such problem.\n\
00333 # \"rgb\" - For point clouds produced by color stereo cameras. uint8\n\
00334 # (R,G,B) values packed into the least significant 24 bits,\n\
00335 # in order.\n\
00336 # \"intensity\" - laser or pixel intensity.\n\
00337 # \"distance\"\n\
00338 \n\
00339 # The channel name should give semantics of the channel (e.g.\n\
00340 # \"intensity\" instead of \"value\").\n\
00341 string name\n\
00342 \n\
00343 # The values array should be 1-1 with the elements of the associated\n\
00344 # PointCloud.\n\
00345 float32[] values\n\
00346 \n\
00347 ";
00348 }
00349
00350 static const char* value(const ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> &) { return value(); }
00351 };
00352
00353 }
00354 }
00355
00356
00357 namespace ros
00358 {
00359 namespace message_traits
00360 {
00361 template<class ContainerAllocator> struct IsMessage< ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> > : public TrueType {};
00362 template<class ContainerAllocator> struct IsMessage< ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> const> : public TrueType {};
00363 template<class ContainerAllocator>
00364 struct MD5Sum< ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> > {
00365 static const char* value()
00366 {
00367 return "244fd493a4121569c1e4d870714e7fc3";
00368 }
00369
00370 static const char* value(const ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> &) { return value(); }
00371 static const uint64_t static_value1 = 0x244fd493a4121569ULL;
00372 static const uint64_t static_value2 = 0xc1e4d870714e7fc3ULL;
00373 };
00374
00375 template<class ContainerAllocator>
00376 struct DataType< ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> > {
00377 static const char* value()
00378 {
00379 return "articulation_msgs/AlignModelSrvResponse";
00380 }
00381
00382 static const char* value(const ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> &) { return value(); }
00383 };
00384
00385 template<class ContainerAllocator>
00386 struct Definition< ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> > {
00387 static const char* value()
00388 {
00389 return "articulation_msgs/ModelMsg model_aligned\n\
00390 \n\
00391 \n\
00392 articulation_msgs/ModelMsg data_aligned\n\
00393 \n\
00394 \n\
00395 float64[9] R\n\
00396 float64[3] T\n\
00397 float64 dist_rot\n\
00398 float32 dist_trans\n\
00399 \n\
00400 \n\
00401 \n\
00402 ================================================================================\n\
00403 MSG: articulation_msgs/ModelMsg\n\
00404 # Single kinematic model\n\
00405 #\n\
00406 # A kinematic model is defined by its model class name, and a set of parameters. \n\
00407 # The client may additionally specify a model id, that can be used to colorize the\n\
00408 # model when visualized using the RVIZ model display.\n\
00409 # \n\
00410 # For a list of currently implemented models, see the documetation at\n\
00411 # http://www.ros.org/wiki/articulation_models\n\
00412 #\n\
00413 #\n\
00414 \n\
00415 std_msgs/Header header # frame and timestamp\n\
00416 \n\
00417 int32 id # user specified model id\n\
00418 string name # name of the model family (e.g. \"rotational\",\n\
00419 # \"prismatic\", \"pca-gp\", \"rigid\")\n\
00420 articulation_msgs/ParamMsg[] params # model parameters\n\
00421 articulation_msgs/TrackMsg track # trajectory from which the model is estimated, or\n\
00422 # that is evaluated using the model\n\
00423 \n\
00424 ================================================================================\n\
00425 MSG: std_msgs/Header\n\
00426 # Standard metadata for higher-level stamped data types.\n\
00427 # This is generally used to communicate timestamped data \n\
00428 # in a particular coordinate frame.\n\
00429 # \n\
00430 # sequence ID: consecutively increasing ID \n\
00431 uint32 seq\n\
00432 #Two-integer timestamp that is expressed as:\n\
00433 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00434 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00435 # time-handling sugar is provided by the client library\n\
00436 time stamp\n\
00437 #Frame this data is associated with\n\
00438 # 0: no frame\n\
00439 # 1: global frame\n\
00440 string frame_id\n\
00441 \n\
00442 ================================================================================\n\
00443 MSG: articulation_msgs/ParamMsg\n\
00444 # Single parameter passed to or from model fitting\n\
00445 #\n\
00446 # This mechanism allows to flexibly pass parameters to \n\
00447 # model fitting (and vice versa). Note that these parameters \n\
00448 # are model-specific: A client may supply additional\n\
00449 # parameters to the model estimator, and, similarly, a estimator\n\
00450 # may add the estimated model parameters to the model message.\n\
00451 # When the model is then evaluated, for example to make predictions\n\
00452 # or to compute the likelihood, the model class can then use\n\
00453 # these parameters.\n\
00454 #\n\
00455 # A parameter has a name, a value, and a type. The type globally\n\
00456 # indicates whether it is a prior parameter (prior to model fitting),\n\
00457 # or a model parameter (found during model fitting, using a maximum-\n\
00458 # likelihood estimator), or a cached evaluation (e.g., the likelihood\n\
00459 # or the BIC are a typical \"side\"-product of model estimation, and\n\
00460 # can therefore already be cached).\n\
00461 #\n\
00462 # For a list of currently used parameters, see the documentation at\n\
00463 # http://www.ros.org/wiki/articulation_models\n\
00464 #\n\
00465 \n\
00466 uint8 PRIOR=0 # indicates a prior model parameter \n\
00467 # (e.g., \"sigma_position\")\n\
00468 uint8 PARAM=1 # indicates a estimated model parameter \n\
00469 # (e.g., \"rot_radius\", the estimated radius)\n\
00470 uint8 EVAL=2 # indicates a cached evaluation of the model, given \n\
00471 # the current trajectory\n\
00472 # (e.g., \"loglikelihood\", the log likelihood of the\n\
00473 # data, given the model and its parameters)\n\
00474 \n\
00475 string name # name of the parameter\n\
00476 float64 value # value of the parameter\n\
00477 uint8 type # type of the parameter (PRIOR, PARAM, EVAL)\n\
00478 \n\
00479 \n\
00480 ================================================================================\n\
00481 MSG: articulation_msgs/TrackMsg\n\
00482 # Single kinematic trajectory\n\
00483 #\n\
00484 # This message contains a kinematic trajectory. The trajectory is specified\n\
00485 # as a vector of 6D poses. An additional flag, track_type, indicates whether\n\
00486 # the track is valid, and whether it includes orientation. The track id\n\
00487 # can be used for automatic coloring in the RVIZ track plugin, and can be \n\
00488 # freely chosen by the client. \n\
00489 #\n\
00490 # A model is fitting only from the trajectory stored in the pose[]-vector. \n\
00491 # Additional information may be associated to each pose using the channels\n\
00492 # vector, with arbitrary # fields (e.g., to include applied/measured forces). \n\
00493 #\n\
00494 # After model evaluation,\n\
00495 # also the associated configurations of the object are stored in the channels,\n\
00496 # named \"q[0]\"..\"q[DOF-1]\", where DOF is the number of degrees of freedom.\n\
00497 # Model evaluation also projects the poses in the pose vector onto the model,\n\
00498 # and stores these ideal poses in the vector pose_projected. Further, during model\n\
00499 # evaluation, a new set of (uniform) configurations over the valid configuration\n\
00500 # range is sampled, and the result is stored in pose_resampled.\n\
00501 # The vector pose_flags contains additional display flags for the poses in the\n\
00502 # pose vector, for example, whether a pose is visible and/or\n\
00503 # the end of a trajectory segment. At the moment, this is only used by the\n\
00504 # prior_model_learner.\n\
00505 #\n\
00506 \n\
00507 std_msgs/Header header # frame and timestamp\n\
00508 int32 id # used-specified track id\n\
00509 \n\
00510 geometry_msgs/Pose[] pose # sequence of poses, defining the observed trajectory\n\
00511 std_msgs/Header[] pose_headers # Timestamp and frame for each pose (and pose_projected)\n\
00512 geometry_msgs/Pose[] pose_projected # sequence of poses, projected to the model \n\
00513 # (after model evaluation)\n\
00514 geometry_msgs/Pose[] pose_resampled # sequence of poses, re-sampled from the model in\n\
00515 # the valid configuration range\n\
00516 uint32[] pose_flags # bit-wise combination of POSE_VISIBLE and POSE_END_OF_SEGMENT\n\
00517 \n\
00518 uint32 POSE_VISIBLE=1\n\
00519 uint32 POSE_END_OF_SEGMENT=2\n\
00520 \n\
00521 # Each channel should have the same number of elements as pose array, \n\
00522 # and the data in each channel should correspond 1:1 with each pose\n\
00523 # possible channels: \"width\", \"height\", \"rgb\", ...\n\
00524 sensor_msgs/ChannelFloat32[] channels \n\
00525 \n\
00526 \n\
00527 \n\
00528 ================================================================================\n\
00529 MSG: geometry_msgs/Pose\n\
00530 # A representation of pose in free space, composed of postion and orientation. \n\
00531 Point position\n\
00532 Quaternion orientation\n\
00533 \n\
00534 ================================================================================\n\
00535 MSG: geometry_msgs/Point\n\
00536 # This contains the position of a point in free space\n\
00537 float64 x\n\
00538 float64 y\n\
00539 float64 z\n\
00540 \n\
00541 ================================================================================\n\
00542 MSG: geometry_msgs/Quaternion\n\
00543 # This represents an orientation in free space in quaternion form.\n\
00544 \n\
00545 float64 x\n\
00546 float64 y\n\
00547 float64 z\n\
00548 float64 w\n\
00549 \n\
00550 ================================================================================\n\
00551 MSG: sensor_msgs/ChannelFloat32\n\
00552 # This message is used by the PointCloud message to hold optional data\n\
00553 # associated with each point in the cloud. The length of the values\n\
00554 # array should be the same as the length of the points array in the\n\
00555 # PointCloud, and each value should be associated with the corresponding\n\
00556 # point.\n\
00557 \n\
00558 # Channel names in existing practice include:\n\
00559 # \"u\", \"v\" - row and column (respectively) in the left stereo image.\n\
00560 # This is opposite to usual conventions but remains for\n\
00561 # historical reasons. The newer PointCloud2 message has no\n\
00562 # such problem.\n\
00563 # \"rgb\" - For point clouds produced by color stereo cameras. uint8\n\
00564 # (R,G,B) values packed into the least significant 24 bits,\n\
00565 # in order.\n\
00566 # \"intensity\" - laser or pixel intensity.\n\
00567 # \"distance\"\n\
00568 \n\
00569 # The channel name should give semantics of the channel (e.g.\n\
00570 # \"intensity\" instead of \"value\").\n\
00571 string name\n\
00572 \n\
00573 # The values array should be 1-1 with the elements of the associated\n\
00574 # PointCloud.\n\
00575 float32[] values\n\
00576 \n\
00577 ";
00578 }
00579
00580 static const char* value(const ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> &) { return value(); }
00581 };
00582
00583 }
00584 }
00585
00586 namespace ros
00587 {
00588 namespace serialization
00589 {
00590
00591 template<class ContainerAllocator> struct Serializer< ::articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> >
00592 {
00593 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00594 {
00595 stream.next(m.model);
00596 stream.next(m.data);
00597 }
00598
00599 ROS_DECLARE_ALLINONE_SERIALIZER;
00600 };
00601 }
00602 }
00603
00604
00605 namespace ros
00606 {
00607 namespace serialization
00608 {
00609
00610 template<class ContainerAllocator> struct Serializer< ::articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> >
00611 {
00612 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00613 {
00614 stream.next(m.model_aligned);
00615 stream.next(m.data_aligned);
00616 stream.next(m.R);
00617 stream.next(m.T);
00618 stream.next(m.dist_rot);
00619 stream.next(m.dist_trans);
00620 }
00621
00622 ROS_DECLARE_ALLINONE_SERIALIZER;
00623 };
00624 }
00625 }
00626
00627 namespace ros
00628 {
00629 namespace service_traits
00630 {
00631 template<>
00632 struct MD5Sum<articulation_msgs::AlignModelSrv> {
00633 static const char* value()
00634 {
00635 return "72514be7b9552a12ceffcc5039c793f3";
00636 }
00637
00638 static const char* value(const articulation_msgs::AlignModelSrv&) { return value(); }
00639 };
00640
00641 template<>
00642 struct DataType<articulation_msgs::AlignModelSrv> {
00643 static const char* value()
00644 {
00645 return "articulation_msgs/AlignModelSrv";
00646 }
00647
00648 static const char* value(const articulation_msgs::AlignModelSrv&) { return value(); }
00649 };
00650
00651 template<class ContainerAllocator>
00652 struct MD5Sum<articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> > {
00653 static const char* value()
00654 {
00655 return "72514be7b9552a12ceffcc5039c793f3";
00656 }
00657
00658 static const char* value(const articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> &) { return value(); }
00659 };
00660
00661 template<class ContainerAllocator>
00662 struct DataType<articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> > {
00663 static const char* value()
00664 {
00665 return "articulation_msgs/AlignModelSrv";
00666 }
00667
00668 static const char* value(const articulation_msgs::AlignModelSrvRequest_<ContainerAllocator> &) { return value(); }
00669 };
00670
00671 template<class ContainerAllocator>
00672 struct MD5Sum<articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> > {
00673 static const char* value()
00674 {
00675 return "72514be7b9552a12ceffcc5039c793f3";
00676 }
00677
00678 static const char* value(const articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> &) { return value(); }
00679 };
00680
00681 template<class ContainerAllocator>
00682 struct DataType<articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> > {
00683 static const char* value()
00684 {
00685 return "articulation_msgs/AlignModelSrv";
00686 }
00687
00688 static const char* value(const articulation_msgs::AlignModelSrvResponse_<ContainerAllocator> &) { return value(); }
00689 };
00690
00691 }
00692 }
00693
00694 #endif // ARTICULATION_MSGS_SERVICE_ALIGNMODELSRV_H
00695