00001
00002
00003 #include <iostream>
00004 #include <controllers/fitnessFramework/almEvolutionAgent.h>
00005 #include <controllers/externalControllers/tcpip/nonEmulationMessage.h>
00006
00007 namespace srAlmende {
00008
00012 AlmEvolutionAgent::AlmEvolutionAgent(const std::string &name,
00013 srCore::RobotActorBase *robotActor):
00014 srCore::ControllerComponentBase(name, robotActor)
00015 {
00016
00017 }
00018
00019 AlmEvolutionAgent::~AlmEvolutionAgent() {
00020
00021 }
00022
00029 void AlmEvolutionAgent::ProcessMessage(const dtGame::Message& message) {
00030 if (message.GetMessageType() == srExternal::NonEmulationMessageType::TCPIP) {
00031
00032
00033
00034 srExternal::NonEmulationMessage *neMsg = dynamic_cast<srExternal::NonEmulationMessage*>(
00035 const_cast<dtGame::Message*>(&message));
00036 dtCore::UniqueId* busID = neMsg->getBusID();
00037 std::string msg = neMsg->getMessage();
00038 srExternal::NonEmulationMessageType::msgType type = neMsg->getMsgType();
00039
00040 const char *arr_msg = msg.c_str();
00041
00042 std::string rid = getBusID()->ToString();
00043
00044 switch (type) {
00045
00046 case srExternal::NonEmulationMessageType::POSITION:
00047
00048
00049 if (busID == getBusID()) {
00050
00051
00052
00053
00054 int x = (arr_msg[0] << 8) + arr_msg[1];
00055 int y = (arr_msg[2] << 8) + arr_msg[3];
00056 int z = (arr_msg[4] << 8) + arr_msg[5];
00057
00058 osg::Vec3 pos;
00059 pos.set(x,y,z);
00060 setRobotTranslation(pos);
00061 }
00062 break;
00063 default:
00064 return;
00065 }
00066 }
00067 }
00068
00069 }
00070
00071