1. 程式人生 > >ros service

ros service

 

Server部分:
#!/usr/bin/env python

import sys
import os

import rospy
#from beginner.srv import *
from beginner.srv import AddTwoInts

def add_two_ints_client(x,y):
rospy.wait_for_service('add_two_ints')# rospy.wait_for_service(‘service的tipoc’)
try:
add_two_ints=rospy.ServiceProxy('add_two_ints
',AddTwoInts)#client請求(request)後server的返回值(response)add_two_ints 通過rospy.ServiceProxy的方式向service傳送(request)請求 resp1=add_two_ints(x,y) #將引數傳送給server return resp1.sum except rospy.ServiceException, e: print "Service call failed: %s"%e def usage(): return "%s [x,y]"%sys.argv[0] if __name__=="__main__"
: if len(sys.argv)==3: x=int(sys.argv[1]) y=int(sys.argv[2]) else: print usage() sys.exit(1) print"Resquesting %s+%s"%(x,y) print"%s+%s=%s"%(x,y,add_two_ints_client(x,y))

 

 

Client部分:

import rospy
from beginner.srv import *
#from beginner.srv import *
#from beginner.srv import AddTwoInts


def handle_add_two_ints(req):
print(
"Returning[%s+%s=%s]"%(req.a,req.b,(req.a+req.b))) sum=req.a+req.b return AddTwoIntsResponse(sum) def add_two_ints_server(): rospy.init_node('add_two_ints_server') s = rospy.Service('add_two_ints',AddTwoInts,handle_add_two_ints)#服務節點,服務型別,這裡必須和AddTwoInts.srv的檔名一致,處理函式 處理函式呼叫和返回例項化的AddTwoIntsRes print"Ready to add Two Ints" rospy.spin() if __name__=="__main__": add_two_ints_server()