00001
00002 #ifndef ARM_NAVIGATION_MSGS_MESSAGE_ATTACHEDCOLLISIONOBJECT_H
00003 #define ARM_NAVIGATION_MSGS_MESSAGE_ATTACHEDCOLLISIONOBJECT_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 "arm_navigation_msgs/CollisionObject.h"
00018
00019 namespace arm_navigation_msgs
00020 {
00021 template <class ContainerAllocator>
00022 struct AttachedCollisionObject_ {
00023 typedef AttachedCollisionObject_<ContainerAllocator> Type;
00024
00025 AttachedCollisionObject_()
00026 : link_name()
00027 , object()
00028 , touch_links()
00029 {
00030 }
00031
00032 AttachedCollisionObject_(const ContainerAllocator& _alloc)
00033 : link_name(_alloc)
00034 , object(_alloc)
00035 , touch_links(_alloc)
00036 {
00037 }
00038
00039 typedef std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > _link_name_type;
00040 std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > link_name;
00041
00042 typedef ::arm_navigation_msgs::CollisionObject_<ContainerAllocator> _object_type;
00043 ::arm_navigation_msgs::CollisionObject_<ContainerAllocator> object;
00044
00045 typedef std::vector<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > , typename ContainerAllocator::template rebind<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::other > _touch_links_type;
00046 std::vector<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > , typename ContainerAllocator::template rebind<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::other > touch_links;
00047
00048 static const std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > REMOVE_ALL_ATTACHED_OBJECTS;
00049
00050 ROS_DEPRECATED uint32_t get_touch_links_size() const { return (uint32_t)touch_links.size(); }
00051 ROS_DEPRECATED void set_touch_links_size(uint32_t size) { touch_links.resize((size_t)size); }
00052 ROS_DEPRECATED void get_touch_links_vec(std::vector<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > , typename ContainerAllocator::template rebind<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::other > & vec) const { vec = this->touch_links; }
00053 ROS_DEPRECATED void set_touch_links_vec(const std::vector<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > , typename ContainerAllocator::template rebind<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::other > & vec) { this->touch_links = vec; }
00054 private:
00055 static const char* __s_getDataType_() { return "arm_navigation_msgs/AttachedCollisionObject"; }
00056 public:
00057 ROS_DEPRECATED static const std::string __s_getDataType() { return __s_getDataType_(); }
00058
00059 ROS_DEPRECATED const std::string __getDataType() const { return __s_getDataType_(); }
00060
00061 private:
00062 static const char* __s_getMD5Sum_() { return "3fd8ca730863e3d97d109c317d106cf9"; }
00063 public:
00064 ROS_DEPRECATED static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
00065
00066 ROS_DEPRECATED const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
00067
00068 private:
00069 static const char* __s_getMessageDefinition_() { return "# The CollisionObject will be attached with a fixed joint to this link\n\
00070 # If link name is set to REMOVE_ALL_ATTACHED_OBJECTS and object.operation \n\
00071 # is set to REMOVE will remove all attached bodies attached to any object\n\
00072 string link_name\n\
00073 \n\
00074 #Reserved for indicating that all attached objects should be removed\n\
00075 string REMOVE_ALL_ATTACHED_OBJECTS = \"all\"\n\
00076 \n\
00077 #This contains the actual shapes and poses for the CollisionObject\n\
00078 #to be attached to the link\n\
00079 #If action is remove and no object.id is set, all objects\n\
00080 #attached to the link indicated by link_name will be removed\n\
00081 CollisionObject object\n\
00082 \n\
00083 # The set of links that the attached objects are allowed to touch\n\
00084 # by default - the link_name is included by default\n\
00085 string[] touch_links\n\
00086 \n\
00087 ================================================================================\n\
00088 MSG: arm_navigation_msgs/CollisionObject\n\
00089 # a header, used for interpreting the poses\n\
00090 Header header\n\
00091 \n\
00092 # the id of the object\n\
00093 string id\n\
00094 \n\
00095 # The padding used for filtering points near the object.\n\
00096 # This does not affect collision checking for the object. \n\
00097 # Set to negative to get zero padding.\n\
00098 float32 padding\n\
00099 \n\
00100 #This contains what is to be done with the object\n\
00101 CollisionObjectOperation operation\n\
00102 \n\
00103 #the shapes associated with the object\n\
00104 arm_navigation_msgs/Shape[] shapes\n\
00105 \n\
00106 #the poses associated with the shapes - will be transformed using the header\n\
00107 geometry_msgs/Pose[] poses\n\
00108 \n\
00109 ================================================================================\n\
00110 MSG: std_msgs/Header\n\
00111 # Standard metadata for higher-level stamped data types.\n\
00112 # This is generally used to communicate timestamped data \n\
00113 # in a particular coordinate frame.\n\
00114 # \n\
00115 # sequence ID: consecutively increasing ID \n\
00116 uint32 seq\n\
00117 #Two-integer timestamp that is expressed as:\n\
00118 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00119 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00120 # time-handling sugar is provided by the client library\n\
00121 time stamp\n\
00122 #Frame this data is associated with\n\
00123 # 0: no frame\n\
00124 # 1: global frame\n\
00125 string frame_id\n\
00126 \n\
00127 ================================================================================\n\
00128 MSG: arm_navigation_msgs/CollisionObjectOperation\n\
00129 #Puts the object into the environment\n\
00130 #or updates the object if already added\n\
00131 byte ADD=0\n\
00132 \n\
00133 #Removes the object from the environment entirely\n\
00134 byte REMOVE=1\n\
00135 \n\
00136 #Only valid within the context of a CollisionAttachedObject message\n\
00137 #Will be ignored if sent with an CollisionObject message\n\
00138 #Takes an attached object, detaches from the attached link\n\
00139 #But adds back in as regular object\n\
00140 byte DETACH_AND_ADD_AS_OBJECT=2\n\
00141 \n\
00142 #Only valid within the context of a CollisionAttachedObject message\n\
00143 #Will be ignored if sent with an CollisionObject message\n\
00144 #Takes current object in the environment and removes it as\n\
00145 #a regular object\n\
00146 byte ATTACH_AND_REMOVE_AS_OBJECT=3\n\
00147 \n\
00148 # Byte code for operation\n\
00149 byte operation\n\
00150 \n\
00151 ================================================================================\n\
00152 MSG: arm_navigation_msgs/Shape\n\
00153 byte SPHERE=0\n\
00154 byte BOX=1\n\
00155 byte CYLINDER=2\n\
00156 byte MESH=3\n\
00157 \n\
00158 byte type\n\
00159 \n\
00160 \n\
00161 #### define sphere, box, cylinder ####\n\
00162 # the origin of each shape is considered at the shape's center\n\
00163 \n\
00164 # for sphere\n\
00165 # radius := dimensions[0]\n\
00166 \n\
00167 # for cylinder\n\
00168 # radius := dimensions[0]\n\
00169 # length := dimensions[1]\n\
00170 # the length is along the Z axis\n\
00171 \n\
00172 # for box\n\
00173 # size_x := dimensions[0]\n\
00174 # size_y := dimensions[1]\n\
00175 # size_z := dimensions[2]\n\
00176 float64[] dimensions\n\
00177 \n\
00178 \n\
00179 #### define mesh ####\n\
00180 \n\
00181 # list of triangles; triangle k is defined by tre vertices located\n\
00182 # at indices triangles[3k], triangles[3k+1], triangles[3k+2]\n\
00183 int32[] triangles\n\
00184 geometry_msgs/Point[] vertices\n\
00185 \n\
00186 ================================================================================\n\
00187 MSG: geometry_msgs/Point\n\
00188 # This contains the position of a point in free space\n\
00189 float64 x\n\
00190 float64 y\n\
00191 float64 z\n\
00192 \n\
00193 ================================================================================\n\
00194 MSG: geometry_msgs/Pose\n\
00195 # A representation of pose in free space, composed of postion and orientation. \n\
00196 Point position\n\
00197 Quaternion orientation\n\
00198 \n\
00199 ================================================================================\n\
00200 MSG: geometry_msgs/Quaternion\n\
00201 # This represents an orientation in free space in quaternion form.\n\
00202 \n\
00203 float64 x\n\
00204 float64 y\n\
00205 float64 z\n\
00206 float64 w\n\
00207 \n\
00208 "; }
00209 public:
00210 ROS_DEPRECATED static const std::string __s_getMessageDefinition() { return __s_getMessageDefinition_(); }
00211
00212 ROS_DEPRECATED const std::string __getMessageDefinition() const { return __s_getMessageDefinition_(); }
00213
00214 ROS_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
00215 {
00216 ros::serialization::OStream stream(write_ptr, 1000000000);
00217 ros::serialization::serialize(stream, link_name);
00218 ros::serialization::serialize(stream, object);
00219 ros::serialization::serialize(stream, touch_links);
00220 return stream.getData();
00221 }
00222
00223 ROS_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr)
00224 {
00225 ros::serialization::IStream stream(read_ptr, 1000000000);
00226 ros::serialization::deserialize(stream, link_name);
00227 ros::serialization::deserialize(stream, object);
00228 ros::serialization::deserialize(stream, touch_links);
00229 return stream.getData();
00230 }
00231
00232 ROS_DEPRECATED virtual uint32_t serializationLength() const
00233 {
00234 uint32_t size = 0;
00235 size += ros::serialization::serializationLength(link_name);
00236 size += ros::serialization::serializationLength(object);
00237 size += ros::serialization::serializationLength(touch_links);
00238 return size;
00239 }
00240
00241 typedef boost::shared_ptr< ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> > Ptr;
00242 typedef boost::shared_ptr< ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> const> ConstPtr;
00243 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00244 };
00245 typedef ::arm_navigation_msgs::AttachedCollisionObject_<std::allocator<void> > AttachedCollisionObject;
00246
00247 typedef boost::shared_ptr< ::arm_navigation_msgs::AttachedCollisionObject> AttachedCollisionObjectPtr;
00248 typedef boost::shared_ptr< ::arm_navigation_msgs::AttachedCollisionObject const> AttachedCollisionObjectConstPtr;
00249
00250 template<typename ContainerAllocator> const std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > AttachedCollisionObject_<ContainerAllocator>::REMOVE_ALL_ATTACHED_OBJECTS = "\"all\"";
00251
00252 template<typename ContainerAllocator>
00253 std::ostream& operator<<(std::ostream& s, const ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> & v)
00254 {
00255 ros::message_operations::Printer< ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> >::stream(s, "", v);
00256 return s;}
00257
00258 }
00259
00260 namespace ros
00261 {
00262 namespace message_traits
00263 {
00264 template<class ContainerAllocator> struct IsMessage< ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> > : public TrueType {};
00265 template<class ContainerAllocator> struct IsMessage< ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> const> : public TrueType {};
00266 template<class ContainerAllocator>
00267 struct MD5Sum< ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> > {
00268 static const char* value()
00269 {
00270 return "3fd8ca730863e3d97d109c317d106cf9";
00271 }
00272
00273 static const char* value(const ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> &) { return value(); }
00274 static const uint64_t static_value1 = 0x3fd8ca730863e3d9ULL;
00275 static const uint64_t static_value2 = 0x7d109c317d106cf9ULL;
00276 };
00277
00278 template<class ContainerAllocator>
00279 struct DataType< ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> > {
00280 static const char* value()
00281 {
00282 return "arm_navigation_msgs/AttachedCollisionObject";
00283 }
00284
00285 static const char* value(const ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> &) { return value(); }
00286 };
00287
00288 template<class ContainerAllocator>
00289 struct Definition< ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> > {
00290 static const char* value()
00291 {
00292 return "# The CollisionObject will be attached with a fixed joint to this link\n\
00293 # If link name is set to REMOVE_ALL_ATTACHED_OBJECTS and object.operation \n\
00294 # is set to REMOVE will remove all attached bodies attached to any object\n\
00295 string link_name\n\
00296 \n\
00297 #Reserved for indicating that all attached objects should be removed\n\
00298 string REMOVE_ALL_ATTACHED_OBJECTS = \"all\"\n\
00299 \n\
00300 #This contains the actual shapes and poses for the CollisionObject\n\
00301 #to be attached to the link\n\
00302 #If action is remove and no object.id is set, all objects\n\
00303 #attached to the link indicated by link_name will be removed\n\
00304 CollisionObject object\n\
00305 \n\
00306 # The set of links that the attached objects are allowed to touch\n\
00307 # by default - the link_name is included by default\n\
00308 string[] touch_links\n\
00309 \n\
00310 ================================================================================\n\
00311 MSG: arm_navigation_msgs/CollisionObject\n\
00312 # a header, used for interpreting the poses\n\
00313 Header header\n\
00314 \n\
00315 # the id of the object\n\
00316 string id\n\
00317 \n\
00318 # The padding used for filtering points near the object.\n\
00319 # This does not affect collision checking for the object. \n\
00320 # Set to negative to get zero padding.\n\
00321 float32 padding\n\
00322 \n\
00323 #This contains what is to be done with the object\n\
00324 CollisionObjectOperation operation\n\
00325 \n\
00326 #the shapes associated with the object\n\
00327 arm_navigation_msgs/Shape[] shapes\n\
00328 \n\
00329 #the poses associated with the shapes - will be transformed using the header\n\
00330 geometry_msgs/Pose[] poses\n\
00331 \n\
00332 ================================================================================\n\
00333 MSG: std_msgs/Header\n\
00334 # Standard metadata for higher-level stamped data types.\n\
00335 # This is generally used to communicate timestamped data \n\
00336 # in a particular coordinate frame.\n\
00337 # \n\
00338 # sequence ID: consecutively increasing ID \n\
00339 uint32 seq\n\
00340 #Two-integer timestamp that is expressed as:\n\
00341 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00342 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00343 # time-handling sugar is provided by the client library\n\
00344 time stamp\n\
00345 #Frame this data is associated with\n\
00346 # 0: no frame\n\
00347 # 1: global frame\n\
00348 string frame_id\n\
00349 \n\
00350 ================================================================================\n\
00351 MSG: arm_navigation_msgs/CollisionObjectOperation\n\
00352 #Puts the object into the environment\n\
00353 #or updates the object if already added\n\
00354 byte ADD=0\n\
00355 \n\
00356 #Removes the object from the environment entirely\n\
00357 byte REMOVE=1\n\
00358 \n\
00359 #Only valid within the context of a CollisionAttachedObject message\n\
00360 #Will be ignored if sent with an CollisionObject message\n\
00361 #Takes an attached object, detaches from the attached link\n\
00362 #But adds back in as regular object\n\
00363 byte DETACH_AND_ADD_AS_OBJECT=2\n\
00364 \n\
00365 #Only valid within the context of a CollisionAttachedObject message\n\
00366 #Will be ignored if sent with an CollisionObject message\n\
00367 #Takes current object in the environment and removes it as\n\
00368 #a regular object\n\
00369 byte ATTACH_AND_REMOVE_AS_OBJECT=3\n\
00370 \n\
00371 # Byte code for operation\n\
00372 byte operation\n\
00373 \n\
00374 ================================================================================\n\
00375 MSG: arm_navigation_msgs/Shape\n\
00376 byte SPHERE=0\n\
00377 byte BOX=1\n\
00378 byte CYLINDER=2\n\
00379 byte MESH=3\n\
00380 \n\
00381 byte type\n\
00382 \n\
00383 \n\
00384 #### define sphere, box, cylinder ####\n\
00385 # the origin of each shape is considered at the shape's center\n\
00386 \n\
00387 # for sphere\n\
00388 # radius := dimensions[0]\n\
00389 \n\
00390 # for cylinder\n\
00391 # radius := dimensions[0]\n\
00392 # length := dimensions[1]\n\
00393 # the length is along the Z axis\n\
00394 \n\
00395 # for box\n\
00396 # size_x := dimensions[0]\n\
00397 # size_y := dimensions[1]\n\
00398 # size_z := dimensions[2]\n\
00399 float64[] dimensions\n\
00400 \n\
00401 \n\
00402 #### define mesh ####\n\
00403 \n\
00404 # list of triangles; triangle k is defined by tre vertices located\n\
00405 # at indices triangles[3k], triangles[3k+1], triangles[3k+2]\n\
00406 int32[] triangles\n\
00407 geometry_msgs/Point[] vertices\n\
00408 \n\
00409 ================================================================================\n\
00410 MSG: geometry_msgs/Point\n\
00411 # This contains the position of a point in free space\n\
00412 float64 x\n\
00413 float64 y\n\
00414 float64 z\n\
00415 \n\
00416 ================================================================================\n\
00417 MSG: geometry_msgs/Pose\n\
00418 # A representation of pose in free space, composed of postion and orientation. \n\
00419 Point position\n\
00420 Quaternion orientation\n\
00421 \n\
00422 ================================================================================\n\
00423 MSG: geometry_msgs/Quaternion\n\
00424 # This represents an orientation in free space in quaternion form.\n\
00425 \n\
00426 float64 x\n\
00427 float64 y\n\
00428 float64 z\n\
00429 float64 w\n\
00430 \n\
00431 ";
00432 }
00433
00434 static const char* value(const ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> &) { return value(); }
00435 };
00436
00437 }
00438 }
00439
00440 namespace ros
00441 {
00442 namespace serialization
00443 {
00444
00445 template<class ContainerAllocator> struct Serializer< ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> >
00446 {
00447 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00448 {
00449 stream.next(m.link_name);
00450 stream.next(m.object);
00451 stream.next(m.touch_links);
00452 }
00453
00454 ROS_DECLARE_ALLINONE_SERIALIZER;
00455 };
00456 }
00457 }
00458
00459 namespace ros
00460 {
00461 namespace message_operations
00462 {
00463
00464 template<class ContainerAllocator>
00465 struct Printer< ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> >
00466 {
00467 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::arm_navigation_msgs::AttachedCollisionObject_<ContainerAllocator> & v)
00468 {
00469 s << indent << "link_name: ";
00470 Printer<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::stream(s, indent + " ", v.link_name);
00471 s << indent << "object: ";
00472 s << std::endl;
00473 Printer< ::arm_navigation_msgs::CollisionObject_<ContainerAllocator> >::stream(s, indent + " ", v.object);
00474 s << indent << "touch_links[]" << std::endl;
00475 for (size_t i = 0; i < v.touch_links.size(); ++i)
00476 {
00477 s << indent << " touch_links[" << i << "]: ";
00478 Printer<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::stream(s, indent + " ", v.touch_links[i]);
00479 }
00480 }
00481 };
00482
00483
00484 }
00485 }
00486
00487 #endif // ARM_NAVIGATION_MSGS_MESSAGE_ATTACHEDCOLLISIONOBJECT_H
00488