catchrobo2022 / Mbed 2 deprecated catchrobo2022_mbed

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CollisionObject.h Source File

CollisionObject.h

00001 #ifndef _ROS_moveit_msgs_CollisionObject_h
00002 #define _ROS_moveit_msgs_CollisionObject_h
00003 
00004 #include <stdint.h>
00005 #include <string.h>
00006 #include <stdlib.h>
00007 #include "ros/msg.h"
00008 #include "std_msgs/Header.h"
00009 #include "object_recognition_msgs/ObjectType.h"
00010 #include "shape_msgs/SolidPrimitive.h"
00011 #include "geometry_msgs/Pose.h"
00012 #include "shape_msgs/Mesh.h"
00013 #include "shape_msgs/Plane.h"
00014 
00015 namespace moveit_msgs
00016 {
00017 
00018   class CollisionObject : public ros::Msg
00019   {
00020     public:
00021       typedef std_msgs::Header _header_type;
00022       _header_type header;
00023       typedef const char* _id_type;
00024       _id_type id;
00025       typedef object_recognition_msgs::ObjectType _type_type;
00026       _type_type type;
00027       uint32_t primitives_length;
00028       typedef shape_msgs::SolidPrimitive _primitives_type;
00029       _primitives_type st_primitives;
00030       _primitives_type * primitives;
00031       uint32_t primitive_poses_length;
00032       typedef geometry_msgs::Pose _primitive_poses_type;
00033       _primitive_poses_type st_primitive_poses;
00034       _primitive_poses_type * primitive_poses;
00035       uint32_t meshes_length;
00036       typedef shape_msgs::Mesh _meshes_type;
00037       _meshes_type st_meshes;
00038       _meshes_type * meshes;
00039       uint32_t mesh_poses_length;
00040       typedef geometry_msgs::Pose _mesh_poses_type;
00041       _mesh_poses_type st_mesh_poses;
00042       _mesh_poses_type * mesh_poses;
00043       uint32_t planes_length;
00044       typedef shape_msgs::Plane _planes_type;
00045       _planes_type st_planes;
00046       _planes_type * planes;
00047       uint32_t plane_poses_length;
00048       typedef geometry_msgs::Pose _plane_poses_type;
00049       _plane_poses_type st_plane_poses;
00050       _plane_poses_type * plane_poses;
00051       typedef int8_t _operation_type;
00052       _operation_type operation;
00053       enum { ADD = 0 };
00054       enum { REMOVE = 1 };
00055       enum { APPEND = 2 };
00056       enum { MOVE = 3 };
00057 
00058     CollisionObject():
00059       header(),
00060       id(""),
00061       type(),
00062       primitives_length(0), primitives(NULL),
00063       primitive_poses_length(0), primitive_poses(NULL),
00064       meshes_length(0), meshes(NULL),
00065       mesh_poses_length(0), mesh_poses(NULL),
00066       planes_length(0), planes(NULL),
00067       plane_poses_length(0), plane_poses(NULL),
00068       operation(0)
00069     {
00070     }
00071 
00072     virtual int serialize(unsigned char *outbuffer) const
00073     {
00074       int offset = 0;
00075       offset += this->header.serialize(outbuffer + offset);
00076       uint32_t length_id = strlen(this->id);
00077       varToArr(outbuffer + offset, length_id);
00078       offset += 4;
00079       memcpy(outbuffer + offset, this->id, length_id);
00080       offset += length_id;
00081       offset += this->type.serialize(outbuffer + offset);
00082       *(outbuffer + offset + 0) = (this->primitives_length >> (8 * 0)) & 0xFF;
00083       *(outbuffer + offset + 1) = (this->primitives_length >> (8 * 1)) & 0xFF;
00084       *(outbuffer + offset + 2) = (this->primitives_length >> (8 * 2)) & 0xFF;
00085       *(outbuffer + offset + 3) = (this->primitives_length >> (8 * 3)) & 0xFF;
00086       offset += sizeof(this->primitives_length);
00087       for( uint32_t i = 0; i < primitives_length; i++){
00088       offset += this->primitives[i].serialize(outbuffer + offset);
00089       }
00090       *(outbuffer + offset + 0) = (this->primitive_poses_length >> (8 * 0)) & 0xFF;
00091       *(outbuffer + offset + 1) = (this->primitive_poses_length >> (8 * 1)) & 0xFF;
00092       *(outbuffer + offset + 2) = (this->primitive_poses_length >> (8 * 2)) & 0xFF;
00093       *(outbuffer + offset + 3) = (this->primitive_poses_length >> (8 * 3)) & 0xFF;
00094       offset += sizeof(this->primitive_poses_length);
00095       for( uint32_t i = 0; i < primitive_poses_length; i++){
00096       offset += this->primitive_poses[i].serialize(outbuffer + offset);
00097       }
00098       *(outbuffer + offset + 0) = (this->meshes_length >> (8 * 0)) & 0xFF;
00099       *(outbuffer + offset + 1) = (this->meshes_length >> (8 * 1)) & 0xFF;
00100       *(outbuffer + offset + 2) = (this->meshes_length >> (8 * 2)) & 0xFF;
00101       *(outbuffer + offset + 3) = (this->meshes_length >> (8 * 3)) & 0xFF;
00102       offset += sizeof(this->meshes_length);
00103       for( uint32_t i = 0; i < meshes_length; i++){
00104       offset += this->meshes[i].serialize(outbuffer + offset);
00105       }
00106       *(outbuffer + offset + 0) = (this->mesh_poses_length >> (8 * 0)) & 0xFF;
00107       *(outbuffer + offset + 1) = (this->mesh_poses_length >> (8 * 1)) & 0xFF;
00108       *(outbuffer + offset + 2) = (this->mesh_poses_length >> (8 * 2)) & 0xFF;
00109       *(outbuffer + offset + 3) = (this->mesh_poses_length >> (8 * 3)) & 0xFF;
00110       offset += sizeof(this->mesh_poses_length);
00111       for( uint32_t i = 0; i < mesh_poses_length; i++){
00112       offset += this->mesh_poses[i].serialize(outbuffer + offset);
00113       }
00114       *(outbuffer + offset + 0) = (this->planes_length >> (8 * 0)) & 0xFF;
00115       *(outbuffer + offset + 1) = (this->planes_length >> (8 * 1)) & 0xFF;
00116       *(outbuffer + offset + 2) = (this->planes_length >> (8 * 2)) & 0xFF;
00117       *(outbuffer + offset + 3) = (this->planes_length >> (8 * 3)) & 0xFF;
00118       offset += sizeof(this->planes_length);
00119       for( uint32_t i = 0; i < planes_length; i++){
00120       offset += this->planes[i].serialize(outbuffer + offset);
00121       }
00122       *(outbuffer + offset + 0) = (this->plane_poses_length >> (8 * 0)) & 0xFF;
00123       *(outbuffer + offset + 1) = (this->plane_poses_length >> (8 * 1)) & 0xFF;
00124       *(outbuffer + offset + 2) = (this->plane_poses_length >> (8 * 2)) & 0xFF;
00125       *(outbuffer + offset + 3) = (this->plane_poses_length >> (8 * 3)) & 0xFF;
00126       offset += sizeof(this->plane_poses_length);
00127       for( uint32_t i = 0; i < plane_poses_length; i++){
00128       offset += this->plane_poses[i].serialize(outbuffer + offset);
00129       }
00130       union {
00131         int8_t real;
00132         uint8_t base;
00133       } u_operation;
00134       u_operation.real = this->operation;
00135       *(outbuffer + offset + 0) = (u_operation.base >> (8 * 0)) & 0xFF;
00136       offset += sizeof(this->operation);
00137       return offset;
00138     }
00139 
00140     virtual int deserialize(unsigned char *inbuffer)
00141     {
00142       int offset = 0;
00143       offset += this->header.deserialize(inbuffer + offset);
00144       uint32_t length_id;
00145       arrToVar(length_id, (inbuffer + offset));
00146       offset += 4;
00147       for(unsigned int k= offset; k< offset+length_id; ++k){
00148           inbuffer[k-1]=inbuffer[k];
00149       }
00150       inbuffer[offset+length_id-1]=0;
00151       this->id = (char *)(inbuffer + offset-1);
00152       offset += length_id;
00153       offset += this->type.deserialize(inbuffer + offset);
00154       uint32_t primitives_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00155       primitives_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00156       primitives_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00157       primitives_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00158       offset += sizeof(this->primitives_length);
00159       if(primitives_lengthT > primitives_length)
00160         this->primitives = (shape_msgs::SolidPrimitive*)realloc(this->primitives, primitives_lengthT * sizeof(shape_msgs::SolidPrimitive));
00161       primitives_length = primitives_lengthT;
00162       for( uint32_t i = 0; i < primitives_length; i++){
00163       offset += this->st_primitives.deserialize(inbuffer + offset);
00164         memcpy( &(this->primitives[i]), &(this->st_primitives), sizeof(shape_msgs::SolidPrimitive));
00165       }
00166       uint32_t primitive_poses_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00167       primitive_poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00168       primitive_poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00169       primitive_poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00170       offset += sizeof(this->primitive_poses_length);
00171       if(primitive_poses_lengthT > primitive_poses_length)
00172         this->primitive_poses = (geometry_msgs::Pose*)realloc(this->primitive_poses, primitive_poses_lengthT * sizeof(geometry_msgs::Pose));
00173       primitive_poses_length = primitive_poses_lengthT;
00174       for( uint32_t i = 0; i < primitive_poses_length; i++){
00175       offset += this->st_primitive_poses.deserialize(inbuffer + offset);
00176         memcpy( &(this->primitive_poses[i]), &(this->st_primitive_poses), sizeof(geometry_msgs::Pose));
00177       }
00178       uint32_t meshes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00179       meshes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00180       meshes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00181       meshes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00182       offset += sizeof(this->meshes_length);
00183       if(meshes_lengthT > meshes_length)
00184         this->meshes = (shape_msgs::Mesh*)realloc(this->meshes, meshes_lengthT * sizeof(shape_msgs::Mesh));
00185       meshes_length = meshes_lengthT;
00186       for( uint32_t i = 0; i < meshes_length; i++){
00187       offset += this->st_meshes.deserialize(inbuffer + offset);
00188         memcpy( &(this->meshes[i]), &(this->st_meshes), sizeof(shape_msgs::Mesh));
00189       }
00190       uint32_t mesh_poses_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00191       mesh_poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00192       mesh_poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00193       mesh_poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00194       offset += sizeof(this->mesh_poses_length);
00195       if(mesh_poses_lengthT > mesh_poses_length)
00196         this->mesh_poses = (geometry_msgs::Pose*)realloc(this->mesh_poses, mesh_poses_lengthT * sizeof(geometry_msgs::Pose));
00197       mesh_poses_length = mesh_poses_lengthT;
00198       for( uint32_t i = 0; i < mesh_poses_length; i++){
00199       offset += this->st_mesh_poses.deserialize(inbuffer + offset);
00200         memcpy( &(this->mesh_poses[i]), &(this->st_mesh_poses), sizeof(geometry_msgs::Pose));
00201       }
00202       uint32_t planes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00203       planes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00204       planes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00205       planes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00206       offset += sizeof(this->planes_length);
00207       if(planes_lengthT > planes_length)
00208         this->planes = (shape_msgs::Plane*)realloc(this->planes, planes_lengthT * sizeof(shape_msgs::Plane));
00209       planes_length = planes_lengthT;
00210       for( uint32_t i = 0; i < planes_length; i++){
00211       offset += this->st_planes.deserialize(inbuffer + offset);
00212         memcpy( &(this->planes[i]), &(this->st_planes), sizeof(shape_msgs::Plane));
00213       }
00214       uint32_t plane_poses_lengthT = ((uint32_t) (*(inbuffer + offset))); 
00215       plane_poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
00216       plane_poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
00217       plane_poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
00218       offset += sizeof(this->plane_poses_length);
00219       if(plane_poses_lengthT > plane_poses_length)
00220         this->plane_poses = (geometry_msgs::Pose*)realloc(this->plane_poses, plane_poses_lengthT * sizeof(geometry_msgs::Pose));
00221       plane_poses_length = plane_poses_lengthT;
00222       for( uint32_t i = 0; i < plane_poses_length; i++){
00223       offset += this->st_plane_poses.deserialize(inbuffer + offset);
00224         memcpy( &(this->plane_poses[i]), &(this->st_plane_poses), sizeof(geometry_msgs::Pose));
00225       }
00226       union {
00227         int8_t real;
00228         uint8_t base;
00229       } u_operation;
00230       u_operation.base = 0;
00231       u_operation.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
00232       this->operation = u_operation.real;
00233       offset += sizeof(this->operation);
00234      return offset;
00235     }
00236 
00237     virtual const char * getType(){ return "moveit_msgs/CollisionObject"; };
00238     virtual const char * getMD5(){ return "568a161b26dc46c54a5a07621ce82cf3"; };
00239 
00240   };
00241 
00242 }
00243 #endif