$search
00001 /* Auto-generated by genmsg_cpp for file /home/rosbuild/hudson/workspace/doc-electric-ackermann_msgs/doc_stacks/2013-03-01_13-52-28.023467/ackermann_msgs/msg/AckermannDrive.msg */ 00002 #ifndef ACKERMANN_MSGS_MESSAGE_ACKERMANNDRIVE_H 00003 #define ACKERMANN_MSGS_MESSAGE_ACKERMANNDRIVE_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 ackermann_msgs 00019 { 00020 template <class ContainerAllocator> 00021 struct AckermannDrive_ { 00022 typedef AckermannDrive_<ContainerAllocator> Type; 00023 00024 AckermannDrive_() 00025 : steering_angle(0.0) 00026 , steering_angle_velocity(0.0) 00027 , speed(0.0) 00028 , acceleration(0.0) 00029 , jerk(0.0) 00030 { 00031 } 00032 00033 AckermannDrive_(const ContainerAllocator& _alloc) 00034 : steering_angle(0.0) 00035 , steering_angle_velocity(0.0) 00036 , speed(0.0) 00037 , acceleration(0.0) 00038 , jerk(0.0) 00039 { 00040 } 00041 00042 typedef float _steering_angle_type; 00043 float steering_angle; 00044 00045 typedef float _steering_angle_velocity_type; 00046 float steering_angle_velocity; 00047 00048 typedef float _speed_type; 00049 float speed; 00050 00051 typedef float _acceleration_type; 00052 float acceleration; 00053 00054 typedef float _jerk_type; 00055 float jerk; 00056 00057 00058 private: 00059 static const char* __s_getDataType_() { return "ackermann_msgs/AckermannDrive"; } 00060 public: 00061 ROS_DEPRECATED static const std::string __s_getDataType() { return __s_getDataType_(); } 00062 00063 ROS_DEPRECATED const std::string __getDataType() const { return __s_getDataType_(); } 00064 00065 private: 00066 static const char* __s_getMD5Sum_() { return "3512e91b48d69674a0e86fadf1ea8231"; } 00067 public: 00068 ROS_DEPRECATED static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); } 00069 00070 ROS_DEPRECATED const std::string __getMD5Sum() const { return __s_getMD5Sum_(); } 00071 00072 private: 00073 static const char* __s_getMessageDefinition_() { return "## Driving command for a car-like vehicle using Ackermann steering.\n\ 00074 # $Id: AckermannDrive.msg 1966 2012-02-11 17:52:11Z jack.oquin $\n\ 00075 \n\ 00076 # Assumes Ackermann front-wheel steering. The left and right front\n\ 00077 # wheels are generally at different angles. To simplify, the commanded\n\ 00078 # angle corresponds to the yaw of a virtual wheel located at the\n\ 00079 # center of the front axle, like on a tricycle. Positive yaw is to\n\ 00080 # the left. (This is *not* the angle of the steering wheel inside the\n\ 00081 # passenger compartment.)\n\ 00082 #\n\ 00083 # Zero steering angle velocity means change the steering angle as\n\ 00084 # quickly as possible. Positive velocity indicates a desired absolute\n\ 00085 # rate of change either left or right. The controller tries not to\n\ 00086 # exceed this limit in either direction, but sometimes it might.\n\ 00087 #\n\ 00088 float32 steering_angle # desired virtual angle (radians)\n\ 00089 float32 steering_angle_velocity # desired rate of change (radians/s)\n\ 00090 \n\ 00091 # Drive at requested speed, acceleration and jerk (the 1st, 2nd and\n\ 00092 # 3rd derivatives of position). All are measured at the vehicle's\n\ 00093 # center of rotation, typically the center of the rear axle. The\n\ 00094 # controller tries not to exceed these limits in either direction, but\n\ 00095 # sometimes it might.\n\ 00096 #\n\ 00097 # Speed is the desired scalar magnitude of the velocity vector.\n\ 00098 # Direction is forward unless the sign is negative, indicating reverse.\n\ 00099 #\n\ 00100 # Zero acceleration means change speed as quickly as\n\ 00101 # possible. Positive acceleration indicates a desired absolute\n\ 00102 # magnitude; that includes deceleration.\n\ 00103 #\n\ 00104 # Zero jerk means change acceleration as quickly as possible. Positive\n\ 00105 # jerk indicates a desired absolute rate of acceleration change in\n\ 00106 # either direction (increasing or decreasing).\n\ 00107 #\n\ 00108 float32 speed # desired forward speed (m/s)\n\ 00109 float32 acceleration # desired acceleration (m/s^2)\n\ 00110 float32 jerk # desired jerk (m/s^3)\n\ 00111 \n\ 00112 "; } 00113 public: 00114 ROS_DEPRECATED static const std::string __s_getMessageDefinition() { return __s_getMessageDefinition_(); } 00115 00116 ROS_DEPRECATED const std::string __getMessageDefinition() const { return __s_getMessageDefinition_(); } 00117 00118 ROS_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const 00119 { 00120 ros::serialization::OStream stream(write_ptr, 1000000000); 00121 ros::serialization::serialize(stream, steering_angle); 00122 ros::serialization::serialize(stream, steering_angle_velocity); 00123 ros::serialization::serialize(stream, speed); 00124 ros::serialization::serialize(stream, acceleration); 00125 ros::serialization::serialize(stream, jerk); 00126 return stream.getData(); 00127 } 00128 00129 ROS_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr) 00130 { 00131 ros::serialization::IStream stream(read_ptr, 1000000000); 00132 ros::serialization::deserialize(stream, steering_angle); 00133 ros::serialization::deserialize(stream, steering_angle_velocity); 00134 ros::serialization::deserialize(stream, speed); 00135 ros::serialization::deserialize(stream, acceleration); 00136 ros::serialization::deserialize(stream, jerk); 00137 return stream.getData(); 00138 } 00139 00140 ROS_DEPRECATED virtual uint32_t serializationLength() const 00141 { 00142 uint32_t size = 0; 00143 size += ros::serialization::serializationLength(steering_angle); 00144 size += ros::serialization::serializationLength(steering_angle_velocity); 00145 size += ros::serialization::serializationLength(speed); 00146 size += ros::serialization::serializationLength(acceleration); 00147 size += ros::serialization::serializationLength(jerk); 00148 return size; 00149 } 00150 00151 typedef boost::shared_ptr< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> > Ptr; 00152 typedef boost::shared_ptr< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> const> ConstPtr; 00153 boost::shared_ptr<std::map<std::string, std::string> > __connection_header; 00154 }; // struct AckermannDrive 00155 typedef ::ackermann_msgs::AckermannDrive_<std::allocator<void> > AckermannDrive; 00156 00157 typedef boost::shared_ptr< ::ackermann_msgs::AckermannDrive> AckermannDrivePtr; 00158 typedef boost::shared_ptr< ::ackermann_msgs::AckermannDrive const> AckermannDriveConstPtr; 00159 00160 00161 template<typename ContainerAllocator> 00162 std::ostream& operator<<(std::ostream& s, const ::ackermann_msgs::AckermannDrive_<ContainerAllocator> & v) 00163 { 00164 ros::message_operations::Printer< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> >::stream(s, "", v); 00165 return s;} 00166 00167 } // namespace ackermann_msgs 00168 00169 namespace ros 00170 { 00171 namespace message_traits 00172 { 00173 template<class ContainerAllocator> struct IsMessage< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> > : public TrueType {}; 00174 template<class ContainerAllocator> struct IsMessage< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> const> : public TrueType {}; 00175 template<class ContainerAllocator> 00176 struct MD5Sum< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> > { 00177 static const char* value() 00178 { 00179 return "3512e91b48d69674a0e86fadf1ea8231"; 00180 } 00181 00182 static const char* value(const ::ackermann_msgs::AckermannDrive_<ContainerAllocator> &) { return value(); } 00183 static const uint64_t static_value1 = 0x3512e91b48d69674ULL; 00184 static const uint64_t static_value2 = 0xa0e86fadf1ea8231ULL; 00185 }; 00186 00187 template<class ContainerAllocator> 00188 struct DataType< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> > { 00189 static const char* value() 00190 { 00191 return "ackermann_msgs/AckermannDrive"; 00192 } 00193 00194 static const char* value(const ::ackermann_msgs::AckermannDrive_<ContainerAllocator> &) { return value(); } 00195 }; 00196 00197 template<class ContainerAllocator> 00198 struct Definition< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> > { 00199 static const char* value() 00200 { 00201 return "## Driving command for a car-like vehicle using Ackermann steering.\n\ 00202 # $Id: AckermannDrive.msg 1966 2012-02-11 17:52:11Z jack.oquin $\n\ 00203 \n\ 00204 # Assumes Ackermann front-wheel steering. The left and right front\n\ 00205 # wheels are generally at different angles. To simplify, the commanded\n\ 00206 # angle corresponds to the yaw of a virtual wheel located at the\n\ 00207 # center of the front axle, like on a tricycle. Positive yaw is to\n\ 00208 # the left. (This is *not* the angle of the steering wheel inside the\n\ 00209 # passenger compartment.)\n\ 00210 #\n\ 00211 # Zero steering angle velocity means change the steering angle as\n\ 00212 # quickly as possible. Positive velocity indicates a desired absolute\n\ 00213 # rate of change either left or right. The controller tries not to\n\ 00214 # exceed this limit in either direction, but sometimes it might.\n\ 00215 #\n\ 00216 float32 steering_angle # desired virtual angle (radians)\n\ 00217 float32 steering_angle_velocity # desired rate of change (radians/s)\n\ 00218 \n\ 00219 # Drive at requested speed, acceleration and jerk (the 1st, 2nd and\n\ 00220 # 3rd derivatives of position). All are measured at the vehicle's\n\ 00221 # center of rotation, typically the center of the rear axle. The\n\ 00222 # controller tries not to exceed these limits in either direction, but\n\ 00223 # sometimes it might.\n\ 00224 #\n\ 00225 # Speed is the desired scalar magnitude of the velocity vector.\n\ 00226 # Direction is forward unless the sign is negative, indicating reverse.\n\ 00227 #\n\ 00228 # Zero acceleration means change speed as quickly as\n\ 00229 # possible. Positive acceleration indicates a desired absolute\n\ 00230 # magnitude; that includes deceleration.\n\ 00231 #\n\ 00232 # Zero jerk means change acceleration as quickly as possible. Positive\n\ 00233 # jerk indicates a desired absolute rate of acceleration change in\n\ 00234 # either direction (increasing or decreasing).\n\ 00235 #\n\ 00236 float32 speed # desired forward speed (m/s)\n\ 00237 float32 acceleration # desired acceleration (m/s^2)\n\ 00238 float32 jerk # desired jerk (m/s^3)\n\ 00239 \n\ 00240 "; 00241 } 00242 00243 static const char* value(const ::ackermann_msgs::AckermannDrive_<ContainerAllocator> &) { return value(); } 00244 }; 00245 00246 template<class ContainerAllocator> struct IsFixedSize< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> > : public TrueType {}; 00247 } // namespace message_traits 00248 } // namespace ros 00249 00250 namespace ros 00251 { 00252 namespace serialization 00253 { 00254 00255 template<class ContainerAllocator> struct Serializer< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> > 00256 { 00257 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m) 00258 { 00259 stream.next(m.steering_angle); 00260 stream.next(m.steering_angle_velocity); 00261 stream.next(m.speed); 00262 stream.next(m.acceleration); 00263 stream.next(m.jerk); 00264 } 00265 00266 ROS_DECLARE_ALLINONE_SERIALIZER; 00267 }; // struct AckermannDrive_ 00268 } // namespace serialization 00269 } // namespace ros 00270 00271 namespace ros 00272 { 00273 namespace message_operations 00274 { 00275 00276 template<class ContainerAllocator> 00277 struct Printer< ::ackermann_msgs::AckermannDrive_<ContainerAllocator> > 00278 { 00279 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::ackermann_msgs::AckermannDrive_<ContainerAllocator> & v) 00280 { 00281 s << indent << "steering_angle: "; 00282 Printer<float>::stream(s, indent + " ", v.steering_angle); 00283 s << indent << "steering_angle_velocity: "; 00284 Printer<float>::stream(s, indent + " ", v.steering_angle_velocity); 00285 s << indent << "speed: "; 00286 Printer<float>::stream(s, indent + " ", v.speed); 00287 s << indent << "acceleration: "; 00288 Printer<float>::stream(s, indent + " ", v.acceleration); 00289 s << indent << "jerk: "; 00290 Printer<float>::stream(s, indent + " ", v.jerk); 00291 } 00292 }; 00293 00294 00295 } // namespace message_operations 00296 } // namespace ros 00297 00298 #endif // ACKERMANN_MSGS_MESSAGE_ACKERMANNDRIVE_H 00299