Captain.C

Go to the documentation of this file.
00001 /*!@file SeaBee/Captain.C
00002   decides sumbarine's current mission and strategically accomplishes
00003   submarine goal                                                        */
00004 // //////////////////////////////////////////////////////////////////// //
00005 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2001 by the //
00006 // University of Southern California (USC) and the iLab at USC.         //
00007 // See http://iLab.usc.edu for information about this project.          //
00008 // //////////////////////////////////////////////////////////////////// //
00009 // Major portions of the iLab Neuromorphic Vision Toolkit are protected //
00010 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency //
00011 // in Visual Environments, and Applications'' by Christof Koch and      //
00012 // Laurent Itti, California Institute of Technology, 2001 (patent       //
00013 // pending; application number 09/912,225 filed July 23, 2001; see      //
00014 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status).     //
00015 // //////////////////////////////////////////////////////////////////// //
00016 // This file is part of the iLab Neuromorphic Vision C++ Toolkit.       //
00017 //                                                                      //
00018 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can   //
00019 // redistribute it and/or modify it under the terms of the GNU General  //
00020 // Public License as published by the Free Software Foundation; either  //
00021 // version 2 of the License, or (at your option) any later version.     //
00022 //                                                                      //
00023 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope  //
00024 // that it will be useful, but WITHOUT ANY WARRANTY; without even the   //
00025 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
00026 // PURPOSE.  See the GNU General Public License for more details.       //
00027 //                                                                      //
00028 // You should have received a copy of the GNU General Public License    //
00029 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write   //
00030 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,   //
00031 // Boston, MA 02111-1307 USA.                                           //
00032 // //////////////////////////////////////////////////////////////////// //
00033 //
00034 // Primary maintainer for this file: Michael Montalbo <montalbo@usc.edu>
00035 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/SeaBee/Captain.C $
00036 // $Id: Captain.C 10794 2009-02-08 06:21:09Z itti $
00037 
00038 #include "SeaBee/Captain.H"
00039 
00040 // ######################################################################
00041 CaptainAgent::CaptainAgent(OptionManager& mgr,
00042                            nub::soft_ref<AgentManager> ama,
00043                            const std::string& name) :
00044   SubmarineAgent(mgr, ama, name)
00045 {
00046    itsIsInitialized = false;
00047 }
00048 
00049 // ######################################################################
00050 CaptainAgent::~CaptainAgent()
00051 { }
00052 
00053 // ######################################################################
00054 void CaptainAgent::start()
00055 {
00056   populateMissions();
00057   stateChanged();
00058 }
00059 
00060 
00061 // ######################################################################
00062 void CaptainAgent::msgGoThroughGateComplete()
00063 {
00064   if(itsCurrentMission->missionName == Mission::GATE &&
00065      itsCurrentMission->missionState == Mission::IN_PROGRESS)
00066     {
00067       itsCurrentMission->missionState = Mission::COMPLETED;
00068     }
00069 
00070   LINFO("HEY");
00071   stateChanged();
00072 }
00073 
00074 // ######################################################################
00075 void CaptainAgent::populateMissions()
00076 {
00077   Do("Populating Missions...");
00078 
00079   //add go through gate mission
00080   addMission(300,
00081              Mission::NOT_STARTED,
00082              Mission::GATE);
00083 
00084   //add first bin mission
00085   addMission(300,
00086              Mission::NOT_STARTED,
00087              Mission::FIRST_BIN);
00088 
00089   itsIsInitialized = true;
00090 
00091 }
00092 
00093 // ######################################################################
00094 void CaptainAgent::addMission(uint missionTime,
00095                               Mission::MissionState ms,
00096                               Mission::MissionName mn)
00097 {
00098   Do("Adding a mission to mission list.");
00099 
00100   rutz::shared_ptr<Mission> theMission(new Mission());
00101   theMission->timeForMission = missionTime;
00102   theMission->missionState = ms;
00103   theMission->missionName = mn;
00104 
00105   itsMissions.push_back(theMission);
00106 }
00107 
00108 // ######################################################################
00109 bool CaptainAgent::pickAndExecuteAnAction()
00110 {
00111   if(itsIsInitialized)
00112     {
00113       uint missionListSize = itsMissions.size();
00114 
00115       if(itsCurrentMission->missionState != Mission::IN_PROGRESS)
00116         {
00117           for(uint i = 0; i < missionListSize; i++)
00118             {
00119 
00120               rutz::shared_ptr<Mission> m = itsMissions.at(i);
00121 
00122               if(m->missionState == Mission::NOT_STARTED)
00123                 {
00124                   m->missionState = Mission::IN_PROGRESS;
00125                   updateMission(*m);
00126                   itsAgentManager->updateAgentsMission(*m);
00127                   return true;
00128                 }
00129             }
00130         }
00131     }
00132 
00133   return false;
00134 }
00135 
00136 // ######################################################################
00137 /* So things look consistent in everyone's emacs... */
00138 /* Local Variables: */
00139 /* indent-tabs-mode: nil */
00140 /* End: */
00141 
Generated on Sun May 8 08:42:14 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3