gpt4 book ai didi

python - 在 ROS 中创建 Action 服务器和客户端

转载 作者:行者123 更新时间:2023-12-04 18:26:29 26 4
gpt4 key购买 nike

我正在尝试设置一个 ROS Action 服务器和客户端来处理在 Python 和 ROS 之间发送图像(编码为 64 位字符串)(目的是使其他脚本可以从 ROS 中提取图像)。作为对所有这些(Python、Ubuntu、Bash、ROS 等)的新手,我很难确定如何做到这一点。我认为部分原因是 ROS wiki 教程/文档是线性错误的,而且这个过程只是令人费解且异常复杂。 有没有人知道任何非 ROS-wiki 相关/依赖的教程来帮助我解决这个问题?或者您可以创建一个简明的分步指南来建立这个系统吗?我一直无法找到很多与这个主题相关的具体内容 - 这让我认为它要么是一种非常不常见的用途,要么是 super 简单,我只是还没有达到那个水平。

我对解决方案的尝试基本上只是降低信息流。我希望 Python 能够读取图像,将其转换为字节(使用 b64encode),并将其发送到 ROS 以作为 Action 发布。 (因此,可以不间断地发送图像流,就像服务一样,如果我理解正确的话。)任何订阅节点(或服务器,不管怎样,不管怎样,当我得到那里)然后可以看到图像并从操作服务器中提取它们。

现在,我被告知采取行动是实现此目标的最佳方式。就我个人而言,我不明白为什么一项服务还不够(而且我至少已经获得了其中一项服务)。

再次感谢大家提供的帮助!

编辑:此处的最终应用程序用于视频流。服务器将抓取实时视频,将其转换为图像,将其更改为字节字符串,并将它们流式传输到客户端,然后客户端将它们发布到 ROS Action 服务器。

最佳答案

我认为你过于复杂了。我不会将它实现为 actionlib 服务器,尽管这是一种方法。我创建了一些类似的系统,这就是我构建它们的方式:

  1. 编写您的节点,通过发布关于某个主题的图像来流式传输视频。您可以将其实现为 actionlib 服务器,但这不是必需的。就我而言,我使用了预先存在的 raspicam_node读取 Raspberry Pi 的相机。如果您想在 Python 中实现它,请阅读 tutorial关于创建发布商。
  2. 创建一个订阅您的图像主题的节点,然后从主题消息中读取图像。同样,the tutorial显示如何创建订阅者。主要区别在于您将使用 sensor_msgs.msg 中的 CompressedImageImage 作为您的消息类型。

对于订阅方,here's an example我编写的 Python ROS 节点实现了 MJPEG 流媒体。它订阅一个主题,读取图像数据,并通过流式 HTTP 响应重新发布它。即使它是“慢速 Python”,我的延迟也不到 1 秒。

关于python - 在 ROS 中创建 Action 服务器和客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869280/

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