ActionServer and ActionClientΒΆ

Do you know about actionlib of ROS? jps provide simple ActionServer and ActionClient. If you want to provide some action which takes long time, how about using these classes. It is made by pub/sub only, but it is possible to handle the response correctly, because it manage what is the response of the request.

Below is a sample of ActionServer

import jps
import time

def callback(req):
    time.sleep(1)
    print req + ' received'
    return True

s = jps.ActionServer('move_to', callback)
s.spin()

Below is a sample of ActionClient

import jps
import json
import time

c = jps.ActionClient('move_to')
time.sleep(0.1) # need this sleep
future = c(json.dumps({'x': 10.0, 'y': 0.1}))
print 'do something during waiting response'
time.sleep(1)
result = future.wait()
print result

It does not contain feedback topic, it is the difference between ROS.