00001
00002 #ifndef OBJECT_MANIPULATION_MSGS_MESSAGE_PICKUPRESULT_H
00003 #define OBJECT_MANIPULATION_MSGS_MESSAGE_PICKUPRESULT_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 "object_manipulation_msgs/ManipulationResult.h"
00014 #include "object_manipulation_msgs/Grasp.h"
00015 #include "object_manipulation_msgs/Grasp.h"
00016 #include "object_manipulation_msgs/GraspResult.h"
00017
00018 namespace object_manipulation_msgs
00019 {
00020 template <class ContainerAllocator>
00021 struct PickupResult_ : public ros::Message
00022 {
00023 typedef PickupResult_<ContainerAllocator> Type;
00024
00025 PickupResult_()
00026 : manipulation_result()
00027 , grasp()
00028 , attempted_grasps()
00029 , attempted_grasp_results()
00030 {
00031 }
00032
00033 PickupResult_(const ContainerAllocator& _alloc)
00034 : manipulation_result(_alloc)
00035 , grasp(_alloc)
00036 , attempted_grasps(_alloc)
00037 , attempted_grasp_results(_alloc)
00038 {
00039 }
00040
00041 typedef ::object_manipulation_msgs::ManipulationResult_<ContainerAllocator> _manipulation_result_type;
00042 ::object_manipulation_msgs::ManipulationResult_<ContainerAllocator> manipulation_result;
00043
00044 typedef ::object_manipulation_msgs::Grasp_<ContainerAllocator> _grasp_type;
00045 ::object_manipulation_msgs::Grasp_<ContainerAllocator> grasp;
00046
00047 typedef std::vector< ::object_manipulation_msgs::Grasp_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::object_manipulation_msgs::Grasp_<ContainerAllocator> >::other > _attempted_grasps_type;
00048 std::vector< ::object_manipulation_msgs::Grasp_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::object_manipulation_msgs::Grasp_<ContainerAllocator> >::other > attempted_grasps;
00049
00050 typedef std::vector< ::object_manipulation_msgs::GraspResult_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::object_manipulation_msgs::GraspResult_<ContainerAllocator> >::other > _attempted_grasp_results_type;
00051 std::vector< ::object_manipulation_msgs::GraspResult_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::object_manipulation_msgs::GraspResult_<ContainerAllocator> >::other > attempted_grasp_results;
00052
00053
00054 ROS_DEPRECATED uint32_t get_attempted_grasps_size() const { return (uint32_t)attempted_grasps.size(); }
00055 ROS_DEPRECATED void set_attempted_grasps_size(uint32_t size) { attempted_grasps.resize((size_t)size); }
00056 ROS_DEPRECATED void get_attempted_grasps_vec(std::vector< ::object_manipulation_msgs::Grasp_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::object_manipulation_msgs::Grasp_<ContainerAllocator> >::other > & vec) const { vec = this->attempted_grasps; }
00057 ROS_DEPRECATED void set_attempted_grasps_vec(const std::vector< ::object_manipulation_msgs::Grasp_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::object_manipulation_msgs::Grasp_<ContainerAllocator> >::other > & vec) { this->attempted_grasps = vec; }
00058 ROS_DEPRECATED uint32_t get_attempted_grasp_results_size() const { return (uint32_t)attempted_grasp_results.size(); }
00059 ROS_DEPRECATED void set_attempted_grasp_results_size(uint32_t size) { attempted_grasp_results.resize((size_t)size); }
00060 ROS_DEPRECATED void get_attempted_grasp_results_vec(std::vector< ::object_manipulation_msgs::GraspResult_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::object_manipulation_msgs::GraspResult_<ContainerAllocator> >::other > & vec) const { vec = this->attempted_grasp_results; }
00061 ROS_DEPRECATED void set_attempted_grasp_results_vec(const std::vector< ::object_manipulation_msgs::GraspResult_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::object_manipulation_msgs::GraspResult_<ContainerAllocator> >::other > & vec) { this->attempted_grasp_results = vec; }
00062 private:
00063 static const char* __s_getDataType_() { return "object_manipulation_msgs/PickupResult"; }
00064 public:
00065 ROS_DEPRECATED static const std::string __s_getDataType() { return __s_getDataType_(); }
00066
00067 ROS_DEPRECATED const std::string __getDataType() const { return __s_getDataType_(); }
00068
00069 private:
00070 static const char* __s_getMD5Sum_() { return "793066b09b7f497fba66b4c2d9e27356"; }
00071 public:
00072 ROS_DEPRECATED static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
00073
00074 ROS_DEPRECATED const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
00075
00076 private:
00077 static const char* __s_getMessageDefinition_() { return "# The overall result of the pickup attempt\n\
00078 ManipulationResult manipulation_result\n\
00079 \n\
00080 # The performed grasp, if attempt was successful\n\
00081 Grasp grasp\n\
00082 \n\
00083 # the complete list of attempted grasp, in the order in which they have been attempted\n\
00084 # the successful one should be the last one in this list\n\
00085 Grasp[] attempted_grasps\n\
00086 \n\
00087 # the outcomes of the attempted grasps, in the same order as attempted_grasps\n\
00088 GraspResult[] attempted_grasp_results\n\
00089 ================================================================================\n\
00090 MSG: object_manipulation_msgs/ManipulationResult\n\
00091 # Result codes for manipulation tasks\n\
00092 \n\
00093 # task completed as expected\n\
00094 # generally means you can proceed as planned\n\
00095 int32 SUCCESS = 1\n\
00096 \n\
00097 # task not possible (e.g. out of reach or obstacles in the way)\n\
00098 # generally means that the world was not disturbed, so you can try another task\n\
00099 int32 UNFEASIBLE = -1\n\
00100 \n\
00101 # task was thought possible, but failed due to unexpected events during execution\n\
00102 # it is likely that the world was disturbed, so you are encouraged to refresh\n\
00103 # your sensed world model before proceeding to another task\n\
00104 int32 FAILED = -2\n\
00105 \n\
00106 # a lower level error prevented task completion (e.g. joint controller not responding)\n\
00107 # generally requires human attention\n\
00108 int32 ERROR = -3\n\
00109 \n\
00110 # means that at some point during execution we ended up in a state that the collision-aware\n\
00111 # arm navigation module will not move out of. The world was likely not disturbed, but you \n\
00112 # probably need a new collision map to move the arm out of the stuck position\n\
00113 int32 ARM_MOVEMENT_PREVENTED = -4\n\
00114 \n\
00115 # specific to grasp actions\n\
00116 # the object was grasped successfully, but the lift attempt could not achieve the minimum lift distance requested\n\
00117 # it is likely that the collision environment will see collisions between the hand/object and the support surface\n\
00118 int32 LIFT_FAILED = -5\n\
00119 \n\
00120 # specific to place actions\n\
00121 # the object was placed successfully, but the retreat attempt could not achieve the minimum retreat distance requested\n\
00122 # it is likely that the collision environment will see collisions between the hand and the object\n\
00123 int32 RETREAT_FAILED = -6\n\
00124 \n\
00125 # indicates that somewhere along the line a human said \"wait, stop, this is bad, go back and do something else\"\n\
00126 int32 CANCELLED = -7\n\
00127 \n\
00128 # the actual value of this error code\n\
00129 int32 value\n\
00130 \n\
00131 ================================================================================\n\
00132 MSG: object_manipulation_msgs/Grasp\n\
00133 \n\
00134 # The internal posture of the hand for the pre-grasp\n\
00135 # only positions are used\n\
00136 sensor_msgs/JointState pre_grasp_posture\n\
00137 \n\
00138 # The internal posture of the hand for the grasp\n\
00139 # positions and efforts are used\n\
00140 sensor_msgs/JointState grasp_posture\n\
00141 \n\
00142 # The position of the end-effector for the grasp relative to the object\n\
00143 geometry_msgs/Pose grasp_pose\n\
00144 \n\
00145 # The estimated probability of success for this grasp\n\
00146 float64 success_probability\n\
00147 \n\
00148 # Debug flag to indicate that this grasp would be the best in its cluster\n\
00149 bool cluster_rep\n\
00150 ================================================================================\n\
00151 MSG: sensor_msgs/JointState\n\
00152 # This is a message that holds data to describe the state of a set of torque controlled joints. \n\
00153 #\n\
00154 # The state of each joint (revolute or prismatic) is defined by:\n\
00155 # * the position of the joint (rad or m),\n\
00156 # * the velocity of the joint (rad/s or m/s) and \n\
00157 # * the effort that is applied in the joint (Nm or N).\n\
00158 #\n\
00159 # Each joint is uniquely identified by its name\n\
00160 # The header specifies the time at which the joint states were recorded. All the joint states\n\
00161 # in one message have to be recorded at the same time.\n\
00162 #\n\
00163 # This message consists of a multiple arrays, one for each part of the joint state. \n\
00164 # The goal is to make each of the fields optional. When e.g. your joints have no\n\
00165 # effort associated with them, you can leave the effort array empty. \n\
00166 #\n\
00167 # All arrays in this message should have the same size, or be empty.\n\
00168 # This is the only way to uniquely associate the joint name with the correct\n\
00169 # states.\n\
00170 \n\
00171 \n\
00172 Header header\n\
00173 \n\
00174 string[] name\n\
00175 float64[] position\n\
00176 float64[] velocity\n\
00177 float64[] effort\n\
00178 \n\
00179 ================================================================================\n\
00180 MSG: std_msgs/Header\n\
00181 # Standard metadata for higher-level stamped data types.\n\
00182 # This is generally used to communicate timestamped data \n\
00183 # in a particular coordinate frame.\n\
00184 # \n\
00185 # sequence ID: consecutively increasing ID \n\
00186 uint32 seq\n\
00187 #Two-integer timestamp that is expressed as:\n\
00188 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00189 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00190 # time-handling sugar is provided by the client library\n\
00191 time stamp\n\
00192 #Frame this data is associated with\n\
00193 # 0: no frame\n\
00194 # 1: global frame\n\
00195 string frame_id\n\
00196 \n\
00197 ================================================================================\n\
00198 MSG: geometry_msgs/Pose\n\
00199 # A representation of pose in free space, composed of postion and orientation. \n\
00200 Point position\n\
00201 Quaternion orientation\n\
00202 \n\
00203 ================================================================================\n\
00204 MSG: geometry_msgs/Point\n\
00205 # This contains the position of a point in free space\n\
00206 float64 x\n\
00207 float64 y\n\
00208 float64 z\n\
00209 \n\
00210 ================================================================================\n\
00211 MSG: geometry_msgs/Quaternion\n\
00212 # This represents an orientation in free space in quaternion form.\n\
00213 \n\
00214 float64 x\n\
00215 float64 y\n\
00216 float64 z\n\
00217 float64 w\n\
00218 \n\
00219 ================================================================================\n\
00220 MSG: object_manipulation_msgs/GraspResult\n\
00221 int32 SUCCESS = 1\n\
00222 int32 GRASP_OUT_OF_REACH = 2\n\
00223 int32 GRASP_IN_COLLISION = 3\n\
00224 int32 GRASP_UNFEASIBLE = 4\n\
00225 int32 PREGRASP_OUT_OF_REACH = 5\n\
00226 int32 PREGRASP_IN_COLLISION = 6\n\
00227 int32 PREGRASP_UNFEASIBLE = 7\n\
00228 int32 LIFT_OUT_OF_REACH = 8\n\
00229 int32 LIFT_IN_COLLISION = 9\n\
00230 int32 LIFT_UNFEASIBLE = 10\n\
00231 int32 MOVE_ARM_FAILED = 11\n\
00232 int32 GRASP_FAILED = 12\n\
00233 int32 LIFT_FAILED = 13\n\
00234 int32 RETREAT_FAILED = 14\n\
00235 int32 result_code\n\
00236 \n\
00237 # whether the state of the world was disturbed by this attempt. generally, this flag\n\
00238 # shows if another task can be attempted, or a new sensed world model is recommeded\n\
00239 # before proceeding\n\
00240 bool continuation_possible\n\
00241 \n\
00242 "; }
00243 public:
00244 ROS_DEPRECATED static const std::string __s_getMessageDefinition() { return __s_getMessageDefinition_(); }
00245
00246 ROS_DEPRECATED const std::string __getMessageDefinition() const { return __s_getMessageDefinition_(); }
00247
00248 ROS_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
00249 {
00250 ros::serialization::OStream stream(write_ptr, 1000000000);
00251 ros::serialization::serialize(stream, manipulation_result);
00252 ros::serialization::serialize(stream, grasp);
00253 ros::serialization::serialize(stream, attempted_grasps);
00254 ros::serialization::serialize(stream, attempted_grasp_results);
00255 return stream.getData();
00256 }
00257
00258 ROS_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr)
00259 {
00260 ros::serialization::IStream stream(read_ptr, 1000000000);
00261 ros::serialization::deserialize(stream, manipulation_result);
00262 ros::serialization::deserialize(stream, grasp);
00263 ros::serialization::deserialize(stream, attempted_grasps);
00264 ros::serialization::deserialize(stream, attempted_grasp_results);
00265 return stream.getData();
00266 }
00267
00268 ROS_DEPRECATED virtual uint32_t serializationLength() const
00269 {
00270 uint32_t size = 0;
00271 size += ros::serialization::serializationLength(manipulation_result);
00272 size += ros::serialization::serializationLength(grasp);
00273 size += ros::serialization::serializationLength(attempted_grasps);
00274 size += ros::serialization::serializationLength(attempted_grasp_results);
00275 return size;
00276 }
00277
00278 typedef boost::shared_ptr< ::object_manipulation_msgs::PickupResult_<ContainerAllocator> > Ptr;
00279 typedef boost::shared_ptr< ::object_manipulation_msgs::PickupResult_<ContainerAllocator> const> ConstPtr;
00280 };
00281 typedef ::object_manipulation_msgs::PickupResult_<std::allocator<void> > PickupResult;
00282
00283 typedef boost::shared_ptr< ::object_manipulation_msgs::PickupResult> PickupResultPtr;
00284 typedef boost::shared_ptr< ::object_manipulation_msgs::PickupResult const> PickupResultConstPtr;
00285
00286
00287 template<typename ContainerAllocator>
00288 std::ostream& operator<<(std::ostream& s, const ::object_manipulation_msgs::PickupResult_<ContainerAllocator> & v)
00289 {
00290 ros::message_operations::Printer< ::object_manipulation_msgs::PickupResult_<ContainerAllocator> >::stream(s, "", v);
00291 return s;}
00292
00293 }
00294
00295 namespace ros
00296 {
00297 namespace message_traits
00298 {
00299 template<class ContainerAllocator>
00300 struct MD5Sum< ::object_manipulation_msgs::PickupResult_<ContainerAllocator> > {
00301 static const char* value()
00302 {
00303 return "793066b09b7f497fba66b4c2d9e27356";
00304 }
00305
00306 static const char* value(const ::object_manipulation_msgs::PickupResult_<ContainerAllocator> &) { return value(); }
00307 static const uint64_t static_value1 = 0x793066b09b7f497fULL;
00308 static const uint64_t static_value2 = 0xba66b4c2d9e27356ULL;
00309 };
00310
00311 template<class ContainerAllocator>
00312 struct DataType< ::object_manipulation_msgs::PickupResult_<ContainerAllocator> > {
00313 static const char* value()
00314 {
00315 return "object_manipulation_msgs/PickupResult";
00316 }
00317
00318 static const char* value(const ::object_manipulation_msgs::PickupResult_<ContainerAllocator> &) { return value(); }
00319 };
00320
00321 template<class ContainerAllocator>
00322 struct Definition< ::object_manipulation_msgs::PickupResult_<ContainerAllocator> > {
00323 static const char* value()
00324 {
00325 return "# The overall result of the pickup attempt\n\
00326 ManipulationResult manipulation_result\n\
00327 \n\
00328 # The performed grasp, if attempt was successful\n\
00329 Grasp grasp\n\
00330 \n\
00331 # the complete list of attempted grasp, in the order in which they have been attempted\n\
00332 # the successful one should be the last one in this list\n\
00333 Grasp[] attempted_grasps\n\
00334 \n\
00335 # the outcomes of the attempted grasps, in the same order as attempted_grasps\n\
00336 GraspResult[] attempted_grasp_results\n\
00337 ================================================================================\n\
00338 MSG: object_manipulation_msgs/ManipulationResult\n\
00339 # Result codes for manipulation tasks\n\
00340 \n\
00341 # task completed as expected\n\
00342 # generally means you can proceed as planned\n\
00343 int32 SUCCESS = 1\n\
00344 \n\
00345 # task not possible (e.g. out of reach or obstacles in the way)\n\
00346 # generally means that the world was not disturbed, so you can try another task\n\
00347 int32 UNFEASIBLE = -1\n\
00348 \n\
00349 # task was thought possible, but failed due to unexpected events during execution\n\
00350 # it is likely that the world was disturbed, so you are encouraged to refresh\n\
00351 # your sensed world model before proceeding to another task\n\
00352 int32 FAILED = -2\n\
00353 \n\
00354 # a lower level error prevented task completion (e.g. joint controller not responding)\n\
00355 # generally requires human attention\n\
00356 int32 ERROR = -3\n\
00357 \n\
00358 # means that at some point during execution we ended up in a state that the collision-aware\n\
00359 # arm navigation module will not move out of. The world was likely not disturbed, but you \n\
00360 # probably need a new collision map to move the arm out of the stuck position\n\
00361 int32 ARM_MOVEMENT_PREVENTED = -4\n\
00362 \n\
00363 # specific to grasp actions\n\
00364 # the object was grasped successfully, but the lift attempt could not achieve the minimum lift distance requested\n\
00365 # it is likely that the collision environment will see collisions between the hand/object and the support surface\n\
00366 int32 LIFT_FAILED = -5\n\
00367 \n\
00368 # specific to place actions\n\
00369 # the object was placed successfully, but the retreat attempt could not achieve the minimum retreat distance requested\n\
00370 # it is likely that the collision environment will see collisions between the hand and the object\n\
00371 int32 RETREAT_FAILED = -6\n\
00372 \n\
00373 # indicates that somewhere along the line a human said \"wait, stop, this is bad, go back and do something else\"\n\
00374 int32 CANCELLED = -7\n\
00375 \n\
00376 # the actual value of this error code\n\
00377 int32 value\n\
00378 \n\
00379 ================================================================================\n\
00380 MSG: object_manipulation_msgs/Grasp\n\
00381 \n\
00382 # The internal posture of the hand for the pre-grasp\n\
00383 # only positions are used\n\
00384 sensor_msgs/JointState pre_grasp_posture\n\
00385 \n\
00386 # The internal posture of the hand for the grasp\n\
00387 # positions and efforts are used\n\
00388 sensor_msgs/JointState grasp_posture\n\
00389 \n\
00390 # The position of the end-effector for the grasp relative to the object\n\
00391 geometry_msgs/Pose grasp_pose\n\
00392 \n\
00393 # The estimated probability of success for this grasp\n\
00394 float64 success_probability\n\
00395 \n\
00396 # Debug flag to indicate that this grasp would be the best in its cluster\n\
00397 bool cluster_rep\n\
00398 ================================================================================\n\
00399 MSG: sensor_msgs/JointState\n\
00400 # This is a message that holds data to describe the state of a set of torque controlled joints. \n\
00401 #\n\
00402 # The state of each joint (revolute or prismatic) is defined by:\n\
00403 # * the position of the joint (rad or m),\n\
00404 # * the velocity of the joint (rad/s or m/s) and \n\
00405 # * the effort that is applied in the joint (Nm or N).\n\
00406 #\n\
00407 # Each joint is uniquely identified by its name\n\
00408 # The header specifies the time at which the joint states were recorded. All the joint states\n\
00409 # in one message have to be recorded at the same time.\n\
00410 #\n\
00411 # This message consists of a multiple arrays, one for each part of the joint state. \n\
00412 # The goal is to make each of the fields optional. When e.g. your joints have no\n\
00413 # effort associated with them, you can leave the effort array empty. \n\
00414 #\n\
00415 # All arrays in this message should have the same size, or be empty.\n\
00416 # This is the only way to uniquely associate the joint name with the correct\n\
00417 # states.\n\
00418 \n\
00419 \n\
00420 Header header\n\
00421 \n\
00422 string[] name\n\
00423 float64[] position\n\
00424 float64[] velocity\n\
00425 float64[] effort\n\
00426 \n\
00427 ================================================================================\n\
00428 MSG: std_msgs/Header\n\
00429 # Standard metadata for higher-level stamped data types.\n\
00430 # This is generally used to communicate timestamped data \n\
00431 # in a particular coordinate frame.\n\
00432 # \n\
00433 # sequence ID: consecutively increasing ID \n\
00434 uint32 seq\n\
00435 #Two-integer timestamp that is expressed as:\n\
00436 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00437 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00438 # time-handling sugar is provided by the client library\n\
00439 time stamp\n\
00440 #Frame this data is associated with\n\
00441 # 0: no frame\n\
00442 # 1: global frame\n\
00443 string frame_id\n\
00444 \n\
00445 ================================================================================\n\
00446 MSG: geometry_msgs/Pose\n\
00447 # A representation of pose in free space, composed of postion and orientation. \n\
00448 Point position\n\
00449 Quaternion orientation\n\
00450 \n\
00451 ================================================================================\n\
00452 MSG: geometry_msgs/Point\n\
00453 # This contains the position of a point in free space\n\
00454 float64 x\n\
00455 float64 y\n\
00456 float64 z\n\
00457 \n\
00458 ================================================================================\n\
00459 MSG: geometry_msgs/Quaternion\n\
00460 # This represents an orientation in free space in quaternion form.\n\
00461 \n\
00462 float64 x\n\
00463 float64 y\n\
00464 float64 z\n\
00465 float64 w\n\
00466 \n\
00467 ================================================================================\n\
00468 MSG: object_manipulation_msgs/GraspResult\n\
00469 int32 SUCCESS = 1\n\
00470 int32 GRASP_OUT_OF_REACH = 2\n\
00471 int32 GRASP_IN_COLLISION = 3\n\
00472 int32 GRASP_UNFEASIBLE = 4\n\
00473 int32 PREGRASP_OUT_OF_REACH = 5\n\
00474 int32 PREGRASP_IN_COLLISION = 6\n\
00475 int32 PREGRASP_UNFEASIBLE = 7\n\
00476 int32 LIFT_OUT_OF_REACH = 8\n\
00477 int32 LIFT_IN_COLLISION = 9\n\
00478 int32 LIFT_UNFEASIBLE = 10\n\
00479 int32 MOVE_ARM_FAILED = 11\n\
00480 int32 GRASP_FAILED = 12\n\
00481 int32 LIFT_FAILED = 13\n\
00482 int32 RETREAT_FAILED = 14\n\
00483 int32 result_code\n\
00484 \n\
00485 # whether the state of the world was disturbed by this attempt. generally, this flag\n\
00486 # shows if another task can be attempted, or a new sensed world model is recommeded\n\
00487 # before proceeding\n\
00488 bool continuation_possible\n\
00489 \n\
00490 ";
00491 }
00492
00493 static const char* value(const ::object_manipulation_msgs::PickupResult_<ContainerAllocator> &) { return value(); }
00494 };
00495
00496 }
00497 }
00498
00499 namespace ros
00500 {
00501 namespace serialization
00502 {
00503
00504 template<class ContainerAllocator> struct Serializer< ::object_manipulation_msgs::PickupResult_<ContainerAllocator> >
00505 {
00506 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00507 {
00508 stream.next(m.manipulation_result);
00509 stream.next(m.grasp);
00510 stream.next(m.attempted_grasps);
00511 stream.next(m.attempted_grasp_results);
00512 }
00513
00514 ROS_DECLARE_ALLINONE_SERIALIZER;
00515 };
00516 }
00517 }
00518
00519 namespace ros
00520 {
00521 namespace message_operations
00522 {
00523
00524 template<class ContainerAllocator>
00525 struct Printer< ::object_manipulation_msgs::PickupResult_<ContainerAllocator> >
00526 {
00527 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::object_manipulation_msgs::PickupResult_<ContainerAllocator> & v)
00528 {
00529 s << indent << "manipulation_result: ";
00530 s << std::endl;
00531 Printer< ::object_manipulation_msgs::ManipulationResult_<ContainerAllocator> >::stream(s, indent + " ", v.manipulation_result);
00532 s << indent << "grasp: ";
00533 s << std::endl;
00534 Printer< ::object_manipulation_msgs::Grasp_<ContainerAllocator> >::stream(s, indent + " ", v.grasp);
00535 s << indent << "attempted_grasps[]" << std::endl;
00536 for (size_t i = 0; i < v.attempted_grasps.size(); ++i)
00537 {
00538 s << indent << " attempted_grasps[" << i << "]: ";
00539 s << std::endl;
00540 s << indent;
00541 Printer< ::object_manipulation_msgs::Grasp_<ContainerAllocator> >::stream(s, indent + " ", v.attempted_grasps[i]);
00542 }
00543 s << indent << "attempted_grasp_results[]" << std::endl;
00544 for (size_t i = 0; i < v.attempted_grasp_results.size(); ++i)
00545 {
00546 s << indent << " attempted_grasp_results[" << i << "]: ";
00547 s << std::endl;
00548 s << indent;
00549 Printer< ::object_manipulation_msgs::GraspResult_<ContainerAllocator> >::stream(s, indent + " ", v.attempted_grasp_results[i]);
00550 }
00551 }
00552 };
00553
00554
00555 }
00556 }
00557
00558 #endif // OBJECT_MANIPULATION_MSGS_MESSAGE_PICKUPRESULT_H
00559