如何解决ROS2 从订阅者回调中重复调用服务
我在订阅者回调中实现异步服务调用时遇到问题。我在 ROS Answers 上找到了一篇关于在此处执行此操作的先前帖子:
然而,这里的答案中的示例只打印订阅者正在接收的数据,在执行服务调用之前不打印其他任何内容,然后在别处寻找响应。简而言之,我在回调中要完成的任务如下:
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
我仍然在我的 rclpy.spin(node)
函数中调用 main()
,当我运行它时,它挂在 rclpy.spin_once
上。我意识到这可能是因为 rclpy 已经从 main()
函数开始旋转,但是我还能如何启动节点?我尝试在发布的链接中创建一个内部 spin() 函数,但它再次挂在 rclpy.spin_once
上。
任何想法或帮助将不胜感激。我的处理方式可能完全错误,所以我愿意接受所有建议。
我在 Python 中使用 ROS2 Dashing
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。