确认图像已发布到R

2024-10-03 00:27:01 发布

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

我一直在尝试让一个图像发布到ROS(使用Python/rospy),虽然我认为我有正确的方法,但我很难确认它。使用

rosrun image_view image_view image:=(topic)

似乎什么也没显示出来。我也试过rqtbag,但我不知道它是如何工作的,除了它不会显示已发布的内容。在

粘贴当前代码之前的几点提示:

  1. 我现在使用的代码是基于我以前工作的代码。我使用了一个类似的设置来向ROS发布文本图像,这些输出相当可靠。在
  2. 这里稍作修改。这段代码的大部分是on_message函数的一部分,因为这在实现时都是通过MQTT运行的。(逻辑是在一个系统上获取图像->编码->传输到其他系统->解码->发布到ROS。)
  3. 我在Ubuntu上使用python2.7和rosindigo。在

无需进一步说明,我当前用于发布的代码:

^{pr2}$

我正在使用一个基本的监听函数来尝试查看发生了什么(这是在我在一个单独的终端中执行的另一个脚本中):

def listener():
    rospy.init_node('listener', anonymous=True)
    rospy.Subscriber("/BringInAnImage", Image, callback)
    rospy.spin()

if __name__ == '__main__':
    listener()

回调只是打印出接收到的图像。在


Tags: 方法函数代码图像imageview内容topic
1条回答
网友
1楼 · 发布于 2024-10-03 00:27:01

如何检查主题xyz是否发布了内容

要检查消息是否真的已发布,可以使用rostopic命令。 在终端中运行以下命令以打印在指定主题上发布的所有内容。这是检查是否有已发布内容的最简单方法。在

rostopic echo <topic_name>

请参阅ROS wiki以了解rostopic可以做的更多有用的事情。在

为什么图像视图没有接收到图像?

虽然基本上是正确的,但是由于代码中不太明显但致命的问题,任何订阅者都不会收到您的图像:您在初始化发布服务器(pub2)后立即使用它。订阅服务器需要一些时间注册到新的发布服务器,并且在发布映像之前不会准备就绪(另请参见this answer)。在

➔不要在需要发布服务器之前初始化它,而是在初始化节点时从一开始就进行初始化。

相关问题 更多 >