Go to the documentation of this file.00001
00002 #ifndef ART_MSGS_MESSAGE_ARTVEHICLE_H
00003 #define ART_MSGS_MESSAGE_ARTVEHICLE_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 art_msgs
00019 {
00020 template <class ContainerAllocator>
00021 struct ArtVehicle_ {
00022 typedef ArtVehicle_<ContainerAllocator> Type;
00023
00024 ArtVehicle_()
00025 {
00026 }
00027
00028 ArtVehicle_(const ContainerAllocator& _alloc)
00029 {
00030 }
00031
00032 static const std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > frame_id;
00033 static const float length;
00034 static const float width;
00035 static const float height;
00036 static const float halflength;
00037 static const float halfwidth;
00038 static const float halfheight;
00039 static const float wheelbase;
00040 static const float front_bumper_px;
00041 static const float rear_bumper_px;
00042 static const float front_left_wheel_px;
00043 static const float front_left_wheel_py;
00044 static const float front_right_wheel_px;
00045 static const float front_right_wheel_py;
00046 static const float rear_left_wheel_px;
00047 static const float rear_left_wheel_py;
00048 static const float rear_right_wheel_px;
00049 static const float rear_right_wheel_py;
00050 static const float geom_px;
00051 static const float geom_py;
00052 static const float geom_pa;
00053 static const float velodyne_px;
00054 static const float velodyne_py;
00055 static const float velodyne_pz;
00056 static const float velodyne_yaw;
00057 static const float velodyne_pitch;
00058 static const float velodyne_roll;
00059 static const float front_SICK_px;
00060 static const float front_SICK_py;
00061 static const float front_SICK_pz;
00062 static const float front_SICK_roll;
00063 static const float front_SICK_pitch;
00064 static const float front_SICK_yaw;
00065 static const float rear_SICK_px;
00066 static const float rear_SICK_py;
00067 static const float rear_SICK_pz;
00068 static const float rear_SICK_roll;
00069 static const float rear_SICK_pitch;
00070 static const float rear_SICK_yaw;
00071 static const float center_front_camera_px;
00072 static const float center_front_camera_py;
00073 static const float center_front_camera_pz;
00074 static const float center_front_camera_yaw;
00075 static const float center_front_camera_pitch;
00076 static const float center_front_camera_roll;
00077 static const float right_front_camera_px;
00078 static const float right_front_camera_py;
00079 static const float right_front_camera_pz;
00080 static const float right_front_camera_yaw;
00081 static const float right_front_camera_pitch;
00082 static const float right_front_camera_roll;
00083 static const float left_front_camera_px;
00084 static const float left_front_camera_py;
00085 static const float left_front_camera_pz;
00086 static const float left_front_camera_yaw;
00087 static const float left_front_camera_pitch;
00088 static const float left_front_camera_roll;
00089 static const float max_steer_degrees;
00090 static const float max_steer_radians;
00091 static const float turn_radius;
00092 static const float front_outer_wheel_turn_radius;
00093 static const float front_inner_wheel_turn_radius;
00094 static const float rear_outer_wheel_turn_radius;
00095 static const float rear_inner_wheel_turn_radius;
00096
00097 typedef boost::shared_ptr< ::art_msgs::ArtVehicle_<ContainerAllocator> > Ptr;
00098 typedef boost::shared_ptr< ::art_msgs::ArtVehicle_<ContainerAllocator> const> ConstPtr;
00099 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00100 };
00101 typedef ::art_msgs::ArtVehicle_<std::allocator<void> > ArtVehicle;
00102
00103 typedef boost::shared_ptr< ::art_msgs::ArtVehicle> ArtVehiclePtr;
00104 typedef boost::shared_ptr< ::art_msgs::ArtVehicle const> ArtVehicleConstPtr;
00105
00106 template<typename ContainerAllocator> const std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > ArtVehicle_<ContainerAllocator>::frame_id = "\"vehicle\"";
00107 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::length = 4.8;
00108 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::width = 2.12;
00109 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::height = 1.5;
00110 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::halflength = 2.4;
00111 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::halfwidth = 1.06;
00112 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::halfheight = 0.75;
00113 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::wheelbase = 2.33918;
00114 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_bumper_px = 3.5;
00115 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_bumper_px = -1.3;
00116 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_left_wheel_px = 2.33918;
00117 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_left_wheel_py = 2.4;
00118 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_right_wheel_px = 2.33918;
00119 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_right_wheel_py = -1.06;
00120 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_left_wheel_px = 0.0;
00121 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_left_wheel_py = 1.06;
00122 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_right_wheel_px = 0.0;
00123 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_right_wheel_py = -1.06;
00124 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::geom_px = 1.1;
00125 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::geom_py = 0.0;
00126 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::geom_pa = 0.0;
00127 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::velodyne_px = 0.393;
00128 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::velodyne_py = 0.278;
00129 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::velodyne_pz = 2.4;
00130 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::velodyne_yaw = -0.02155;
00131 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::velodyne_pitch = 0.0163537350912;
00132 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::velodyne_roll = 0.0062133721371;
00133 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_SICK_px = 3.178;
00134 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_SICK_py = 0.0;
00135 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_SICK_pz = 0.7;
00136 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_SICK_roll = 0.0;
00137 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_SICK_pitch = 0.0;
00138 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_SICK_yaw = 0.027;
00139 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_SICK_px = -1.14;
00140 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_SICK_py = 0.0;
00141 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_SICK_pz = 0.7;
00142 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_SICK_roll = 0.0;
00143 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_SICK_pitch = 0.0;
00144 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_SICK_yaw = 3.14159265359;
00145 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::center_front_camera_px = 0.548;
00146 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::center_front_camera_py = 0.278;
00147 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::center_front_camera_pz = 2.184;
00148 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::center_front_camera_yaw = -0.052;
00149 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::center_front_camera_pitch = 0.025;
00150 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::center_front_camera_roll = 0.0;
00151 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::right_front_camera_px = 0.471;
00152 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::right_front_camera_py = 0.144;
00153 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::right_front_camera_pz = 2.184;
00154 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::right_front_camera_yaw = -1.035;
00155 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::right_front_camera_pitch = 0.022;
00156 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::right_front_camera_roll = 0.0;
00157 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::left_front_camera_px = 0.471;
00158 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::left_front_camera_py = 0.412;
00159 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::left_front_camera_pz = 2.184;
00160 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::left_front_camera_yaw = 0.97;
00161 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::left_front_camera_pitch = -0.017;
00162 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::left_front_camera_roll = 0.0;
00163 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::max_steer_degrees = 29.0;
00164 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::max_steer_radians = 0.5061455;
00165 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::turn_radius = 4.21999225977;
00166 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_outer_wheel_turn_radius = 5.7749529293;
00167 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::front_inner_wheel_turn_radius = 3.93157909169;
00168 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_outer_wheel_turn_radius = 5.27999225977;
00169 template<typename ContainerAllocator> const float ArtVehicle_<ContainerAllocator>::rear_inner_wheel_turn_radius = 3.15999225977;
00170
00171 template<typename ContainerAllocator>
00172 std::ostream& operator<<(std::ostream& s, const ::art_msgs::ArtVehicle_<ContainerAllocator> & v)
00173 {
00174 ros::message_operations::Printer< ::art_msgs::ArtVehicle_<ContainerAllocator> >::stream(s, "", v);
00175 return s;}
00176
00177 }
00178
00179 namespace ros
00180 {
00181 namespace message_traits
00182 {
00183 template<class ContainerAllocator> struct IsMessage< ::art_msgs::ArtVehicle_<ContainerAllocator> > : public TrueType {};
00184 template<class ContainerAllocator> struct IsMessage< ::art_msgs::ArtVehicle_<ContainerAllocator> const> : public TrueType {};
00185 template<class ContainerAllocator>
00186 struct MD5Sum< ::art_msgs::ArtVehicle_<ContainerAllocator> > {
00187 static const char* value()
00188 {
00189 return "b2e608cff82a26a9766518ef8fbfabf9";
00190 }
00191
00192 static const char* value(const ::art_msgs::ArtVehicle_<ContainerAllocator> &) { return value(); }
00193 static const uint64_t static_value1 = 0xb2e608cff82a26a9ULL;
00194 static const uint64_t static_value2 = 0x766518ef8fbfabf9ULL;
00195 };
00196
00197 template<class ContainerAllocator>
00198 struct DataType< ::art_msgs::ArtVehicle_<ContainerAllocator> > {
00199 static const char* value()
00200 {
00201 return "art_msgs/ArtVehicle";
00202 }
00203
00204 static const char* value(const ::art_msgs::ArtVehicle_<ContainerAllocator> &) { return value(); }
00205 };
00206
00207 template<class ContainerAllocator>
00208 struct Definition< ::art_msgs::ArtVehicle_<ContainerAllocator> > {
00209 static const char* value()
00210 {
00211 return "# ART vehicle dimensions.\n\
00212 # $Id: ArtVehicle.msg 1832 2011-10-31 22:16:19Z austinrobot $\n\
00213 \n\
00214 # This class encapsulates constants for the dimensions of the ART\n\
00215 # autonomous vehicle. All units are meters or radians, except where\n\
00216 # noted. This is not a published message, it defines multi-language\n\
00217 # constants.\n\
00218 \n\
00219 # ROS frame ID\n\
00220 string frame_id = \"vehicle\"\n\
00221 \n\
00222 float32 length = 4.8 # overall length\n\
00223 float32 width = 2.12 # overall width\n\
00224 float32 height = 1.5 # overall height (TBD)\n\
00225 float32 halflength = 2.4 # length / 2\n\
00226 float32 halfwidth = 1.06 # width / 2\n\
00227 float32 halfheight = 0.75 # height / 2\n\
00228 float32 wheelbase = 2.33918 # wheelbase\n\
00229 \n\
00230 # egocentric coordinates relative to vehicle origin at center of\n\
00231 # rear axle\n\
00232 float32 front_bumper_px = 3.5 # (approximately)\n\
00233 float32 rear_bumper_px = -1.3 # front_bumper_px - length\n\
00234 float32 front_left_wheel_px = 2.33918 # wheelbase\n\
00235 float32 front_left_wheel_py = 2.4 # halfwidth\n\
00236 float32 front_right_wheel_px = 2.33918 # wheelbase\n\
00237 float32 front_right_wheel_py = -1.06 #-halfwidth\n\
00238 float32 rear_left_wheel_px = 0.0\n\
00239 float32 rear_left_wheel_py = 1.06 # halfwidth\n\
00240 float32 rear_right_wheel_px = 0.0\n\
00241 float32 rear_right_wheel_py = -1.06 #-halfwidth\n\
00242 \n\
00243 # Player geometry, egocentric pose of robot base (the px really\n\
00244 # does need to be positive for some reason)\n\
00245 float32 geom_px = 1.1 # front_bumper_px - halflength\n\
00246 float32 geom_py = 0.0\n\
00247 float32 geom_pa = 0.0\n\
00248 \n\
00249 float32 velodyne_px = 0.393 # (approximately)\n\
00250 float32 velodyne_py = 0.278 # (approximately)\n\
00251 float32 velodyne_pz = 2.4 # (calibrated)\n\
00252 #float32 velodyne_yaw=-0.0343 # (before remounting)\n\
00253 float32 velodyne_yaw=-0.02155 # (approximately)\n\
00254 float32 velodyne_pitch=0.016353735091186868 # (calculated)\n\
00255 float32 velodyne_roll=0.0062133721370998124 # (calculated)\n\
00256 \n\
00257 float32 front_SICK_px = 3.178\n\
00258 float32 front_SICK_py= 0.0 # (approximately)\n\
00259 float32 front_SICK_pz = 0.7\n\
00260 float32 front_SICK_roll = 0.0 # (approximately)\n\
00261 float32 front_SICK_pitch = 0.0 # (approximately)\n\
00262 float32 front_SICK_yaw = 0.027 # (approximately)\n\
00263 \n\
00264 float32 rear_SICK_px = -1.140\n\
00265 float32 rear_SICK_py = 0.0 # (approximately)\n\
00266 float32 rear_SICK_pz = 0.7\n\
00267 float32 rear_SICK_roll = 0.0 # (approximately)\n\
00268 float32 rear_SICK_pitch = 0.0 # (approximately)\n\
00269 float32 rear_SICK_yaw = 3.1415926535897931160 # (approximately PI)\n\
00270 \n\
00271 float32 center_front_camera_px = 0.548 # velodyne_px + 0.155 (approx)\n\
00272 float32 center_front_camera_py = 0.278 # velodyne_py (approx)\n\
00273 float32 center_front_camera_pz = 2.184 # velodyne_pz-0.216 (approx)\n\
00274 float32 center_front_camera_yaw = -0.052 # (measured)\n\
00275 float32 center_front_camera_pitch = 0.025 # (measured)\n\
00276 float32 center_front_camera_roll = 0.0 # (assumed)\n\
00277 \n\
00278 float32 right_front_camera_px = 0.471 # velodyne_px + 0.078 (= 0.155 * cos 60 deg) (approx)\n\
00279 float32 right_front_camera_py = 0.144 # velodyne_py - 0.1342 (= 0.155 + sin 60 deg) (approx)\n\
00280 float32 right_front_camera_pz = 2.184 # velodyne_pz-0.216 (approx)\n\
00281 #float32 right_front_camera_yaw = -0.4974 # (approx -28.5 deg)\n\
00282 float32 right_front_camera_yaw = -1.035 # (measured)\n\
00283 float32 right_front_camera_pitch = 0.022 # (measured)\n\
00284 float32 right_front_camera_roll = 0.0 # (assumed)\n\
00285 \n\
00286 float32 left_front_camera_px = 0.471 # velodyne_px + 0.078 (= 0.155 * cos 60 deg) (approx)\n\
00287 float32 left_front_camera_py = 0.412 # velodyne_py + 0.1342 (= 0.155 * sin 60 deg) (approx)\n\
00288 float32 left_front_camera_pz = 2.184 # velodyne_pz-0.216 (approx)\n\
00289 #float32 left_front_camera_yaw = 0.4974 # (approx +28.5 deg)\n\
00290 float32 left_front_camera_yaw = 0.97 # (measured)\n\
00291 float32 left_front_camera_pitch = -0.017 # (measured)\n\
00292 float32 left_front_camera_roll = 0.0 # (assumed)\n\
00293 \n\
00294 # Compute vehicle turning radius. This is the distance from the\n\
00295 # center of curvature to the vehicle origin in the middle of the\n\
00296 # rear axle. The <art/steering.h> comments describe the steering\n\
00297 # geometry model. Since max_steer_degrees is considerably less\n\
00298 # than 90 degrees, there is no problem taking its tangent.\n\
00299 \n\
00300 float32 max_steer_degrees = 29.0 # maximum steering angle (degrees)\n\
00301 float32 max_steer_radians = 0.5061455 # maximum steering angle (radians)\n\
00302 \n\
00303 # Due to limitations of the ROS message definition format, these\n\
00304 # values needed to be calculated by hand...\n\
00305 \n\
00306 # ArtVehicle.wheelbase / math.tan(ArtVehicle.max_steer_radians)\n\
00307 float32 turn_radius = 4.2199922597674142\n\
00308 \n\
00309 # math.sqrt(math.pow(ArtVehicle.wheelbase,2)\n\
00310 # + math.pow(ArtVehicle.turn_radius + ArtVehicle.halfwidth,2))\n\
00311 float32 front_outer_wheel_turn_radius = 5.774952929297676\n\
00312 \n\
00313 # math.sqrt(math.pow(ArtVehicle.wheelbase,2)\n\
00314 # + math.pow(ArtVehicle.turn_radius - ArtVehicle.halfwidth,2))\n\
00315 float32 front_inner_wheel_turn_radius = 3.9315790916869484\n\
00316 \n\
00317 # ArtVehicle.turn_radius + ArtVehicle.halfwidth\n\
00318 float32 rear_outer_wheel_turn_radius = 5.2799922597674147\n\
00319 \n\
00320 # ArtVehicle.turn_radius - ArtVehicle.halfwidth\n\
00321 float32 rear_inner_wheel_turn_radius = 3.1599922597674142\n\
00322 \n\
00323 # float32 front_outer_bumper_turn_radius = sqrtf(powf(front_bumper_px,2)+powf(turn_radius+halfwidth,2))\n\
00324 # \n\
00325 # float32 front_inner_bumper_turn_radius = sqrtf(powf(front_bumper_px,2)+ powf(turn_radius-halfwidth,2))\n\
00326 #\n\
00327 # float32 rear_outer_bumper_turn_radius = sqrtf(powf(rear_bumper_px,2)+ powf(turn_radius+halfwidth,2))\n\
00328 #\n\
00329 # float32 rear_inner_bumper_turn_radius = sqrtf(powf(rear_bumper_px,2)+ powf(turn_radius-halfwidth,2))\n\
00330 \n\
00331 ";
00332 }
00333
00334 static const char* value(const ::art_msgs::ArtVehicle_<ContainerAllocator> &) { return value(); }
00335 };
00336
00337 template<class ContainerAllocator> struct IsFixedSize< ::art_msgs::ArtVehicle_<ContainerAllocator> > : public TrueType {};
00338 }
00339 }
00340
00341 namespace ros
00342 {
00343 namespace serialization
00344 {
00345
00346 template<class ContainerAllocator> struct Serializer< ::art_msgs::ArtVehicle_<ContainerAllocator> >
00347 {
00348 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00349 {
00350 }
00351
00352 ROS_DECLARE_ALLINONE_SERIALIZER;
00353 };
00354 }
00355 }
00356
00357 namespace ros
00358 {
00359 namespace message_operations
00360 {
00361
00362 template<class ContainerAllocator>
00363 struct Printer< ::art_msgs::ArtVehicle_<ContainerAllocator> >
00364 {
00365 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::art_msgs::ArtVehicle_<ContainerAllocator> & v)
00366 {
00367 }
00368 };
00369
00370
00371 }
00372 }
00373
00374 #endif // ART_MSGS_MESSAGE_ARTVEHICLE_H
00375