00001
00002 #ifndef ROBOT_MECHANISM_CONTROLLERS_MESSAGE_JTCARTESIANCONTROLLERSTATE_H
00003 #define ROBOT_MECHANISM_CONTROLLERS_MESSAGE_JTCARTESIANCONTROLLERSTATE_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 "std_msgs/Header.h"
00018 #include "geometry_msgs/PoseStamped.h"
00019 #include "geometry_msgs/PoseStamped.h"
00020 #include "geometry_msgs/PoseStamped.h"
00021 #include "geometry_msgs/Twist.h"
00022 #include "geometry_msgs/Twist.h"
00023 #include "geometry_msgs/Twist.h"
00024 #include "geometry_msgs/Wrench.h"
00025 #include "std_msgs/Float64MultiArray.h"
00026 #include "std_msgs/Float64MultiArray.h"
00027
00028 namespace robot_mechanism_controllers
00029 {
00030 template <class ContainerAllocator>
00031 struct JTCartesianControllerState_ {
00032 typedef JTCartesianControllerState_<ContainerAllocator> Type;
00033
00034 JTCartesianControllerState_()
00035 : header()
00036 , x()
00037 , x_desi()
00038 , x_desi_filtered()
00039 , x_err()
00040 , xd()
00041 , xd_desi()
00042 , F()
00043 , tau_pose()
00044 , tau_posture()
00045 , tau()
00046 , J()
00047 , N()
00048 {
00049 }
00050
00051 JTCartesianControllerState_(const ContainerAllocator& _alloc)
00052 : header(_alloc)
00053 , x(_alloc)
00054 , x_desi(_alloc)
00055 , x_desi_filtered(_alloc)
00056 , x_err(_alloc)
00057 , xd(_alloc)
00058 , xd_desi(_alloc)
00059 , F(_alloc)
00060 , tau_pose(_alloc)
00061 , tau_posture(_alloc)
00062 , tau(_alloc)
00063 , J(_alloc)
00064 , N(_alloc)
00065 {
00066 }
00067
00068 typedef ::std_msgs::Header_<ContainerAllocator> _header_type;
00069 ::std_msgs::Header_<ContainerAllocator> header;
00070
00071 typedef ::geometry_msgs::PoseStamped_<ContainerAllocator> _x_type;
00072 ::geometry_msgs::PoseStamped_<ContainerAllocator> x;
00073
00074 typedef ::geometry_msgs::PoseStamped_<ContainerAllocator> _x_desi_type;
00075 ::geometry_msgs::PoseStamped_<ContainerAllocator> x_desi;
00076
00077 typedef ::geometry_msgs::PoseStamped_<ContainerAllocator> _x_desi_filtered_type;
00078 ::geometry_msgs::PoseStamped_<ContainerAllocator> x_desi_filtered;
00079
00080 typedef ::geometry_msgs::Twist_<ContainerAllocator> _x_err_type;
00081 ::geometry_msgs::Twist_<ContainerAllocator> x_err;
00082
00083 typedef ::geometry_msgs::Twist_<ContainerAllocator> _xd_type;
00084 ::geometry_msgs::Twist_<ContainerAllocator> xd;
00085
00086 typedef ::geometry_msgs::Twist_<ContainerAllocator> _xd_desi_type;
00087 ::geometry_msgs::Twist_<ContainerAllocator> xd_desi;
00088
00089 typedef ::geometry_msgs::Wrench_<ContainerAllocator> _F_type;
00090 ::geometry_msgs::Wrench_<ContainerAllocator> F;
00091
00092 typedef std::vector<double, typename ContainerAllocator::template rebind<double>::other > _tau_pose_type;
00093 std::vector<double, typename ContainerAllocator::template rebind<double>::other > tau_pose;
00094
00095 typedef std::vector<double, typename ContainerAllocator::template rebind<double>::other > _tau_posture_type;
00096 std::vector<double, typename ContainerAllocator::template rebind<double>::other > tau_posture;
00097
00098 typedef std::vector<double, typename ContainerAllocator::template rebind<double>::other > _tau_type;
00099 std::vector<double, typename ContainerAllocator::template rebind<double>::other > tau;
00100
00101 typedef ::std_msgs::Float64MultiArray_<ContainerAllocator> _J_type;
00102 ::std_msgs::Float64MultiArray_<ContainerAllocator> J;
00103
00104 typedef ::std_msgs::Float64MultiArray_<ContainerAllocator> _N_type;
00105 ::std_msgs::Float64MultiArray_<ContainerAllocator> N;
00106
00107
00108 typedef boost::shared_ptr< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> > Ptr;
00109 typedef boost::shared_ptr< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> const> ConstPtr;
00110 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00111 };
00112 typedef ::robot_mechanism_controllers::JTCartesianControllerState_<std::allocator<void> > JTCartesianControllerState;
00113
00114 typedef boost::shared_ptr< ::robot_mechanism_controllers::JTCartesianControllerState> JTCartesianControllerStatePtr;
00115 typedef boost::shared_ptr< ::robot_mechanism_controllers::JTCartesianControllerState const> JTCartesianControllerStateConstPtr;
00116
00117
00118 template<typename ContainerAllocator>
00119 std::ostream& operator<<(std::ostream& s, const ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> & v)
00120 {
00121 ros::message_operations::Printer< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> >::stream(s, "", v);
00122 return s;}
00123
00124 }
00125
00126 namespace ros
00127 {
00128 namespace message_traits
00129 {
00130 template<class ContainerAllocator> struct IsMessage< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> > : public TrueType {};
00131 template<class ContainerAllocator> struct IsMessage< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> const> : public TrueType {};
00132 template<class ContainerAllocator>
00133 struct MD5Sum< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> > {
00134 static const char* value()
00135 {
00136 return "6ecdaa599ea0d27643819ae4cd4c43d0";
00137 }
00138
00139 static const char* value(const ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> &) { return value(); }
00140 static const uint64_t static_value1 = 0x6ecdaa599ea0d276ULL;
00141 static const uint64_t static_value2 = 0x43819ae4cd4c43d0ULL;
00142 };
00143
00144 template<class ContainerAllocator>
00145 struct DataType< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> > {
00146 static const char* value()
00147 {
00148 return "robot_mechanism_controllers/JTCartesianControllerState";
00149 }
00150
00151 static const char* value(const ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> &) { return value(); }
00152 };
00153
00154 template<class ContainerAllocator>
00155 struct Definition< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> > {
00156 static const char* value()
00157 {
00158 return "Header header\n\
00159 geometry_msgs/PoseStamped x\n\
00160 geometry_msgs/PoseStamped x_desi\n\
00161 geometry_msgs/PoseStamped x_desi_filtered\n\
00162 geometry_msgs/Twist x_err\n\
00163 geometry_msgs/Twist xd\n\
00164 geometry_msgs/Twist xd_desi\n\
00165 geometry_msgs/Wrench F\n\
00166 float64[] tau_pose\n\
00167 float64[] tau_posture\n\
00168 float64[] tau\n\
00169 std_msgs/Float64MultiArray J\n\
00170 std_msgs/Float64MultiArray N\n\
00171 \n\
00172 ================================================================================\n\
00173 MSG: std_msgs/Header\n\
00174 # Standard metadata for higher-level stamped data types.\n\
00175 # This is generally used to communicate timestamped data \n\
00176 # in a particular coordinate frame.\n\
00177 # \n\
00178 # sequence ID: consecutively increasing ID \n\
00179 uint32 seq\n\
00180 #Two-integer timestamp that is expressed as:\n\
00181 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00182 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00183 # time-handling sugar is provided by the client library\n\
00184 time stamp\n\
00185 #Frame this data is associated with\n\
00186 # 0: no frame\n\
00187 # 1: global frame\n\
00188 string frame_id\n\
00189 \n\
00190 ================================================================================\n\
00191 MSG: geometry_msgs/PoseStamped\n\
00192 # A Pose with reference coordinate frame and timestamp\n\
00193 Header header\n\
00194 Pose pose\n\
00195 \n\
00196 ================================================================================\n\
00197 MSG: geometry_msgs/Pose\n\
00198 # A representation of pose in free space, composed of postion and orientation. \n\
00199 Point position\n\
00200 Quaternion orientation\n\
00201 \n\
00202 ================================================================================\n\
00203 MSG: geometry_msgs/Point\n\
00204 # This contains the position of a point in free space\n\
00205 float64 x\n\
00206 float64 y\n\
00207 float64 z\n\
00208 \n\
00209 ================================================================================\n\
00210 MSG: geometry_msgs/Quaternion\n\
00211 # This represents an orientation in free space in quaternion form.\n\
00212 \n\
00213 float64 x\n\
00214 float64 y\n\
00215 float64 z\n\
00216 float64 w\n\
00217 \n\
00218 ================================================================================\n\
00219 MSG: geometry_msgs/Twist\n\
00220 # This expresses velocity in free space broken into it's linear and angular parts. \n\
00221 Vector3 linear\n\
00222 Vector3 angular\n\
00223 \n\
00224 ================================================================================\n\
00225 MSG: geometry_msgs/Vector3\n\
00226 # This represents a vector in free space. \n\
00227 \n\
00228 float64 x\n\
00229 float64 y\n\
00230 float64 z\n\
00231 ================================================================================\n\
00232 MSG: geometry_msgs/Wrench\n\
00233 # This represents force in free space, seperated into \n\
00234 # it's linear and angular parts. \n\
00235 Vector3 force\n\
00236 Vector3 torque\n\
00237 \n\
00238 ================================================================================\n\
00239 MSG: std_msgs/Float64MultiArray\n\
00240 # Please look at the MultiArrayLayout message definition for\n\
00241 # documentation on all multiarrays.\n\
00242 \n\
00243 MultiArrayLayout layout # specification of data layout\n\
00244 float64[] data # array of data\n\
00245 \n\
00246 \n\
00247 ================================================================================\n\
00248 MSG: std_msgs/MultiArrayLayout\n\
00249 # The multiarray declares a generic multi-dimensional array of a\n\
00250 # particular data type. Dimensions are ordered from outer most\n\
00251 # to inner most.\n\
00252 \n\
00253 MultiArrayDimension[] dim # Array of dimension properties\n\
00254 uint32 data_offset # padding bytes at front of data\n\
00255 \n\
00256 # Accessors should ALWAYS be written in terms of dimension stride\n\
00257 # and specified outer-most dimension first.\n\
00258 # \n\
00259 # multiarray(i,j,k) = data[data_offset + dim_stride[1]*i + dim_stride[2]*j + k]\n\
00260 #\n\
00261 # A standard, 3-channel 640x480 image with interleaved color channels\n\
00262 # would be specified as:\n\
00263 #\n\
00264 # dim[0].label = \"height\"\n\
00265 # dim[0].size = 480\n\
00266 # dim[0].stride = 3*640*480 = 921600 (note dim[0] stride is just size of image)\n\
00267 # dim[1].label = \"width\"\n\
00268 # dim[1].size = 640\n\
00269 # dim[1].stride = 3*640 = 1920\n\
00270 # dim[2].label = \"channel\"\n\
00271 # dim[2].size = 3\n\
00272 # dim[2].stride = 3\n\
00273 #\n\
00274 # multiarray(i,j,k) refers to the ith row, jth column, and kth channel.\n\
00275 ================================================================================\n\
00276 MSG: std_msgs/MultiArrayDimension\n\
00277 string label # label of given dimension\n\
00278 uint32 size # size of given dimension (in type units)\n\
00279 uint32 stride # stride of given dimension\n\
00280 ";
00281 }
00282
00283 static const char* value(const ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> &) { return value(); }
00284 };
00285
00286 template<class ContainerAllocator> struct HasHeader< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> > : public TrueType {};
00287 template<class ContainerAllocator> struct HasHeader< const ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> > : public TrueType {};
00288 }
00289 }
00290
00291 namespace ros
00292 {
00293 namespace serialization
00294 {
00295
00296 template<class ContainerAllocator> struct Serializer< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> >
00297 {
00298 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00299 {
00300 stream.next(m.header);
00301 stream.next(m.x);
00302 stream.next(m.x_desi);
00303 stream.next(m.x_desi_filtered);
00304 stream.next(m.x_err);
00305 stream.next(m.xd);
00306 stream.next(m.xd_desi);
00307 stream.next(m.F);
00308 stream.next(m.tau_pose);
00309 stream.next(m.tau_posture);
00310 stream.next(m.tau);
00311 stream.next(m.J);
00312 stream.next(m.N);
00313 }
00314
00315 ROS_DECLARE_ALLINONE_SERIALIZER;
00316 };
00317 }
00318 }
00319
00320 namespace ros
00321 {
00322 namespace message_operations
00323 {
00324
00325 template<class ContainerAllocator>
00326 struct Printer< ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> >
00327 {
00328 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::robot_mechanism_controllers::JTCartesianControllerState_<ContainerAllocator> & v)
00329 {
00330 s << indent << "header: ";
00331 s << std::endl;
00332 Printer< ::std_msgs::Header_<ContainerAllocator> >::stream(s, indent + " ", v.header);
00333 s << indent << "x: ";
00334 s << std::endl;
00335 Printer< ::geometry_msgs::PoseStamped_<ContainerAllocator> >::stream(s, indent + " ", v.x);
00336 s << indent << "x_desi: ";
00337 s << std::endl;
00338 Printer< ::geometry_msgs::PoseStamped_<ContainerAllocator> >::stream(s, indent + " ", v.x_desi);
00339 s << indent << "x_desi_filtered: ";
00340 s << std::endl;
00341 Printer< ::geometry_msgs::PoseStamped_<ContainerAllocator> >::stream(s, indent + " ", v.x_desi_filtered);
00342 s << indent << "x_err: ";
00343 s << std::endl;
00344 Printer< ::geometry_msgs::Twist_<ContainerAllocator> >::stream(s, indent + " ", v.x_err);
00345 s << indent << "xd: ";
00346 s << std::endl;
00347 Printer< ::geometry_msgs::Twist_<ContainerAllocator> >::stream(s, indent + " ", v.xd);
00348 s << indent << "xd_desi: ";
00349 s << std::endl;
00350 Printer< ::geometry_msgs::Twist_<ContainerAllocator> >::stream(s, indent + " ", v.xd_desi);
00351 s << indent << "F: ";
00352 s << std::endl;
00353 Printer< ::geometry_msgs::Wrench_<ContainerAllocator> >::stream(s, indent + " ", v.F);
00354 s << indent << "tau_pose[]" << std::endl;
00355 for (size_t i = 0; i < v.tau_pose.size(); ++i)
00356 {
00357 s << indent << " tau_pose[" << i << "]: ";
00358 Printer<double>::stream(s, indent + " ", v.tau_pose[i]);
00359 }
00360 s << indent << "tau_posture[]" << std::endl;
00361 for (size_t i = 0; i < v.tau_posture.size(); ++i)
00362 {
00363 s << indent << " tau_posture[" << i << "]: ";
00364 Printer<double>::stream(s, indent + " ", v.tau_posture[i]);
00365 }
00366 s << indent << "tau[]" << std::endl;
00367 for (size_t i = 0; i < v.tau.size(); ++i)
00368 {
00369 s << indent << " tau[" << i << "]: ";
00370 Printer<double>::stream(s, indent + " ", v.tau[i]);
00371 }
00372 s << indent << "J: ";
00373 s << std::endl;
00374 Printer< ::std_msgs::Float64MultiArray_<ContainerAllocator> >::stream(s, indent + " ", v.J);
00375 s << indent << "N: ";
00376 s << std::endl;
00377 Printer< ::std_msgs::Float64MultiArray_<ContainerAllocator> >::stream(s, indent + " ", v.N);
00378 }
00379 };
00380
00381
00382 }
00383 }
00384
00385 #endif // ROBOT_MECHANISM_CONTROLLERS_MESSAGE_JTCARTESIANCONTROLLERSTATE_H
00386