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