Skip to content
Snippets Groups Projects
Commit 0831e8af authored by Ernesto Corbellini's avatar Ernesto Corbellini
Browse files

Added heartbeat publishing in status topic.

Also added functions to create new result and feedback messages.
parent 1cf7e7ad
Branches
Tags
No related merge requests found
...@@ -8,6 +8,8 @@ import org.ros.node.topic.Publisher; ...@@ -8,6 +8,8 @@ import org.ros.node.topic.Publisher;
import org.ros.message.MessageListener; import org.ros.message.MessageListener;
import org.ros.internal.message.Message; import org.ros.internal.message.Message;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.Timer;
import java.util.TimerTask;
import actionlib_msgs.GoalStatusArray; import actionlib_msgs.GoalStatusArray;
import actionlib_msgs.GoalID; import actionlib_msgs.GoalID;
...@@ -15,19 +17,20 @@ public class ActionServer<T_ACTION_GOAL extends Message, ...@@ -15,19 +17,20 @@ public class ActionServer<T_ACTION_GOAL extends Message,
T_ACTION_FEEDBACK extends Message, T_ACTION_FEEDBACK extends Message,
T_ACTION_RESULT extends Message> { T_ACTION_RESULT extends Message> {
T_ACTION_GOAL actionGoal; private T_ACTION_GOAL actionGoal;
String actionGoalType; private String actionGoalType;
String actionResultType; private String actionResultType;
String actionFeedbackType; private String actionFeedbackType;
Subscriber<T_ACTION_GOAL> goalSuscriber = null; private Subscriber<T_ACTION_GOAL> goalSuscriber = null;
Subscriber<GoalID> cancelSuscriber = null; private Subscriber<GoalID> cancelSuscriber = null;
Publisher<T_ACTION_RESULT> resultPublisher = null; private Publisher<T_ACTION_RESULT> resultPublisher = null;
Publisher<T_ACTION_FEEDBACK> feedbackPublisher = null; private Publisher<T_ACTION_FEEDBACK> feedbackPublisher = null;
Publisher<GoalStatusArray> statusPublisher = null; private Publisher<GoalStatusArray> statusPublisher = null;
ConnectedNode node = null; private ConnectedNode node = null;
String actionName; private String actionName;
ActionServerListener callbackTarget = null; private ActionServerListener callbackTarget = null;
private Timer statusTick = new Timer();
ActionServer (ConnectedNode node, String actionName, String actionGoalType, ActionServer (ConnectedNode node, String actionName, String actionGoalType,
String actionFeedbackType, String actionResultType) { String actionFeedbackType, String actionResultType) {
...@@ -60,6 +63,12 @@ public class ActionServer<T_ACTION_GOAL extends Message, ...@@ -60,6 +63,12 @@ public class ActionServer<T_ACTION_GOAL extends Message,
statusPublisher = node.newPublisher(actionName + "/status", GoalStatusArray._TYPE); statusPublisher = node.newPublisher(actionName + "/status", GoalStatusArray._TYPE);
feedbackPublisher = node.newPublisher(actionName + "/feedback", actionFeedbackType); feedbackPublisher = node.newPublisher(actionName + "/feedback", actionFeedbackType);
resultPublisher = node.newPublisher(actionName + "/result", actionResultType); resultPublisher = node.newPublisher(actionName + "/result", actionResultType);
statusTick.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
sendStatusTick();
}
}, 2000, 1000);
} }
private void unpublishServer() { private void unpublishServer() {
...@@ -77,10 +86,6 @@ public class ActionServer<T_ACTION_GOAL extends Message, ...@@ -77,10 +86,6 @@ public class ActionServer<T_ACTION_GOAL extends Message,
} }
} }
/*public T_ACTION_GOAL newGoalMessage() {
return goalPublisher.newMessage();
}*/
private void subscribeToClient(ConnectedNode node) { private void subscribeToClient(ConnectedNode node) {
goalSuscriber = node.newSubscriber(actionName + "/goal", actionGoalType); goalSuscriber = node.newSubscriber(actionName + "/goal", actionGoalType);
cancelSuscriber = node.newSubscriber(actionName + "/cancel", GoalID._TYPE); cancelSuscriber = node.newSubscriber(actionName + "/cancel", GoalID._TYPE);
...@@ -125,6 +130,19 @@ public class ActionServer<T_ACTION_GOAL extends Message, ...@@ -125,6 +130,19 @@ public class ActionServer<T_ACTION_GOAL extends Message,
} }
} }
public void sendStatusTick() {
GoalStatusArray status = statusPublisher.newMessage();
sendStatus(status);
}
public T_ACTION_RESULT newResultMessage() {
return resultPublisher.newMessage();
}
public T_ACTION_FEEDBACK newFeedbackMessage() {
return feedbackPublisher.newMessage();
}
/** /**
* Publishes the server's topics and suscribes to the client's topics. * Publishes the server's topics and suscribes to the client's topics.
*/ */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment