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

Wrapped basic functionality for the client.

Only publish goal for now. Make generic for goal message type.
parent 298be7fd
No related branches found
No related tags found
No related merge requests found
...@@ -7,22 +7,41 @@ import org.ros.node.ConnectedNode; ...@@ -7,22 +7,41 @@ import org.ros.node.ConnectedNode;
import org.ros.node.topic.Subscriber; import org.ros.node.topic.Subscriber;
import org.ros.node.topic.Publisher; import org.ros.node.topic.Publisher;
import org.ros.message.MessageListener; import org.ros.message.MessageListener;
import org.ros.internal.message.Message;
public class ActionClient extends AbstractNodeMain { public class ActionClient<T_ACTION_GOAL extends Message> {
//actionlib_tutorials.FibonacciActionGoal actionGoal; T_ACTION_GOAL actionGoal;
Publisher<actionlib_tutorials.FibonacciActionGoal> clientGoal; String actionGoalType;
Publisher<T_ACTION_GOAL> goalPublisher;
//Publisher<actionlib_msgs.cancel> clientCancel; //Publisher<actionlib_msgs.cancel> clientCancel;
//Suscriber<actionlib_msgs.status> serverStatus; //Suscriber<actionlib_msgs.status> serverStatus;
Subscriber<actionlib_tutorials.FibonacciActionResult> serverResult; Subscriber<actionlib_tutorials.FibonacciActionResult> serverResult;
//Suscriber<actionlib_tutorials.FibonacciActionFeedback> serverFeedback; //Suscriber<actionlib_tutorials.FibonacciActionFeedback> serverFeedback;
ConnectedNode node;
String actionName;
ActionClient (ConnectedNode node, String actionName, String actionGoalType) {
this.node = node;
this.actionName = actionName;
this.actionGoalType = actionGoalType;
publishClient(node);
}
void sendGoal(T_ACTION_GOAL goal) {
goalPublisher.publish(goal);
}
private void publishClient(ConnectedNode node) { private void publishClient(ConnectedNode node) {
clientGoal = node.newPublisher("fibonacci/goal", goalPublisher = node.newPublisher(actionName + "/goal",
actionlib_tutorials.FibonacciActionGoal._TYPE); actionGoalType);
//clientCancel = connectedNode.newPublisher("fibonacci/cancel", //clientCancel = connectedNode.newPublisher("fibonacci/cancel",
// actionlib_msgs.cancel._TYPE); // actionlib_msgs.cancel._TYPE);
} }
public T_ACTION_GOAL newGoalMessage() {
return goalPublisher.newMessage();
}
private void suscribeServer(ConnectedNode node) { private void suscribeServer(ConnectedNode node) {
serverResult = node.newSubscriber("fibonacci/result", serverResult = node.newSubscriber("fibonacci/result",
actionlib_tutorials.FibonacciActionResult._TYPE); actionlib_tutorials.FibonacciActionResult._TYPE);
...@@ -59,32 +78,4 @@ public class ActionClient extends AbstractNodeMain { ...@@ -59,32 +78,4 @@ public class ActionClient extends AbstractNodeMain {
//suscribeServer(node); //suscribeServer(node);
} }
@Override
public GraphName getDefaultNodeName() {
return GraphName.of("fibonacci_client");
}
@Override
public void onStart(ConnectedNode node) {
connect(node);
suscribeServer(node);
// publish a goal message
actionlib_tutorials.FibonacciActionGoal goalMessage = clientGoal.newMessage();
actionlib_tutorials.FibonacciGoal fibonacciGoal = goalMessage.getGoal();
// set Fibonacci parameter
fibonacciGoal.setOrder(6);
goalMessage.setGoal(fibonacciGoal);
while (true) {
clientGoal.publish(goalMessage);
try {
Thread.sleep(10000);
}
catch (InterruptedException ex) {
;
}
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment