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

Added generation of a unique ID for the goal message.

parent a90e2b01
No related branches found
No related tags found
No related merge requests found
......@@ -54,6 +54,7 @@ public class ActionClient<T_ACTION_GOAL extends Message,
private void publishClient(ConnectedNode node) {
goalPublisher = node.newPublisher(actionName + "/goal", actionGoalType);
goalPublisher.setLatchMode(false);
cancelPublisher = node.newPublisher(actionName + "/cancel", GoalID._TYPE);
}
......
......@@ -19,8 +19,6 @@ package com.github.ekumen.rosjava_actionlib;
import org.ros.message.Time;
import actionlib_msgs.GoalID;
import org.ros.node.ConnectedNode;
import org.ros.node.NodeConfiguration;
import org.ros.message.MessageFactory;
import java.util.concurrent.atomic.AtomicLong;
......@@ -62,7 +60,7 @@ public class GoalIDGenerator {
*
* @return GoalID object
*/
public String generateID(ConnectedNode node, GoalID goal) {
public String generateID(GoalID goalId) {
String id;
Time t = node.getCurrentTime();
//NodeConfiguration nc = NodeConfiguration.newPrivate();
......@@ -74,8 +72,8 @@ public class GoalIDGenerator {
id = node.getName().toString() + "-" + goalCount.incrementAndGet()
+ "-" + t.secs + "." + t.nsecs;
goal.setId(id);
goal.setStamp(t);
goalId.setId(id);
goalId.setStamp(t);
return id;
}
......
package com.github.ekumen.rosjava_actionlib;
import java.util.List;
import org.ros.namespace.GraphName;
import org.ros.node.AbstractNodeMain;
import org.ros.node.ConnectedNode;
......@@ -11,10 +12,13 @@ import actionlib_tutorials.FibonacciGoal;
import actionlib_tutorials.FibonacciFeedback;
import actionlib_tutorials.FibonacciResult;
import actionlib_msgs.GoalStatusArray;
import actionlib_msgs.GoalID;
import actionlib_msgs.GoalStatus;
public class TestClient extends AbstractNodeMain implements ActionClientListener<FibonacciActionFeedback, FibonacciActionResult> {
ActionClient ac;
volatile private boolean resultReceived = false;
private ActionClient ac = null;
private volatile boolean resultReceived = false;
private GoalIDGenerator goalIdGenerator = null;
@Override
public GraphName getDefaultNodeName() {
......@@ -26,6 +30,8 @@ public class TestClient extends AbstractNodeMain implements ActionClientListener
ac = new ActionClient<FibonacciActionGoal, FibonacciActionFeedback, FibonacciActionResult>(node, "/fibonacci", FibonacciActionGoal._TYPE, FibonacciActionFeedback._TYPE, FibonacciActionResult._TYPE);
int repeat = 3;
goalIdGenerator = new GoalIDGenerator(node);
// Attach listener for the callbacks
ac.attachListener(this);
......@@ -40,7 +46,7 @@ public class TestClient extends AbstractNodeMain implements ActionClientListener
while (repeat > 0) {
sleep(10000);
System.out.println("Sending goal #" + repeat + "...");
ac.sendGoal(goalMessage);
sendGoal(goalMessage);
System.out.println("Goal sent.");
//while(!resultReceived) sleep(100);
resultReceived = false;
......@@ -78,7 +84,15 @@ public class TestClient extends AbstractNodeMain implements ActionClientListener
@Override
public void statusReceived(GoalStatusArray status) {
List<GoalStatus> statusList = status.getStatusList();
for(GoalStatus gs:statusList) {
//System.out.println("GoalID: " + gs.getGoalId().getId() + " -- GoalStatus: " + gs.getStatus() + " -- " + gs.getText());
}
}
private void sendGoal(FibonacciActionGoal goal) {
goalIdGenerator.generateID(goal.getGoalId());
ac.sendGoal(goal);
}
void sleep(long msec) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment