ROS多用户视频延迟

scr*_*ddy 6 python ros

当几个节点订阅相同的视频主题时,我得到了延迟.

我正在使用近似时间同步器,从不同的相机收集几个图像,然后立即发布.虽然相机之间的定时可能是一个问题,但它不在这里,当我只有一个节点订阅时没有延迟.

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

Zhi*_*ang 1

我不太使用 ROS,但这是我的看法。

您能指定您使用的是哪款相机吗?这可能是相机驱动程序中的一些实现故障吗?您是否有可能有一个订阅者来接口/缓存/管理来自设备的图像馈送,而不是让需要实际图像馈送的其他节点订阅该节点?本质上是一个 Pub/Sub 广播公司。

我参与的一个项目是本地物联网摄像头视频分析。通常相机驱动程序和操作系统内核的东西不能很好地处理广播。通常有一个在驱动程序外部实现的缓存/广播组件,就像我的例子中的 Wowza Media Streamer。为了您的使用,您可以实现一些简单的流缓冲区并使其安全的并发访问。