Skip to content

Commit

Permalink
Implement action server and update example
Browse files Browse the repository at this point in the history
  • Loading branch information
sea-bass committed Nov 7, 2023
1 parent 2f54477 commit 0742dba
Show file tree
Hide file tree
Showing 9 changed files with 282 additions and 890 deletions.
782 changes: 161 additions & 621 deletions build/roslib.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion build/roslib.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion examples/fibonacci_client.html
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
order: 5,
});

fibonacciClient.sendGoal(goal,
var goal_id = fibonacciClient.sendGoal(goal,
function(result) {
console.log('Result for action goal on ' + fibonacciClient.name + ': ' + result.result.sequence);
},
Expand Down
57 changes: 26 additions & 31 deletions examples/fibonacci_server.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,56 +20,51 @@
// The ActionServer
// ----------------

this.fibonacciServer = new ROSLIB.SimpleActionServer({
var fibonacciServer = new ROSLIB.Action({
ros : ros,
serverName : '/fibonacci',
actionName : 'actionlib_tutorials/FibonacciAction'
name : '/fibonacci',
actionType : 'action_tutorials_interfaces/Fibonacci'
});

this.canceled = false;
var that=this;

//handle fibonacci action request.
this.fibonacciServer.on('goal', function(goalMessage) {
console.log(goalMessage);
fibonacciServer.advertise(function(goal, id) {
console.log('Received action goal on ' + fibonacciServer.name + ', order: ' + goal.order);
console.log('ID: ' + id);
fibonacciSequence = [];
fibonacciSequence.push(0);
fibonacciSequence.push(1);

for (var i = 1; i < goalMessage.order; i++ ) {
fibonacciSequence.push( fibonacciSequence[i] + fibonacciSequence[i-1] );

if (that.canceled === true ) {
console.log("Action server preempted");

that.fibonacciServer.setPreempted();
}
console.log(fibonacciSequence);
//send feedback
var feedback = { sequence: fibonacciSequence };
that.fibonacciServer.sendFeedback(fibonacciSequence);
// failure case
if (goal.order > 47) {
console.log('Aborting. Value will exceed maximum signed integer value.');
fibonacciServer.setFailed(id);
return;
}

//send result
var result = { sequence: fibonacciSequence};
that.fibonacciServer.setSucceeded(result);
});
// publish feedback
for (var i = 1; i < goal.order; i++ ) {
fibonacciSequence.push( fibonacciSequence[i] + fibonacciSequence[i-1] );
console.log('Sending feedback: ' + fibonacciSequence);
fibonacciServer.sendFeedback(id, { partial_sequence : fibonacciSequence });
}

this.fibonacciServer.on('cancel', function(goalMessage){
that.canceled = true;
// send result
console.log('Sending result: ' + fibonacciSequence);
fibonacciServer.setSucceeded(id, { sequence: fibonacciSequence });
});
</script>
</head>

<body>
<h1>Fibonacci ActionClient Example</h1>
<h1>Fibonacci ActionServer Example</h1>
<p>Run the following commands in the terminal then refresh this page. Check the JavaScript
console for the output.</p>
<ol>
<li><tt>roscore</tt></li>
<li><tt>roslaunch rosbridge_server rosbridge_websocket.launch</tt></li>
<li><tt>ros2 launch rosbridge_server rosbridge_websocket_launch.xml</tt></li>
<li><tt>refresh this page</tt></li>
<li><tt>rosrun actionlib_tutorials fibonacci_client</tt></li>
<li><tt>ros2 run action_tutorials_py fibonacci_action_client</tt>
<br>or<br>
<tt>ros2 action send_goal --feedback /fibonacci action_tutorials_interfaces/action/Fibonacci order:\ 20\ </tt>
</li>
</ol>
</body>
</html>
2 changes: 0 additions & 2 deletions src/RosLib.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ var assign = require('object-assign');
// Add core components
assign(ROSLIB, require('./core'));

assign(ROSLIB, require('./actionlib'));

assign(ROSLIB, require('./math'));

assign(ROSLIB, require('./tf'));
Expand Down
229 changes: 0 additions & 229 deletions src/actionlib/SimpleActionServer.js

This file was deleted.

3 changes: 1 addition & 2 deletions src/actionlib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ var action = module.exports = {
ActionClient: require('./ActionClient'),
ActionListener: require('./ActionListener'),
Goal: require('./Goal'),
SimpleActionServer: require('./SimpleActionServer')
};

mixin(Ros, ['ActionClient', 'SimpleActionServer'], action);
mixin(Ros, ['ActionClient'], action);
Loading

0 comments on commit 0742dba

Please sign in to comment.