为什么 ROS 发布者不发布第一条消息?

黑发

我有一个发布者发布了两个主题为“图像”和“深度”的图像,一个订阅者正在收听这两个主题。

发布者从两个文件夹中读取图像并在同一个循环中发布这两个文件夹。每个图像都有一个对应的深度,并且这两个映射到相同的名称。发布率为1hz。

订阅者没有得到第一对图像。我试图转储订阅文件夹的图像。除了第一对图像之外,所有发布的图像都被转储了。

这是发布者的代码

import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
import cv2
import os


def talker():

    rospy.init_node('talker', anonymous=True)
    rate = rospy.Rate(1) # 1hz
    bridge = CvBridge()
    hello_str = "hello world %s" % rospy.get_time()
    rospy.loginfo(hello_str)
    path = "/home/test_img/"
    imglist = os.listdir(path)
    path_depth = "/home/out_depth/"


    for i in range(0,len(imglist)):
        topic = 'image'
        print(topic)
        pub = rospy.Publisher(topic, Image, queue_size=10)
        fn = path+imglist[i]
        print(fn)
        img = cv2.imread(fn)
        imgMsg = bridge.cv2_to_imgmsg(img, "bgr8")
        pub.publish(imgMsg)




        topic = 'depth'
        print(topic)
        pub = rospy.Publisher(topic, Image, queue_size=10)
        fn = path_depth+imglist[i]
        print(fn)
        img = cv2.imread(fn)
        imgMsg = bridge.cv2_to_imgmsg(img, "bgr8")
        pub.publish(imgMsg)
        rate.sleep()




if __name__ == '__main__':
    try:
        talker()
    except rospy.ROSInterruptException:
        pass

这是订阅者的代码

import rospy
import numpy as np
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
import cv2
from datetime import datetime


def callback(data):


    bridge = CvBridge()
    # Convert your ROS Image message to OpenCV2
    cv2_img = bridge.imgmsg_to_cv2(data, "bgr8")
    cv2.imwrite('out_rgbd/'+datetime.now().strftime("%I:%M%S%f")+".jpg", cv2_img)

def listener():

    # In ROS, nodes are uniquely named. If two nodes with the same
    # name are launched, the previous one is kicked off. The
    # anonymous=True flag means that rospy will choose a unique
    # name for our 'listener' node so that multiple listeners can
    # run simultaneously.
    rospy.init_node('listener', anonymous=True)



    topic = 'image'
    print(topic)
    rospy.Subscriber(topic, Image, callback)

    topic = 'depth'
    print(topic)
    rospy.Subscriber(topic, Image, callback)

    # spin() simply keeps python from exiting until this node is stopped
    rospy.spin()

if __name__ == '__main__':
    listener()

在执行发布者时,会列出所有图像(来自 print(fn) 行)。但是订阅者没有得到第一对图像。

我试过使用“rosrecord”记录消息。它也没有获得第一对。

原因可能是什么?

Ben

latch=True在初始化发布者时尝试设置
有关更多信息,请参阅https://answers.ros.org/question/195348/about-subscriber-structure-and-latch-on-publisher/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Kafka消费者不听第一条消息?

来自分类Dev

ros python发布者/订阅者

来自分类Dev

为什么此Elixir脚本仅打印第一条消息?

来自分类Dev

为什么我的第一条机器人消息(通过REST API)显示在我的第一条线程消息之前?

来自分类Dev

检查服务器收到的第一条消息的最佳方法是什么?

来自分类Dev

为什么只从该PHP数组返回第一条记录?

来自分类Dev

为什么第一条BIOS指令位于0xFFFFFFF0(RAM的“顶部”)?

来自分类Dev

为什么只从该PHP数组返回第一条记录?

来自分类Dev

SQL:为什么“CREATE VIEW”必须是查询批处理中的第一条语句?

来自分类Dev

订阅服务器和发布者在ROS中的一个文件中

来自分类Dev

为什么发布者在Pika RabbitMQ中声明队列a?

来自分类Dev

为什么我的签字,点击一次应用程序说它未知发布者

来自分类Dev

流口水的问题,为什么流口水只看到我的第一条规则?

来自分类Dev

为什么我不能在for循环的第一条语句中包含2个变量

来自分类Dev

NATS 发布者能否将一条消息发送到多个队列中?

来自分类Dev

Paho python客户端为什么发布短消息而不发布长消息

来自分类Dev

保存后Ros发布者无法使用V-Rep

来自分类Dev

保存后Ros发布者无法使用V-Rep

来自分类Dev

为什么python只打印一条错误消息?

来自分类Dev

为什么我只收到一条消息?

来自分类Dev

为什么路线要求适用于我的第一条路线而不适用于我的第二条路线?

来自分类Dev

为什么只有我的第二条if语句给出结果并覆盖我的第一条if语句?

来自分类Dev

为什么Flux.flatMap()不等待内部发布者完成?

来自分类Dev

为什么“用户默认值”发布者会多次触发

来自分类Dev

为什么在UAC提示下仍然看到未知的发布者?

来自分类Dev

为什么即使在取消后发布者还要发送新项目?

来自分类Dev

DirectProcessor 和 UnicastProcessor 可以在不应该订阅上游发布者时订阅。为什么?

来自分类Dev

为什么要发布4.9.77内核而不发布4.14.14内核?

来自分类Dev

在ROS之外使用ROS消息类

Related 相关文章

  1. 1

    为什么Kafka消费者不听第一条消息?

  2. 2

    ros python发布者/订阅者

  3. 3

    为什么此Elixir脚本仅打印第一条消息?

  4. 4

    为什么我的第一条机器人消息(通过REST API)显示在我的第一条线程消息之前?

  5. 5

    检查服务器收到的第一条消息的最佳方法是什么?

  6. 6

    为什么只从该PHP数组返回第一条记录?

  7. 7

    为什么第一条BIOS指令位于0xFFFFFFF0(RAM的“顶部”)?

  8. 8

    为什么只从该PHP数组返回第一条记录?

  9. 9

    SQL:为什么“CREATE VIEW”必须是查询批处理中的第一条语句?

  10. 10

    订阅服务器和发布者在ROS中的一个文件中

  11. 11

    为什么发布者在Pika RabbitMQ中声明队列a?

  12. 12

    为什么我的签字,点击一次应用程序说它未知发布者

  13. 13

    流口水的问题,为什么流口水只看到我的第一条规则?

  14. 14

    为什么我不能在for循环的第一条语句中包含2个变量

  15. 15

    NATS 发布者能否将一条消息发送到多个队列中?

  16. 16

    Paho python客户端为什么发布短消息而不发布长消息

  17. 17

    保存后Ros发布者无法使用V-Rep

  18. 18

    保存后Ros发布者无法使用V-Rep

  19. 19

    为什么python只打印一条错误消息?

  20. 20

    为什么我只收到一条消息?

  21. 21

    为什么路线要求适用于我的第一条路线而不适用于我的第二条路线?

  22. 22

    为什么只有我的第二条if语句给出结果并覆盖我的第一条if语句?

  23. 23

    为什么Flux.flatMap()不等待内部发布者完成?

  24. 24

    为什么“用户默认值”发布者会多次触发

  25. 25

    为什么在UAC提示下仍然看到未知的发布者?

  26. 26

    为什么即使在取消后发布者还要发送新项目?

  27. 27

    DirectProcessor 和 UnicastProcessor 可以在不应该订阅上游发布者时订阅。为什么?

  28. 28

    为什么要发布4.9.77内核而不发布4.14.14内核?

  29. 29

    在ROS之外使用ROS消息类

热门标签

归档