00001 #include "Component/ModelManager.H" 00002 #include "Component/ModelComponent.H" 00003 #include "Component/ModelOptionDef.H" 00004 #include "Ice/SimEventsUtils.H" 00005 #include <Ice/Ice.h> 00006 #include "Ice/RobotSimEvents.ice.H" 00007 00008 int main(int argc, char *argv[]) { 00009 00010 Ice::CommunicatorPtr ic; 00011 ic = Ice::initialize(argc, argv); 00012 00013 ModelManager itsMgr("TestRobotMessageManager"); 00014 itsMgr.parseCommandLine((const int)argc, (const char**)argv, "<ActionMessage=1|GPSMessage=2|GoalMessage=3|TrainImageMessage=4>", 1, -1); 00015 00016 int messageType = atoi(itsMgr.getExtraArg(0).c_str()); 00017 switch(messageType) { 00018 case 1: 00019 { 00020 float transVel = atof(itsMgr.getExtraArg(1).c_str()); 00021 float rotVel = atof(itsMgr.getExtraArg(2).c_str()); 00022 LINFO("TransVel = %f, RotVel = %f", transVel, rotVel); 00023 00024 RobotSimEvents::EventsPrx actionPublisher = 00025 RobotSimEvents::EventsPrx::uncheckedCast( 00026 SimEventsUtils::getPublisher(ic, "ActionMessageTopic") 00027 ); 00028 00029 RobotSimEvents::ActionMessagePtr actionMessage = 00030 new RobotSimEvents::ActionMessage; 00031 00032 actionMessage->transVel = transVel; 00033 actionMessage->rotVel = rotVel; 00034 00035 actionPublisher->updateMessage(actionMessage); 00036 } 00037 break; 00038 case 2: 00039 { 00040 float xPos = atof(itsMgr.getExtraArg(1).c_str()); 00041 float yPos = atof(itsMgr.getExtraArg(2).c_str()); 00042 float ori = atof(itsMgr.getExtraArg(3).c_str()); 00043 LINFO("posX = %f, posY = %f, ori = %f", xPos, yPos, ori); 00044 00045 RobotSimEvents::EventsPrx actionPublisher = 00046 RobotSimEvents::EventsPrx::uncheckedCast( 00047 SimEventsUtils::getPublisher(ic, "GPSMessageTopic") 00048 ); 00049 00050 RobotSimEvents::GPSMessagePtr gpsMessage = 00051 new RobotSimEvents::GPSMessage; 00052 00053 gpsMessage->xPos = xPos; 00054 gpsMessage->yPos = yPos; 00055 gpsMessage->orientation = ori; 00056 00057 00058 actionPublisher->updateMessage(gpsMessage); 00059 } 00060 break; 00061 case 3: 00062 { 00063 float xPos = itsMgr.getExtraArgAs<float>(1); 00064 float yPos = itsMgr.getExtraArgAs<float>(2); 00065 float ori = itsMgr.getExtraArgAs<float>(3); 00066 LINFO("Setting goal posX = %f, posY = %f, ori = %f", xPos, yPos, ori); 00067 00068 RobotSimEvents::EventsPrx actionPublisher = 00069 RobotSimEvents::EventsPrx::uncheckedCast( 00070 SimEventsUtils::getPublisher(ic, "GoalStateMessageTopic") 00071 ); 00072 00073 RobotSimEvents::GoalStateMessagePtr goalMessage = 00074 new RobotSimEvents::GoalStateMessage; 00075 00076 goalMessage->xPos = xPos; 00077 goalMessage->yPos = yPos; 00078 goalMessage->orientation = ori; 00079 00080 actionPublisher->updateMessage(goalMessage); 00081 } 00082 break; 00083 case 4: 00084 { 00085 00086 } 00087 break; 00088 00089 } 00090 00091 return 0; 00092 } 00093