我认为您需要 ROS_Services(客户端/服务器)模式而不是发布者/订阅者。
这是一个在 Python 中执行此操作的简单示例:
客户端代码sn-p:
import rospy
from test_service.srv import MySrvFile
rospy.wait_for_service('a_topic')
try:
send_hi = rospy.ServiceProxy('a_topic', MySrvFile)
print('Client: Hi, do you hear me?')
resp = send_hi('Hi, do you hear me?')
print("Server: {}".format(resp.response))
except rospy.ServiceException, e:
print("Service call failed: %s"%e)
服务器代码sn-p:
import rospy
from test_service.srv import MySrvFile, MySrvFileResponse
def callback_function(req):
print(req)
return MySrvFileResponse('Hello client, your message received.')
rospy.init_node('server')
rospy.Service('a_topic', MySrvFile, callback_function)
rospy.spin()
MySrvFile.srv
string request
---
string response
服务器输出:
request: "Hi, do you hear me?"
客户出局:
Client: Hi, do you hear me?
Server: Hello client, your message received.
Learn more in ros-wiki
[更新]