HawkVisionSign.C

00001 // File: HawkVisionSign.C
00002 // Author: Josh Villbrandt <josh.villbrandt@usc.edu>
00003 // Kevin, Chris, Justin
00004 // Date: May 2010
00005 
00006 #include "Robots/BeoHawk/computer/HawkVisionSign.H"
00007 
00008 // ######################################################################
00009 HawkVisionSign::HawkVisionSign(std::string myName, int argc, char* argv[])
00010 : HawkAgent(myName, argc, argv) {
00011         state = INIT;
00012 }
00013 
00014 // ######################################################################
00015 void HawkVisionSign::registerTopics() {
00016         registerPublisher("RoomFinder");
00017         registerSubscription("ControlRoomVision");
00018         registerSubscription("CameraImage");
00019 }
00020 
00021 // ######################################################################
00022 bool HawkVisionSign::scheduler() {
00023         if(state == INIT) {
00024                 //sendExampleMessageOne();
00025                 return true;
00026         }
00027         else if(state == IDLE) {
00028                 //sendExampleMessageTwo();
00029                 return true;
00030         }else if(state == PROCESSING){
00031                 doSignSearch();
00032                 return true;
00033         }
00034         
00035         return false;
00036 }
00037 
00038 // ######################################################################
00039 void HawkVisionSign::catchMessage(const HawkMessages::MessagePtr& hawkMessage, const Ice::Current&) {
00040         if(hawkMessage->ice_isA("::HawkMessages::ControlDriveVision"))
00041         {
00042                 HawkMessages::ControlDriveVisionMessage msg = HawkMessages::ControlDriveVisionMessage::dynamicCast(hawkMessage);
00043                 std::cout << "signVisionOn" << std::endl;
00044                 
00045                 // Update State / Wake Up Agent
00046                 if(msg->signVisionOn) {
00047                         state = IDLE;
00048                         wakeUp();
00049                 }
00050         }
00051         if(hawkMessage->is_A("::HawkMessages::CameraImageMessage") && state != PROCESSING)
00052         {
00053                 HawkMessages::CameraImageMessage msg = HawkMessages::ControlDriveVisionMessage::dynamicCast(hawkMessage);
00054                 std::cout<<"Got camera msg!"<<std::endl;
00055                 //Update state
00056                 if(msg->cameraID == "forward"/*I'm not sure what the downward camera id is*/){
00057                         state = PROCESSING;
00058                 }
00059         }
00060 }
00061 
00062 /**
00063 * Tries to find a sign in the image
00064 **/
00065 void HawkVisionSign::doSignSearch(){
00066         
00067 }
00068 
00069 // ######################################################################
00070 /*
00071 void HawkVisionSign::sendExampleMessageOne() {
00072         // Create Message
00073         HawkMessages::ExampleMessagePtr msg = new HawkMessages::ExampleMessage;
00074     msg->name = itsName;
00075     msg->chatter = "Hello?";
00076     
00077     // Send Message
00078         publish("ExampleMessage", msg);
00079         
00080         // Update State
00081         state = WAITING;
00082 }*/
00083 
00084 // ######################################################################
00085 /*
00086 void HawkVisionSign::sendExampleMessageTwo() {
00087         // Create Message
00088         HawkMessages::ExampleMessagePtr msg = new HawkMessages::ExampleMessage;
00089     msg->name = itsName;
00090     msg->chatter = "O hai! ^_^";
00091     
00092     // Send Message
00093         publish("ExampleMessage", msg);
00094         
00095         // Update State
00096         state = WAITING;
00097 }
00098 */
00099 
00100 // ######################################################################
00101 int main (int argc, char* argv[]) {
00102         std::cout << "HawkVisionSign: starting..." << std::endl;
00103         
00104         HawkVisionSign agent("HawkVisionSign", argc, argv);
00105         agent.start();
00106         
00107         std::cout << "HawkVisionSign: all done!" << std::endl;
00108 }
Generated on Sun May 8 08:41:20 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3