evade.h
Go to the documentation of this file.
00001 /* -*- mode: C++ -*-
00002  *
00003  *  Finite state machine interface
00004  *
00005  *  Copyright (C) 2007, 2010, Austin Robot Technology
00006  *
00007  *  License: Modified BSD Software License Agreement
00008  *
00009  *  $Id: evade.h 519 2010-09-01 04:39:33Z jack.oquin $
00010  */
00011 
00012 #ifndef __EVADE_HH__
00013 #define __EVADE_HH__
00014 
00015 class Halt;
00016 class LaneEdge;
00017 class Safety;
00018 class NavTimer;
00019 
00020 class Evade: public Controller
00021 {
00022 public:
00023 
00024   Evade(Navigator *navptr, int _verbose);
00025   ~Evade();
00026   void configure();
00027   result_t control(pilot_command_t &pcmd);
00028   void reset(void);
00029 
00030 private:
00031 
00032   // .cfg variables
00033   float evade_delay;
00034   float evade_offset_ratio;
00035   float evasion_speed;
00036 
00037   // simple state machine
00038   typedef enum
00039     {
00040       Init,
00041       Leave,
00042       Wait,
00043       Return,
00044     } state_t;
00045 
00046   state_t state;                        // current FSM state
00047 
00048   NavTimer *evade_timer;
00049 
00050   // subordinate controllers
00051   Halt *halt;
00052   LaneEdge *lane_edge;
00053   Safety *safety;
00054 
00055   Controller::result_t leave_lane_right(pilot_command_t &pcmd);
00056   void reset_me(void);
00057   void set_state(state_t newstate);
00058 };
00059 
00060 #endif // __EVADE_HH__


art_nav
Author(s): Austin Robot Technology, Jack O'Quin
autogenerated on Fri Jan 3 2014 11:08:43