Python ROS2从订户回调重复调用服务

Python ROS2从订户回调重复调用服务,python,callback,publish-subscribe,ros2,Python,Callback,Publish Subscribe,Ros2,在订户回调中实现异步服务调用时遇到问题。我在ROS Answers上找到了一篇关于这样做的帖子: 然而,这里答案中的示例只打印用户接收的数据,而不打印其他内容,然后在执行服务调用之前,在别处查找响应。简而言之,我试图在回调中实现以下目标: def订户_回调(self): 对于msg.list\u of\u vals中的元素: self.publish(元素) 尽管如此: self.async_服务_调用() 尽管如此: rclpy.spin_一次(节点) self.read_response(

在订户回调中实现异步服务调用时遇到问题。我在ROS Answers上找到了一篇关于这样做的帖子:

然而,这里答案中的示例只打印用户接收的数据,而不打印其他内容,然后在执行服务调用之前,在别处查找响应。简而言之,我试图在回调中实现以下目标:

def订户_回调(self):
对于msg.list\u of\u vals中的元素:
self.publish(元素)
尽管如此:
self.async_服务_调用()
尽管如此:
rclpy.spin_一次(节点)
self.read_response()
#抢答
#当响应为所需值时中断
我仍然在我的
main()
函数中调用
rclpy.spin(node)
,当我运行此函数时,它会挂起一次
rclpy.spin\u
。我意识到这可能是因为rclpy已经从
main()
函数开始旋转,但是我如何启动节点呢?我尝试创建一个内部spin()函数,就像在发布的链接中一样,但它再次挂起
rclpy.spin\u一次

如有任何想法或帮助,将不胜感激。我可能会朝着完全错误的方向走,所以我愿意接受所有的建议

我将ROS2 Dash与Python一起使用