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

2024-09-27 07:34:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

https://answers.ros.org/question/302037/ros2-how-to-call-a-service-from-the-callback-function-of-a-subscriber/

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

def subscriber_callback(self):
    for element in msg.list_of_vals:
        self.publish(element)
        while True:
           self.async_service_call()
           while True:
               rclpy.spin_once(node)
               self.read_response()
               # break on response
           # break when response is desired value

我仍然在我的main()函数中调用rclpy.spin(node),当我运行这个函数时,它挂起rclpy.spin_once。我意识到这可能是因为rclpy已经从main()函数开始旋转,但是我如何启动节点呢?我尝试创建一个内部spin()函数,就像在发布的链接中一样,但它再次挂起rclpy.spin_once

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

我将ROS2 Dash与Python一起使用


Tags: of函数selfnodetrueresponseservicecallback

热门问题