当几个节点订阅相同的视频主题时,我得到了延迟.
我正在使用近似时间同步器,从不同的相机收集几个图像,然后立即发布.虽然相机之间的定时可能是一个问题,但它不在这里,当我只有一个节点订阅时没有延迟.
camtop_sub = message_filters.Subscriber('cam1/usb_cam1/image_raw', Image)
camfront_sub = message_filters.Subscriber('cam2/usb_cam1/image_raw', Image)
ts_log = message_filters.ApproximateTimeSynchronizer([cam1_sub, cam2_sub], 10, 1)
ts_log.registerCallback(self.log_callback)
Run Code Online (Sandbox Code Playgroud)
我的项目结构的方式,我需要能够让多个节点检索最新的图像文件.
关于如何在没有延迟的情况下完成此任何建议?现在大概是500毫秒.
我注意到其他人建议通过rospy.Subscriber类中的buff_size参数增加队列的缓冲区大小,但是没有这个参数用于ApproximateTimeSynchronizer
我不太使用 ROS,但这是我的看法。
您能指定您使用的是哪款相机吗?这可能是相机驱动程序中的一些实现故障吗?您是否有可能有一个订阅者来接口/缓存/管理来自设备的图像馈送,而不是让需要实际图像馈送的其他节点订阅该节点?本质上是一个 Pub/Sub 广播公司。
我参与的一个项目是本地物联网摄像头视频分析。通常相机驱动程序和操作系统内核的东西不能很好地处理广播。通常有一个在驱动程序外部实现的缓存/广播组件,就像我的例子中的 Wowza Media Streamer。为了您的使用,您可以实现一些简单的流缓冲区并使其安全的并发访问。
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |