00001
00016 #ifdef WITH_ROBOT_DETECTION
00017
00018 #ifndef DETECTROBOTVISUALLY_H_
00019 #define DETECTROBOTVISUALLY_H_
00020
00021
00022 #include <iostream>
00023
00024
00025 #include <dtCore/refptr.h>
00026
00027
00028 #include <basic/sensors/cameraSensorBase.h>
00029 #include <controller/controllerComponentBase.h>
00030
00031
00032 #include <controller/almControllers/sensorFusionComponent/saliencyDetector/saliencyDetector.h>
00033 #include <controller/almControllers/sensorFusionComponent/associativeLearning/qLearning.h>
00034 #include <controller/almControllers/sensorFusionComponent/associativeLearning/hebbianLearning.h>
00035 #include <controller/almControllers/sensorFusionComponent/utils/imageViewer.h>
00036 #include <controller/almControllers/sensorFusionComponent/objectDetector/objectDetector.h>
00037 #include <controller/almControllers/sensorFusionComponent/utils/experiment.h>
00038 #include <controller/almControllers/sensorFusionComponent/associativeMemory/audioVisualFusion.h>
00039
00040
00041 #include <controllers/controllerUtil.h>
00042 #include <controllers/subController.h>
00043
00044 using namespace almendeSensorFusion;
00045
00046 namespace srAlmende {
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00063 class DetectRobotVisually: public SubController {
00064 public:
00066 DetectRobotVisually(const std::string &name, srCore::RobotActorBase *robotActor);
00067
00069 virtual ~DetectRobotVisually();
00070
00072 CtrlMsg* Act(CtrlMsg *message);
00073
00074 #ifdef WITH_UNITTESTING
00076 int extractClassId();
00077 #endif
00078
00079 private:
00080 bool resetRobotFlag;
00081 bool useAttention;
00082 bool useFusion;
00083
00084 SaliencyDetector saliencyD;
00085 ControllerUtil::HistoryMap imageLocHist;
00086 ControllerUtil::HistoryMap energyClassHistImage;
00087 ControllerUtil::HistoryMap energyClassHistAI;
00088
00089 int sDataCounter;
00090 int localCounter;
00091
00092 int imageScale;
00093
00094 unsigned char ** lastImage;
00095
00096 QLearning::QLearner cameraMotor;
00097
00098 time_t saveTimer, trackTimer;
00099
00100 AudioVisualFusion AVFusion;
00101
00102 FusionInput fusionInput;
00103
00104 bool trackingGoal;
00105
00106 ExperimentLog experiment;
00107
00108 float simTime;
00109
00110 void testInputImage(std::string fileName);
00111
00113 void initSaliencyDetector();
00114
00116 bool salientImage(osg::ref_ptr<osg::Image> camImage, float* location);
00117
00119 int classifyObject(bool learning);
00120
00122 float location;
00123
00125 osg::ref_ptr<osg::Image> camImage;
00126
00128 int counter;
00129 };
00130
00131 }
00132
00133 #endif
00134
00135
00136 #endif