PreFrontalCortex.H
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef __PREFRONTAL_CORTEX_H__
00038 #define __PREFRONTAL_CORTEX_H__
00039
00040 #include "BeoSub/BeeBrain/PreMotorComplex.H"
00041 #include "BeoSub/BeeBrain/ForwardVision.H"
00042 #include "BeoSub/BeeBrain/SonarListen.H"
00043 #include "BeoSub/BeeBrain/OceanObject.H"
00044 #include "BeoSub/BeeBrain/AgentManagerA.H"
00045 #include "BeoSub/BeeBrain/ComplexMovement.H"
00046
00047 #include "rutz/shared_ptr.h"
00048 #include "Util/Timer.H"
00049
00050 class AgentManagerA;
00051 class ForwardVisionAgent;
00052
00053 class PreFrontalCortexAgent : public Agent
00054 {
00055
00056 public:
00057
00058
00059 PreFrontalCortexAgent(std::string name = "preFrontalCortexAgent");
00060
00061
00062 PreFrontalCortexAgent
00063 (std::string name, rutz::shared_ptr<AgentManagerA> ama);
00064 ~PreFrontalCortexAgent();
00065
00066
00067
00068 void msgOceanObjectUpdate();
00069 void msgMovementComplete();
00070
00071 void start();
00072
00073
00074 bool pickAndExecuteAnAction();
00075
00076
00077
00078
00079
00080
00081
00082 inline void setPreMotorComplex
00083 (rutz::shared_ptr<PreMotorComplex> pmc);
00084
00085 inline void setForwardVisionAgent
00086 (rutz::shared_ptr<ForwardVisionAgent> fv);
00087
00088 private:
00089
00090 rutz::shared_ptr<ForwardVisionAgent> itsForwardVisionAgent;
00091 rutz::shared_ptr<PreMotorComplex> itsPreMotorComplex;
00092
00093 rutz::shared_ptr<AgentManagerA> itsAgentManager;
00094
00095
00096 rutz::shared_ptr<Timer> itsRunTimer;
00097
00098
00099 rutz::shared_ptr<Timer> itsCurrentMissionTimer;
00100
00101
00102 enum MissionState { NOT_STARTED, SEARCHING, CENTERING, COMPLETED, FAILED };
00103
00104
00105 enum MissionName { GATE, HIT_START_BUOY, FIRST_BIN, SECOND_BIN, GET_TREASURE };
00106
00107
00108 struct Mission {
00109
00110 uint timeForMission;
00111 std::vector< rutz::shared_ptr<OceanObject> > missionObjects;
00112 MissionState missionState;
00113 MissionName missionName;
00114 };
00115
00116
00117 rutz::shared_ptr<Mission> currentMission;
00118
00119
00120 std::vector< rutz::shared_ptr<Mission> > itsMissions;
00121
00122
00123 bool currentMovementDone;
00124
00125
00126 void populateMissions();
00127
00128
00129 void lookForObjects(std::vector<rutz::shared_ptr<OceanObject> > oceanObjects,
00130 bool startLooking = true);
00131
00132 bool executeGateMission();
00133 bool executeBuoyMission();
00134 bool executeFirstBinMission();
00135 bool executeSecondBinMission();
00136 bool executeCrossMission();
00137 };
00138
00139
00140 inline void PreFrontalCortexAgent::setPreMotorComplex
00141 (rutz::shared_ptr<PreMotorComplex> pmc)
00142 {
00143 itsPreMotorComplex = pmc;
00144 }
00145
00146
00147 inline void PreFrontalCortexAgent::setForwardVisionAgent
00148 (rutz::shared_ptr<ForwardVisionAgent> fv)
00149 {
00150 itsForwardVisionAgent = fv;
00151 }
00152
00153 #endif
00154
00155
00156
00157
00158
00159
00160