问题描述
我在订阅者回调中实现异步服务调用时遇到问题。我在 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 (将#修改为@)