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