00001 /* -*- mode: C++ -*- 00002 * 00003 * Navigator follow lane controller 00004 * 00005 * Copyright (C) 2007, 2010, Austin Robot Technology 00006 * License: Modified BSD Software License Agreement 00007 * 00008 * $Id: follow_lane.h 872 2010-11-28 13:31:07Z jack.oquin $ 00009 */ 00010 00011 #ifndef __FOLLOW_LANE_HH__ 00012 #define __FOLLOW_LANE_HH__ 00013 00014 //class Avoid; 00015 class FollowSafely; 00016 class SlowForCurves; 00017 class StopArea; 00018 class StopLine; 00019 00020 class FollowLane: public Controller 00021 { 00022 public: 00023 00024 FollowLane(Navigator *navptr, int _verbose); 00025 ~FollowLane(); 00026 result_t control(pilot_command_t &pcmd); 00027 void reset(void); 00028 00029 private: 00030 00031 // way-point types 00032 typedef enum 00033 { 00034 Lane, 00035 LaneChange, 00036 Merge, 00037 Stop, 00038 Uturn, 00039 Zone, 00040 ZoneExit, 00041 } way_type_t; 00042 00043 //Avoid *avoid; 00044 FollowSafely *follow_safely; 00045 SlowForCurves *slow_for_curves; 00046 StopArea *stop_area; 00047 StopLine *stop_line; 00048 00049 way_type_t approaching_waypoint_type(WayPointNode &stop_point); 00050 void reset_me(void); 00051 }; 00052 00053 #endif // __FOLLOW_LANE_HH__