PrefrontalCortexService.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
00038 #ifndef NEOVISIONII_PREFORNTALCORTEXSERVICE_H_DEFINED
00039 #define NEOVISIONII_PREFORNTALCORTEXSERVICE_H_DEFINED
00040
00041 #include <Ice/Ice.h>
00042 #include <Ice/Service.h>
00043 #include <IceUtil/Thread.h>
00044 #include <IceStorm/IceStorm.h>
00045 #include "Ice/BrainObjects.ice.H"
00046 #include "Ice/SimEvents.ice.H"
00047 #include "Ice/ImageIce.ice.H"
00048 #include "Ice/IceImageUtils.H"
00049 #include "Component/ModelManager.H"
00050 #include "Component/ModelComponent.H"
00051 #include "Component/ModelOptionDef.H"
00052 #include "Image/Image.H"
00053 #include "Image/Point3D.H"
00054 #include "Media/FrameSeries.H"
00055 #include "Transport/FrameInfo.H"
00056 #include "Raster/GenericFrame.H"
00057
00058 class PrefrontalCortexI : public ModelComponent, public BrainObjects::PrefrontalCortex
00059 {
00060 public:
00061
00062 enum STATES {START_OF_GAME_MSG, WAIT_FOR_GAME_START,
00063 INIT_PTZ, INIT_PTZ_DONE,
00064 SET_TRACKING, TRACKING, SET_SEG_LOC, GET_SEG_IMG,
00065 GET_OBJ_INFO, GET_OBJ_STATE, ZOOM_OUT, ZOOM_OUT_DONE,
00066 GAMEPLAY_PLAYERMOVE, GAMEPLAY_PLAYERMOVE_DONE};
00067
00068
00069
00070 struct TopicInfo
00071 {
00072 TopicInfo(const char* _name, IceStorm::TopicPrx& prx) :
00073 name(_name), topicPrx(prx)
00074 {}
00075 std::string name;
00076 IceStorm::TopicPrx topicPrx;
00077 };
00078
00079 struct StateInfo
00080 {
00081 StateInfo(int _id, const char* _name, int _nextState) :
00082 id(_id), name(_name), nextState(_nextState)
00083 {}
00084
00085 int id;
00086 std::string name;
00087 int nextState;
00088 };
00089
00090 PrefrontalCortexI(OptionManager& mgr,
00091 const std::string& descrName = "PrefrontalCortexService",
00092 const std::string& tagName = "PrefrontalCortexService");
00093
00094 ~PrefrontalCortexI();
00095
00096 virtual void evolve(const SimEvents::EventMessagePtr& eMsg,
00097 const Ice::Current&);
00098
00099 void initSimEvents(Ice::CommunicatorPtr icPtr, Ice::ObjectPrx objectPrx);
00100 void unsubscribeSimEvents();
00101
00102
00103 void assignStates();
00104 void setCurrentState(int s);
00105 int processState(int state, const SimEvents::EventMessagePtr& eMsg);
00106
00107 void setSalientTrackLoc(const SimEvents::SaliencyMapMessagePtr& msg);
00108 void setTrackLoc(Point2D<int> loc);
00109 void setTrackSegLoc(const SimEvents::VisualTrackerMessagePtr& msg);
00110 void setPTZoomIn();
00111
00112 void init();
00113
00114 private:
00115 SimEvents::EventsPrx itsEventsPub;
00116 std::vector<TopicInfo> itsTopicsSubscriptions;
00117 Ice::ObjectPrx itsObjectPrx;
00118 std::vector<StateInfo> itsStates;
00119 int itsCurrentState;
00120 int itsLastState;
00121 Image<PixRGB<byte> > itsCurrentRetinaImg;
00122 int itsTilt;
00123 int itsPan;
00124 int itsCount;
00125 bool getUserInput;
00126 int itsArmXOffset;
00127 int itsArmYOffset;
00128 int itsArmZOffset;
00129
00130 };
00131
00132
00133
00134
00135
00136
00137
00138
00139 #endif // NEURO_ENVVISUALCORTEX_H_DEFINED