gpt4 book ai didi

python - ROS服务和消息

转载 作者:行者123 更新时间:2023-11-28 00:17:17 25 4
gpt4 key购买 nike

我正在使用ROS系统,我是初学者。我在 ROS 中遇到了服务和消息(srv 和 msgs)。从 ros wiki,我设法理解像 msgs 用于定义传递的消息类型,而服务是关于请求和响应的。如果我弄错了,请纠正我。

然而,我无法理解何时使用它们。我认为,如果我有用 C++ 编写的模块和 Python 中的其他处理模块,这可能比我可以使用 srv 和 msgs 在两个模块之间进行通信更有用。然而,ROS 也有发布者和订阅者系统可以代替使用吗?

其次,当我们使用 srv 时,我们只需要定义 msgs 还是可以独立使用?

最佳答案

首先,让我向您指出:

http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29

这是Ros给出的第一个例子tutorials .

发布者和订阅者是用来实现节点互通的实体。发布者向 channel 发布消息,而订阅者则收听这些 channel 以获取发布者可能发送的消息。发布者使用消息发布到 channel ,并根据要实现的目标保存不同类型的数据。订阅者接收这些消息并自动执行一个回调函数来实现对数据有用的东西。

现在让我指点你:

http://wiki.ros.org/ROS/Tutorials/WritingServiceClient%28c%2B%2B%29

是一个类似的例子,只不过这次是用服务来实现通信。与消息有关的是,一旦节点发布了一条消息,整个通信就结束了,节点将继续其剩余的工作。另一方面,客户端(他们使用服务)与服务器通信;他们向服务器发布消息,然后等待该服务器的响应。

示例:

  1. 假设您有两个节点:第一个创建并发布随机整数,第二个获取这些数字并在屏幕上发布它们的方 block 。您可以想象我们只需要那里的消息:第一个节点不必等待第二个节点的答复。第一个节点将使用发布者来提供整数,而第二个节点将使用订阅者来获取这些整数并执行一个函数来发布它们的正方形。
  2. 假设您想使用 ROS 实现一个井字游戏:现在您想要 3 个节点:其中 2 个是相同的,它们代表两个玩家,而第三个是 AI 处理董事会。现在 AI 将棋盘发布给玩家,但它还需要等待答案;该答案将是当前玩家会选择的举动。这就是必须在此处使用服务的原因。

如果您确定自己理解一个包含消息的简单程序和一个包含服务的简单程序,那么您可以通过创建示例来扩展您的知识,例如上面介绍的示例。只有这样,您才能完全掌握它的全部细节。

关于python - ROS服务和消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29458467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com