void JAUS_Controller::WaypointCallback::ProcessMessage(const JAUS::Message* message) { MST_JAUS::JAUS_out msg; if(message->GetMessageCode() == JAUS::SET_LOCAL_POSE) { ROS_INFO("SetLocalPose JAUS message received."); msg.set_local_pose = true; const JAUS::SetLocalPose* setLocalPose = dynamic_cast<const JAUS::SetLocalPose*>(message); msg.waypoint_pose_x.push_back(setLocalPose->GetX()); msg.waypoint_pose_y.push_back(setLocalPose->GetY()); msg.pose_yaw.push_back(setLocalPose->GetYaw()); } else if(message->GetMessageCode() == JAUS::SET_ELEMENT) { ROS_INFO("SetElement JAUS message received."); msg.set_waypoints = true; const JAUS::SetElement* setElement = dynamic_cast<const JAUS::SetElement*>(message); for(unsigned int i = 0; i < setElement->GetElementList()->size(); ++i) { const JAUS::Element* element = &setElement->GetElementList()->at(i); JAUS::SetLocalWaypoint waypoint; waypoint.Read(element->mPayload); msg.waypoint_id.push_back(element->mID); msg.waypoint_previous_id.push_back(element->mPrevID); msg.waypoint_next_id.push_back(element->mNextID); msg.waypoint_pose_x.push_back(waypoint.GetX()); msg.waypoint_pose_y.push_back(waypoint.GetY()); std::cout<<"id: "<<element->mID<<' '<<waypoint.GetX()<<' '<<waypoint.GetY()<<std::endl; } } else if(message->GetMessageCode() == JAUS::EXECUTE_LIST) { ROS_INFO("ExecuteList JAUS message received."); msg.execute_waypoints = true; const JAUS::ExecuteList* executeList = dynamic_cast<const JAUS::ExecuteList*>(message); msg.speed = executeList->GetSpeed(); } parent->p_Control.publish(msg); }