我一直在尝试让一个图像发布到ROS(使用Python/rospy),虽然我认为我有正确的方法,但我很难确认它。使用
rosrun image_view image_view image:=(topic)
似乎什么也没显示出来。我也试过rqtbag,但我不知道它是如何工作的,除了它不会显示已发布的内容。在
粘贴当前代码之前的几点提示:
on_message
函数的一部分,因为这在实现时都是通过MQTT运行的。(逻辑是在一个系统上获取图像->编码->传输到其他系统->解码->发布到ROS。)无需进一步说明,我当前用于发布的代码:
^{pr2}$我正在使用一个基本的监听函数来尝试查看发生了什么(这是在我在一个单独的终端中执行的另一个脚本中):
def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber("/BringInAnImage", Image, callback)
rospy.spin()
if __name__ == '__main__':
listener()
回调只是打印出接收到的图像。在
如何检查主题xyz是否发布了内容
要检查消息是否真的已发布,可以使用
rostopic
命令。 在终端中运行以下命令以打印在指定主题上发布的所有内容。这是检查是否有已发布内容的最简单方法。在请参阅ROS wiki以了解
rostopic
可以做的更多有用的事情。在为什么图像视图没有接收到图像?
虽然基本上是正确的,但是由于代码中不太明显但致命的问题,任何订阅者都不会收到您的图像:您在初始化发布服务器(
pub2
)后立即使用它。订阅服务器需要一些时间注册到新的发布服务器,并且在发布映像之前不会准备就绪(另请参见this answer)。在➔不要在需要发布服务器之前初始化它,而是在初始化节点时从一开始就进行初始化。
相关问题 更多 >
编程相关推荐