00001
00002 #ifndef ART_MSGS_MESSAGE_NAVIGATORSTATE_H
00003 #define ART_MSGS_MESSAGE_NAVIGATORSTATE_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 "art_msgs/EstopState.h"
00019 #include "art_msgs/RoadState.h"
00020 #include "art_msgs/MapID.h"
00021 #include "art_msgs/MapID.h"
00022 #include "art_msgs/Order.h"
00023
00024 namespace art_msgs
00025 {
00026 template <class ContainerAllocator>
00027 struct NavigatorState_ {
00028 typedef NavigatorState_<ContainerAllocator> Type;
00029
00030 NavigatorState_()
00031 : header()
00032 , estop()
00033 , road()
00034 , last_waypt()
00035 , replan_waypt()
00036 , cur_poly(0)
00037 , alarm(false)
00038 , flasher(false)
00039 , lane_blocked(false)
00040 , road_blocked(false)
00041 , reverse(false)
00042 , signal_left(false)
00043 , signal_right(false)
00044 , stopped(false)
00045 , have_zones(false)
00046 , last_order()
00047 {
00048 }
00049
00050 NavigatorState_(const ContainerAllocator& _alloc)
00051 : header(_alloc)
00052 , estop(_alloc)
00053 , road(_alloc)
00054 , last_waypt(_alloc)
00055 , replan_waypt(_alloc)
00056 , cur_poly(0)
00057 , alarm(false)
00058 , flasher(false)
00059 , lane_blocked(false)
00060 , road_blocked(false)
00061 , reverse(false)
00062 , signal_left(false)
00063 , signal_right(false)
00064 , stopped(false)
00065 , have_zones(false)
00066 , last_order(_alloc)
00067 {
00068 }
00069
00070 typedef ::std_msgs::Header_<ContainerAllocator> _header_type;
00071 ::std_msgs::Header_<ContainerAllocator> header;
00072
00073 typedef ::art_msgs::EstopState_<ContainerAllocator> _estop_type;
00074 ::art_msgs::EstopState_<ContainerAllocator> estop;
00075
00076 typedef ::art_msgs::RoadState_<ContainerAllocator> _road_type;
00077 ::art_msgs::RoadState_<ContainerAllocator> road;
00078
00079 typedef ::art_msgs::MapID_<ContainerAllocator> _last_waypt_type;
00080 ::art_msgs::MapID_<ContainerAllocator> last_waypt;
00081
00082 typedef ::art_msgs::MapID_<ContainerAllocator> _replan_waypt_type;
00083 ::art_msgs::MapID_<ContainerAllocator> replan_waypt;
00084
00085 typedef int32_t _cur_poly_type;
00086 int32_t cur_poly;
00087
00088 typedef uint8_t _alarm_type;
00089 uint8_t alarm;
00090
00091 typedef uint8_t _flasher_type;
00092 uint8_t flasher;
00093
00094 typedef uint8_t _lane_blocked_type;
00095 uint8_t lane_blocked;
00096
00097 typedef uint8_t _road_blocked_type;
00098 uint8_t road_blocked;
00099
00100 typedef uint8_t _reverse_type;
00101 uint8_t reverse;
00102
00103 typedef uint8_t _signal_left_type;
00104 uint8_t signal_left;
00105
00106 typedef uint8_t _signal_right_type;
00107 uint8_t signal_right;
00108
00109 typedef uint8_t _stopped_type;
00110 uint8_t stopped;
00111
00112 typedef uint8_t _have_zones_type;
00113 uint8_t have_zones;
00114
00115 typedef ::art_msgs::Order_<ContainerAllocator> _last_order_type;
00116 ::art_msgs::Order_<ContainerAllocator> last_order;
00117
00118
00119 typedef boost::shared_ptr< ::art_msgs::NavigatorState_<ContainerAllocator> > Ptr;
00120 typedef boost::shared_ptr< ::art_msgs::NavigatorState_<ContainerAllocator> const> ConstPtr;
00121 boost::shared_ptr<std::map<std::string, std::string> > __connection_header;
00122 };
00123 typedef ::art_msgs::NavigatorState_<std::allocator<void> > NavigatorState;
00124
00125 typedef boost::shared_ptr< ::art_msgs::NavigatorState> NavigatorStatePtr;
00126 typedef boost::shared_ptr< ::art_msgs::NavigatorState const> NavigatorStateConstPtr;
00127
00128
00129 template<typename ContainerAllocator>
00130 std::ostream& operator<<(std::ostream& s, const ::art_msgs::NavigatorState_<ContainerAllocator> & v)
00131 {
00132 ros::message_operations::Printer< ::art_msgs::NavigatorState_<ContainerAllocator> >::stream(s, "", v);
00133 return s;}
00134
00135 }
00136
00137 namespace ros
00138 {
00139 namespace message_traits
00140 {
00141 template<class ContainerAllocator> struct IsMessage< ::art_msgs::NavigatorState_<ContainerAllocator> > : public TrueType {};
00142 template<class ContainerAllocator> struct IsMessage< ::art_msgs::NavigatorState_<ContainerAllocator> const> : public TrueType {};
00143 template<class ContainerAllocator>
00144 struct MD5Sum< ::art_msgs::NavigatorState_<ContainerAllocator> > {
00145 static const char* value()
00146 {
00147 return "c40e5f1fdc1b82b80af736960035d5c8";
00148 }
00149
00150 static const char* value(const ::art_msgs::NavigatorState_<ContainerAllocator> &) { return value(); }
00151 static const uint64_t static_value1 = 0xc40e5f1fdc1b82b8ULL;
00152 static const uint64_t static_value2 = 0x0af736960035d5c8ULL;
00153 };
00154
00155 template<class ContainerAllocator>
00156 struct DataType< ::art_msgs::NavigatorState_<ContainerAllocator> > {
00157 static const char* value()
00158 {
00159 return "art_msgs/NavigatorState";
00160 }
00161
00162 static const char* value(const ::art_msgs::NavigatorState_<ContainerAllocator> &) { return value(); }
00163 };
00164
00165 template<class ContainerAllocator>
00166 struct Definition< ::art_msgs::NavigatorState_<ContainerAllocator> > {
00167 static const char* value()
00168 {
00169 return "# navigator state message\n\
00170 # $Id: NavigatorState.msg 615 2010-09-24 16:07:50Z jack.oquin $\n\
00171 \n\
00172 Header header\n\
00173 \n\
00174 EstopState estop\n\
00175 RoadState road\n\
00176 \n\
00177 art_msgs/MapID last_waypt # last way-point reached\n\
00178 art_msgs/MapID replan_waypt # next way-point for replan\n\
00179 \n\
00180 int32 cur_poly # current polygon, -1 if none\n\
00181 \n\
00182 # status flags\n\
00183 bool alarm\n\
00184 bool flasher\n\
00185 bool lane_blocked\n\
00186 bool road_blocked\n\
00187 bool reverse\n\
00188 bool signal_left\n\
00189 bool signal_right\n\
00190 bool stopped\n\
00191 bool have_zones\n\
00192 \n\
00193 Order last_order # last commander order received\n\
00194 \n\
00195 ================================================================================\n\
00196 MSG: std_msgs/Header\n\
00197 # Standard metadata for higher-level stamped data types.\n\
00198 # This is generally used to communicate timestamped data \n\
00199 # in a particular coordinate frame.\n\
00200 # \n\
00201 # sequence ID: consecutively increasing ID \n\
00202 uint32 seq\n\
00203 #Two-integer timestamp that is expressed as:\n\
00204 # * stamp.secs: seconds (stamp_secs) since epoch\n\
00205 # * stamp.nsecs: nanoseconds since stamp_secs\n\
00206 # time-handling sugar is provided by the client library\n\
00207 time stamp\n\
00208 #Frame this data is associated with\n\
00209 # 0: no frame\n\
00210 # 1: global frame\n\
00211 string frame_id\n\
00212 \n\
00213 ================================================================================\n\
00214 MSG: art_msgs/EstopState\n\
00215 # Navigator E-stop state values\n\
00216 # $Id: EstopState.msg 996 2011-02-27 16:07:34Z jack.oquin $\n\
00217 \n\
00218 uint16 Pause = 0 # E-stop pause (initial state)\n\
00219 uint16 Run = 1 # E-stop run enabled\n\
00220 uint16 Done = 2 # mission finished (disabled)\n\
00221 uint16 Suspend = 3 # suspend autonomous operation\n\
00222 uint16 N_states = 4\n\
00223 \n\
00224 uint16 state\n\
00225 \n\
00226 ================================================================================\n\
00227 MSG: art_msgs/RoadState\n\
00228 # Navigator Road state values\n\
00229 # $Id: RoadState.msg 615 2010-09-24 16:07:50Z jack.oquin $\n\
00230 \n\
00231 uint16 Init = 0\n\
00232 uint16 Block = 1\n\
00233 uint16 Evade = 2\n\
00234 uint16 Follow = 3\n\
00235 uint16 Pass = 4\n\
00236 uint16 Uturn = 5\n\
00237 uint16 WaitCross = 6\n\
00238 uint16 WaitLane = 7\n\
00239 uint16 WaitPass = 8\n\
00240 uint16 WaitStop = 9\n\
00241 uint16 Zone = 10\n\
00242 uint16 N_states = 11\n\
00243 \n\
00244 uint16 state\n\
00245 \n\
00246 ================================================================================\n\
00247 MSG: art_msgs/MapID\n\
00248 # Road map identifier for segments, lanes and way-points.\n\
00249 # $Id: MapID.msg 614 2010-09-24 15:08:46Z jack.oquin $\n\
00250 \n\
00251 uint16 NULL_ID = 65535\n\
00252 \n\
00253 uint16 seg # segment ID\n\
00254 uint16 lane # lane ID\n\
00255 uint16 pt # way-point ID\n\
00256 \n\
00257 ================================================================================\n\
00258 MSG: art_msgs/Order\n\
00259 # commander order for the navigator\n\
00260 # $Id: Order.msg 615 2010-09-24 16:07:50Z jack.oquin $\n\
00261 \n\
00262 uint32 N_WAYPTS = 5 # number of way-points in order\n\
00263 uint32 N_CHKPTS = 2 # number of checkpoints in order\n\
00264 \n\
00265 Behavior behavior # requested behavior\n\
00266 art_msgs/WayPoint[5] waypt # way-point array\n\
00267 art_msgs/WayPoint[2] chkpt # next two goal checkpoints\n\
00268 float32 min_speed # in meters/sec\n\
00269 float32 max_speed\n\
00270 int32 replan_num\n\
00271 int32 next_uturn # Uturn between [1] and [2]\n\
00272 \n\
00273 ================================================================================\n\
00274 MSG: art_msgs/Behavior\n\
00275 # ART Navigator behaviors (lower numbers have higher priority)\n\
00276 # $Id: Behavior.msg 996 2011-02-27 16:07:34Z jack.oquin $\n\
00277 \n\
00278 # enumerated behavior values\n\
00279 int16 Abort = 0\n\
00280 int16 Quit = 1\n\
00281 int16 Pause = 2\n\
00282 int16 Run = 3\n\
00283 int16 Suspend = 4\n\
00284 int16 Initialize = 5\n\
00285 int16 Go = 6\n\
00286 int16 NONE = 7\n\
00287 int16 N_behaviors = 8\n\
00288 \n\
00289 int16 value\n\
00290 \n\
00291 ================================================================================\n\
00292 MSG: art_msgs/WayPoint\n\
00293 # Way-point attributes\n\
00294 # $Id: WayPoint.msg 614 2010-09-24 15:08:46Z jack.oquin $\n\
00295 \n\
00296 float64 latitude # latitude in degrees\n\
00297 float64 longitude # longitude in degrees\n\
00298 geometry_msgs/Point32 mapxy # MapXY position\n\
00299 MapID id # way-point ID\n\
00300 uint16 index # parser index of waypoint\n\
00301 \n\
00302 # way-point flags\n\
00303 bool is_entry # lane or zone exit point\n\
00304 bool is_exit # lane or zone entry point\n\
00305 bool is_goal # this is a goal checkpoint\n\
00306 bool is_lane_change # change lanes after here\n\
00307 bool is_spot # parking spot\n\
00308 bool is_stop # stop line here\n\
00309 bool is_perimeter # zone perimeter point\n\
00310 int32 checkpoint_id # checkpoint ID or zero\n\
00311 float32 lane_width\n\
00312 \n\
00313 ================================================================================\n\
00314 MSG: geometry_msgs/Point32\n\
00315 # This contains the position of a point in free space(with 32 bits of precision).\n\
00316 # It is recommeded to use Point wherever possible instead of Point32. \n\
00317 # \n\
00318 # This recommendation is to promote interoperability. \n\
00319 #\n\
00320 # This message is designed to take up less space when sending\n\
00321 # lots of points at once, as in the case of a PointCloud. \n\
00322 \n\
00323 float32 x\n\
00324 float32 y\n\
00325 float32 z\n\
00326 ";
00327 }
00328
00329 static const char* value(const ::art_msgs::NavigatorState_<ContainerAllocator> &) { return value(); }
00330 };
00331
00332 template<class ContainerAllocator> struct HasHeader< ::art_msgs::NavigatorState_<ContainerAllocator> > : public TrueType {};
00333 template<class ContainerAllocator> struct HasHeader< const ::art_msgs::NavigatorState_<ContainerAllocator> > : public TrueType {};
00334 }
00335 }
00336
00337 namespace ros
00338 {
00339 namespace serialization
00340 {
00341
00342 template<class ContainerAllocator> struct Serializer< ::art_msgs::NavigatorState_<ContainerAllocator> >
00343 {
00344 template<typename Stream, typename T> inline static void allInOne(Stream& stream, T m)
00345 {
00346 stream.next(m.header);
00347 stream.next(m.estop);
00348 stream.next(m.road);
00349 stream.next(m.last_waypt);
00350 stream.next(m.replan_waypt);
00351 stream.next(m.cur_poly);
00352 stream.next(m.alarm);
00353 stream.next(m.flasher);
00354 stream.next(m.lane_blocked);
00355 stream.next(m.road_blocked);
00356 stream.next(m.reverse);
00357 stream.next(m.signal_left);
00358 stream.next(m.signal_right);
00359 stream.next(m.stopped);
00360 stream.next(m.have_zones);
00361 stream.next(m.last_order);
00362 }
00363
00364 ROS_DECLARE_ALLINONE_SERIALIZER;
00365 };
00366 }
00367 }
00368
00369 namespace ros
00370 {
00371 namespace message_operations
00372 {
00373
00374 template<class ContainerAllocator>
00375 struct Printer< ::art_msgs::NavigatorState_<ContainerAllocator> >
00376 {
00377 template<typename Stream> static void stream(Stream& s, const std::string& indent, const ::art_msgs::NavigatorState_<ContainerAllocator> & v)
00378 {
00379 s << indent << "header: ";
00380 s << std::endl;
00381 Printer< ::std_msgs::Header_<ContainerAllocator> >::stream(s, indent + " ", v.header);
00382 s << indent << "estop: ";
00383 s << std::endl;
00384 Printer< ::art_msgs::EstopState_<ContainerAllocator> >::stream(s, indent + " ", v.estop);
00385 s << indent << "road: ";
00386 s << std::endl;
00387 Printer< ::art_msgs::RoadState_<ContainerAllocator> >::stream(s, indent + " ", v.road);
00388 s << indent << "last_waypt: ";
00389 s << std::endl;
00390 Printer< ::art_msgs::MapID_<ContainerAllocator> >::stream(s, indent + " ", v.last_waypt);
00391 s << indent << "replan_waypt: ";
00392 s << std::endl;
00393 Printer< ::art_msgs::MapID_<ContainerAllocator> >::stream(s, indent + " ", v.replan_waypt);
00394 s << indent << "cur_poly: ";
00395 Printer<int32_t>::stream(s, indent + " ", v.cur_poly);
00396 s << indent << "alarm: ";
00397 Printer<uint8_t>::stream(s, indent + " ", v.alarm);
00398 s << indent << "flasher: ";
00399 Printer<uint8_t>::stream(s, indent + " ", v.flasher);
00400 s << indent << "lane_blocked: ";
00401 Printer<uint8_t>::stream(s, indent + " ", v.lane_blocked);
00402 s << indent << "road_blocked: ";
00403 Printer<uint8_t>::stream(s, indent + " ", v.road_blocked);
00404 s << indent << "reverse: ";
00405 Printer<uint8_t>::stream(s, indent + " ", v.reverse);
00406 s << indent << "signal_left: ";
00407 Printer<uint8_t>::stream(s, indent + " ", v.signal_left);
00408 s << indent << "signal_right: ";
00409 Printer<uint8_t>::stream(s, indent + " ", v.signal_right);
00410 s << indent << "stopped: ";
00411 Printer<uint8_t>::stream(s, indent + " ", v.stopped);
00412 s << indent << "have_zones: ";
00413 Printer<uint8_t>::stream(s, indent + " ", v.have_zones);
00414 s << indent << "last_order: ";
00415 s << std::endl;
00416 Printer< ::art_msgs::Order_<ContainerAllocator> >::stream(s, indent + " ", v.last_order);
00417 }
00418 };
00419
00420
00421 }
00422 }
00423
00424 #endif // ART_MSGS_MESSAGE_NAVIGATORSTATE_H
00425