00001
00002 #ifndef PR2_MECHANISM_MSGS_MESSAGE_JOINTSTATISTICS_H
00003 #define PR2_MECHANISM_MSGS_MESSAGE_JOINTSTATISTICS_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
00018 namespace pr2_mechanism_msgs
00019 {
00020 template <class ContainerAllocator>
00021 struct JointStatistics_ {
00022 typedef JointStatistics_<ContainerAllocator> Type;
00023
00024 JointStatistics_()
00025 : name()
00026 , timestamp()
00027 , position(0.0)
00028 , velocity(0.0)
00029 , measured_effort(0.0)
00030 , commanded_effort(0.0)
00031 , is_calibrated(false)
00032 , violated_limits(false)
00033 , odometer(0.0)
00034 , min_position(0.0)
00035 , max_position(0.0)
00036 , max_abs_velocity(0.0)
00037 , max_abs_effort(0.0)
00038 {
00039 }
00040
00041 JointStatistics_(const ContainerAllocator& _alloc)
00042 : name(_alloc)
00043 , timestamp()
00044 , position(0.0)
00045 , velocity(0.0)
00046 , measured_effort(0.0)
00047 , commanded_effort(0.0)
00048 , is_calibrated(false)
00049 , violated_limits(false)
00050 , odometer(0.0)
00051 , min_position(0.0)
00052 , max_position(0.0)
00053 , max_abs_velocity(0.0)
00054 , max_abs_effort(0.0)
00055 {
00056 }
00057
00058 typedef std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > _name_type;
00059 std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > name;
00060
00061 typedef ros::Time _timestamp_type;
00062 ros::Time timestamp;
00063
00064 typedef double _position_type;
00065 double position;
00066
00067 typedef double _velocity_type;
00068 double velocity;
00069
00070 typedef double _measured_effort_type;
00071 double measured_effort;
00072
00073 typedef double _commanded_effort_type;
00074 double commanded_effort;
00075
00076 typedef uint8_t _is_calibrated_type;
00077 uint8_t is_calibrated;
00078
00079 typedef uint8_t _violated_limits_type;
00080 uint8_t violated_limits;
00081
00082 typedef double _odometer_type;
00083 double odometer;
00084
00085 typedef double _min_position_type;
00086 double min_position;
00087
00088 typedef double _max_position_type;
00089 double max_position;
00090
00091 typedef double _max_abs_velocity_type;
00092 double max_abs_velocity;
00093
00094 typedef double _max_abs_effort_type;
00095 double max_abs_effort;
00096
00097
00098 typedef boost::shared_ptr< ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> > Ptr;
00099 typedef boost::shared_ptr< ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> const> ConstPtr;
00100 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00101 };
00102 typedef ::pr2_mechanism_msgs::JointStatistics_<std::allocator<void> > JointStatistics;
00103
00104 typedef boost::shared_ptr< ::pr2_mechanism_msgs::JointStatistics> JointStatisticsPtr;
00105 typedef boost::shared_ptr< ::pr2_mechanism_msgs::JointStatistics const> JointStatisticsConstPtr;
00106
00107
00108 template<typename ContainerAllocator>
00109 std::ostream& operator<<(std::ostream& s, const ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> & v)
00110 {
00111 ros::message_operations::Printer< ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> >::stream(s, "", v);
00112 return s;}
00113
00114 }
00115
00116 namespace ros
00117 {
00118 namespace message_traits
00119 {
00120 template<class ContainerAllocator> struct IsMessage< ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> > : public TrueType {};
00121 template<class ContainerAllocator> struct IsMessage< ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> const> : public TrueType {};
00122 template<class ContainerAllocator>
00123 struct MD5Sum< ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> > {
00124 static const char* value()
00125 {
00126 return "90fdc8acbce5bc783d8b4aec49af6590";
00127 }
00128
00129 static const char* value(const ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> &) { return value(); }
00130 static const uint64_t static_value1 = 0x90fdc8acbce5bc78ULL;
00131 static const uint64_t static_value2 = 0x3d8b4aec49af6590ULL;
00132 };
00133
00134 template<class ContainerAllocator>
00135 struct DataType< ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> > {
00136 static const char* value()
00137 {
00138 return "pr2_mechanism_msgs/JointStatistics";
00139 }
00140
00141 static const char* value(const ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> &) { return value(); }
00142 };
00143
00144 template<class ContainerAllocator>
00145 struct Definition< ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> > {
00146 static const char* value()
00147 {
00148 return "# This message contains the state of one joint of the pr2 robot.\n\
00149 # This message is specificly designed for the pr2 robot. \n\
00150 # A generic joint state message can be found in sensor_msgs::JointState\n\
00151 \n\
00152 # the name of the joint\n\
00153 string name\n\
00154 \n\
00155 # the time at which these joint statistics were measured\n\
00156 time timestamp\n\
00157 \n\
00158 # the position of the joint in radians\n\
00159 float64 position\n\
00160 \n\
00161 # the velocity of the joint in radians per second\n\
00162 float64 velocity\n\
00163 \n\
00164 # the measured joint effort \n\
00165 float64 measured_effort\n\
00166 \n\
00167 # the effort that was commanded to the joint.\n\
00168 # the actual applied effort might be different\n\
00169 # because the safety code can limit the effort\n\
00170 # a joint can apply\n\
00171 float64 commanded_effort\n\
00172 \n\
00173 # a flag indicating if the joint is calibrated or not\n\
00174 bool is_calibrated\n\
00175 \n\
00176 # a flag inidcating if the joint violated one of its position/velocity/effort limits\n\
00177 # in the last publish cycle\n\
00178 bool violated_limits\n\
00179 \n\
00180 # the total distance travelled by the joint, measured in radians.\n\
00181 float64 odometer\n\
00182 \n\
00183 # the lowest position reached by the joint in the last publish cycle\n\
00184 float64 min_position\n\
00185 \n\
00186 # the highest position reached by the joint in the last publish cycle\n\
00187 float64 max_position\n\
00188 \n\
00189 # the maximum absolute velocity reached by the joint in the last publish cycle\n\
00190 float64 max_abs_velocity\n\
00191 \n\
00192 # the maximum absolute effort applied by the joint in the last publish cycle\n\
00193 float64 max_abs_effort\n\
00194 \n\
00195 ";
00196 }
00197
00198 static const char* value(const ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> &) { return value(); }
00199 };
00200
00201 }
00202 }
00203
00204 namespace ros
00205 {
00206 namespace serialization
00207 {
00208
00209 template<class ContainerAllocator> struct Serializer< ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> >
00210 {
00211 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00212 {
00213 stream.next(m.name);
00214 stream.next(m.timestamp);
00215 stream.next(m.position);
00216 stream.next(m.velocity);
00217 stream.next(m.measured_effort);
00218 stream.next(m.commanded_effort);
00219 stream.next(m.is_calibrated);
00220 stream.next(m.violated_limits);
00221 stream.next(m.odometer);
00222 stream.next(m.min_position);
00223 stream.next(m.max_position);
00224 stream.next(m.max_abs_velocity);
00225 stream.next(m.max_abs_effort);
00226 }
00227
00228 ROS_DECLARE_ALLINONE_SERIALIZER;
00229 };
00230 }
00231 }
00232
00233 namespace ros
00234 {
00235 namespace message_operations
00236 {
00237
00238 template<class ContainerAllocator>
00239 struct Printer< ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> >
00240 {
00241 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::pr2_mechanism_msgs::JointStatistics_<ContainerAllocator> & v)
00242 {
00243 s << indent << "name: ";
00244 Printer<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::stream(s, indent + " ", v.name);
00245 s << indent << "timestamp: ";
00246 Printer<ros::Time>::stream(s, indent + " ", v.timestamp);
00247 s << indent << "position: ";
00248 Printer<double>::stream(s, indent + " ", v.position);
00249 s << indent << "velocity: ";
00250 Printer<double>::stream(s, indent + " ", v.velocity);
00251 s << indent << "measured_effort: ";
00252 Printer<double>::stream(s, indent + " ", v.measured_effort);
00253 s << indent << "commanded_effort: ";
00254 Printer<double>::stream(s, indent + " ", v.commanded_effort);
00255 s << indent << "is_calibrated: ";
00256 Printer<uint8_t>::stream(s, indent + " ", v.is_calibrated);
00257 s << indent << "violated_limits: ";
00258 Printer<uint8_t>::stream(s, indent + " ", v.violated_limits);
00259 s << indent << "odometer: ";
00260 Printer<double>::stream(s, indent + " ", v.odometer);
00261 s << indent << "min_position: ";
00262 Printer<double>::stream(s, indent + " ", v.min_position);
00263 s << indent << "max_position: ";
00264 Printer<double>::stream(s, indent + " ", v.max_position);
00265 s << indent << "max_abs_velocity: ";
00266 Printer<double>::stream(s, indent + " ", v.max_abs_velocity);
00267 s << indent << "max_abs_effort: ";
00268 Printer<double>::stream(s, indent + " ", v.max_abs_effort);
00269 }
00270 };
00271
00272
00273 }
00274 }
00275
00276 #endif // PR2_MECHANISM_MSGS_MESSAGE_JOINTSTATISTICS_H
00277