Go to the documentation of this file.00001
00002 #ifndef ART_MSGS_MESSAGE_CARDRIVE_H
00003 #define ART_MSGS_MESSAGE_CARDRIVE_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 "art_msgs/Gear.h"
00018 #include "art_msgs/PilotBehavior.h"
00019
00020 namespace art_msgs
00021 {
00022 template <class ContainerAllocator>
00023 struct CarDrive_ {
00024 typedef CarDrive_<ContainerAllocator> Type;
00025
00026 CarDrive_()
00027 : speed(0.0)
00028 , acceleration(0.0)
00029 , jerk(0.0)
00030 , steering_angle(0.0)
00031 , gear()
00032 , behavior()
00033 {
00034 }
00035
00036 CarDrive_(const ContainerAllocator& _alloc)
00037 : speed(0.0)
00038 , acceleration(0.0)
00039 , jerk(0.0)
00040 , steering_angle(0.0)
00041 , gear(_alloc)
00042 , behavior(_alloc)
00043 {
00044 }
00045
00046 typedef float _speed_type;
00047 float speed;
00048
00049 typedef float _acceleration_type;
00050 float acceleration;
00051
00052 typedef float _jerk_type;
00053 float jerk;
00054
00055 typedef float _steering_angle_type;
00056 float steering_angle;
00057
00058 typedef ::art_msgs::Gear_<ContainerAllocator> _gear_type;
00059 ::art_msgs::Gear_<ContainerAllocator> gear;
00060
00061 typedef ::art_msgs::PilotBehavior_<ContainerAllocator> _behavior_type;
00062 ::art_msgs::PilotBehavior_<ContainerAllocator> behavior;
00063
00064
00065 typedef boost::shared_ptr< ::art_msgs::CarDrive_<ContainerAllocator> > Ptr;
00066 typedef boost::shared_ptr< ::art_msgs::CarDrive_<ContainerAllocator> const> ConstPtr;
00067 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00068 };
00069 typedef ::art_msgs::CarDrive_<std::allocator<void> > CarDrive;
00070
00071 typedef boost::shared_ptr< ::art_msgs::CarDrive> CarDrivePtr;
00072 typedef boost::shared_ptr< ::art_msgs::CarDrive const> CarDriveConstPtr;
00073
00074
00075 template<typename ContainerAllocator>
00076 std::ostream& operator<<(std::ostream& s, const ::art_msgs::CarDrive_<ContainerAllocator> & v)
00077 {
00078 ros::message_operations::Printer< ::art_msgs::CarDrive_<ContainerAllocator> >::stream(s, "", v);
00079 return s;}
00080
00081 }
00082
00083 namespace ros
00084 {
00085 namespace message_traits
00086 {
00087 template<class ContainerAllocator> struct IsMessage< ::art_msgs::CarDrive_<ContainerAllocator> > : public TrueType {};
00088 template<class ContainerAllocator> struct IsMessage< ::art_msgs::CarDrive_<ContainerAllocator> const> : public TrueType {};
00089 template<class ContainerAllocator>
00090 struct MD5Sum< ::art_msgs::CarDrive_<ContainerAllocator> > {
00091 static const char* value()
00092 {
00093 return "977b12f7daeec4c2a2276732baf95662";
00094 }
00095
00096 static const char* value(const ::art_msgs::CarDrive_<ContainerAllocator> &) { return value(); }
00097 static const uint64_t static_value1 = 0x977b12f7daeec4c2ULL;
00098 static const uint64_t static_value2 = 0xa2276732baf95662ULL;
00099 };
00100
00101 template<class ContainerAllocator>
00102 struct DataType< ::art_msgs::CarDrive_<ContainerAllocator> > {
00103 static const char* value()
00104 {
00105 return "art_msgs/CarDrive";
00106 }
00107
00108 static const char* value(const ::art_msgs::CarDrive_<ContainerAllocator> &) { return value(); }
00109 };
00110
00111 template<class ContainerAllocator>
00112 struct Definition< ::art_msgs::CarDrive_<ContainerAllocator> > {
00113 static const char* value()
00114 {
00115 return "# Driving command for a car-like vehicle using Ackermann steering.\n\
00116 # $Id: CarDrive.msg 1539 2011-05-09 04:09:20Z jack.oquin $\n\
00117 \n\
00118 # Drive at requested speed, acceleration and jerk (the 1st, 2nd and\n\
00119 # 3rd derivatives of position). All are non-negative scalars. \n\
00120 #\n\
00121 # Speed is defined as the scalar magnitude of the velocity\n\
00122 # vector. Direction (forwards or backwards) is determined by the gear.\n\
00123 #\n\
00124 # Zero acceleration means change speed as quickly as\n\
00125 # possible. Positive acceleration may include deceleration as needed\n\
00126 # to match the desired speed. It represents a desired rate and also a\n\
00127 # limit not to exceed.\n\
00128 #\n\
00129 # Zero jerk means change acceleration as quickly as possible. Positive\n\
00130 # jerk describes the desired rate of acceleration change in both\n\
00131 # directions (positive and negative).\n\
00132 #\n\
00133 float32 speed # magnitude of velocity vector (m/s)\n\
00134 float32 acceleration # desired acceleration (m/s^2)\n\
00135 float32 jerk # desired jerk (m/s^3)\n\
00136 \n\
00137 # Assumes Ackermann (front-wheel) steering. This angle is the average\n\
00138 # yaw of the two front wheels in the vehicle frame of reference\n\
00139 # (positive left), ignoring their slightly differing angles as if it\n\
00140 # were a tricycle. This is *not* the angle of the steering wheel\n\
00141 # inside the passenger compartment.\n\
00142 #\n\
00143 float32 steering_angle # steering angle (radians)\n\
00144 \n\
00145 Gear gear # requested gear (no change if Naught)\n\
00146 PilotBehavior behavior # requested pilot behavior\n\
00147 \n\
00148 ================================================================================\n\
00149 MSG: art_msgs/Gear\n\
00150 # ART vehicle transmission gear numbers\n\
00151 #\n\
00152 # Used by several different messages.\n\
00153 \n\
00154 # $Id: Gear.msg 1539 2011-05-09 04:09:20Z jack.oquin $\n\
00155 \n\
00156 # Gear numbers. \n\
00157 #\n\
00158 # Naught means: reset all Shifter relays; no change of CarDrive gear.\n\
00159 uint8 Naught = 0\n\
00160 uint8 Park = 1\n\
00161 uint8 Reverse = 2\n\
00162 uint8 Neutral = 3\n\
00163 uint8 Drive = 4\n\
00164 uint8 N_gears = 5\n\
00165 \n\
00166 uint8 value # requested or reported gear number\n\
00167 \n\
00168 ================================================================================\n\
00169 MSG: art_msgs/PilotBehavior\n\
00170 # ART autonomous vehicle pilot node behaviors.\n\
00171 #\n\
00172 # Normally, the pilot node does Run, continually sending commands to\n\
00173 # the servo device actuators and monitoring their state. With Pause,\n\
00174 # the pilot becomes passive, allowing a learning algorithm or human\n\
00175 # controller direct access to those devices. In the Off state,\n\
00176 # various devices are shut down: the transmission in Park, the brake\n\
00177 # released, the throttle at idle. The engine is not turned off, but\n\
00178 # it could be.\n\
00179 \n\
00180 # $Id: PilotBehavior.msg 1539 2011-05-09 04:09:20Z jack.oquin $\n\
00181 \n\
00182 # Behavior value\n\
00183 uint8 value\n\
00184 \n\
00185 # Behavior numbers:\n\
00186 uint8 Run = 0 # normal driving\n\
00187 uint8 Pause = 1 # stop issuing servo commands\n\
00188 uint8 Off = 2 # turn off devices\n\
00189 uint8 N_behaviors = 3\n\
00190 \n\
00191 ";
00192 }
00193
00194 static const char* value(const ::art_msgs::CarDrive_<ContainerAllocator> &) { return value(); }
00195 };
00196
00197 template<class ContainerAllocator> struct IsFixedSize< ::art_msgs::CarDrive_<ContainerAllocator> > : public TrueType {};
00198 }
00199 }
00200
00201 namespace ros
00202 {
00203 namespace serialization
00204 {
00205
00206 template<class ContainerAllocator> struct Serializer< ::art_msgs::CarDrive_<ContainerAllocator> >
00207 {
00208 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00209 {
00210 stream.next(m.speed);
00211 stream.next(m.acceleration);
00212 stream.next(m.jerk);
00213 stream.next(m.steering_angle);
00214 stream.next(m.gear);
00215 stream.next(m.behavior);
00216 }
00217
00218 ROS_DECLARE_ALLINONE_SERIALIZER;
00219 };
00220 }
00221 }
00222
00223 namespace ros
00224 {
00225 namespace message_operations
00226 {
00227
00228 template<class ContainerAllocator>
00229 struct Printer< ::art_msgs::CarDrive_<ContainerAllocator> >
00230 {
00231 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::art_msgs::CarDrive_<ContainerAllocator> & v)
00232 {
00233 s << indent << "speed: ";
00234 Printer<float>::stream(s, indent + " ", v.speed);
00235 s << indent << "acceleration: ";
00236 Printer<float>::stream(s, indent + " ", v.acceleration);
00237 s << indent << "jerk: ";
00238 Printer<float>::stream(s, indent + " ", v.jerk);
00239 s << indent << "steering_angle: ";
00240 Printer<float>::stream(s, indent + " ", v.steering_angle);
00241 s << indent << "gear: ";
00242 s << std::endl;
00243 Printer< ::art_msgs::Gear_<ContainerAllocator> >::stream(s, indent + " ", v.gear);
00244 s << indent << "behavior: ";
00245 s << std::endl;
00246 Printer< ::art_msgs::PilotBehavior_<ContainerAllocator> >::stream(s, indent + " ", v.behavior);
00247 }
00248 };
00249
00250
00251 }
00252 }
00253
00254 #endif // ART_MSGS_MESSAGE_CARDRIVE_H
00255