ROS:ZeroMQ 是否比原生图像主题更适合大数据流,例如原始图像?

Jes*_*per 3 python zeromq ros

对 ROS 相当陌生,但一直无法找到这些信息。

我们正在构建一个仪器,我们需要在 100Mbit 的有限电缆上通过网络传输大量数据流。最好我们需要传输 RAW 图像(每张约 10MB),或者我们可以进行一些无损压缩,每张大约 5MB。

这对于具有本机图像主题的 ROS 来说完全没问题,还是像 ZeroMQ 这样的单独协议更适合这项任务?ROS 在大数据流上有哪些限制?

希望有知识的人能花点时间分享一些经验。

谢谢!

use*_*197 5

10E6 [B] over a private, 100% free 100E6 [b/s] channel takes no less ~0.8 [s]
_5E6 [B] over a private, 100% free 100E6 [b/s] channel takes no less ~0.4 [s]

Q :在大数据流上有什么限制<something>

在这里,我们总是与三重魔鬼组合作斗争:

功率(用于数据处理,不排除压缩 + RAM-I/O) +时间(延迟 + 跨一系列传输通道的 E2E 数据传输的抖动) +错误(内容交付的不确定性、完整性和真实性) E2E 数据传输路径)10[MB]->5[MB]



在 ROS 域中,作为协调控制回路受约束子系统的系统,还有一个问题——不满足“及时性”会导致控制失败进入主要不稳定的领域。

越过这个边界时发生的事情不胜枚举——从生产线陷入恐慌,导致立即紧急全停状态,到损坏的工具、产品、设备和继续碰撞,在继续操作时仍然崩溃(当碰撞时——检测和紧急完全停止没有安全实施)。


像 ZeroMQ 这样的单独协议是否更适合这项任务?

ZeroMQ 具有出色的性能(在魔鬼混合的时间腿上没有增加太多,但它始终取决于拥有(不足)足够的资源(顺利处理的力量

ZeroMQ 具有出色的性能可扩展性,当然,如果Devil-mix的Power腿允许的话。

ZeroMQ对 Devil-mix的Errors 部分具有出色的属性——我们得到零错误的保证——它要么将消息(有效负载)作为原始内容的逐位相同副本提供,要么什么都不提供。这种保证可能看起来很奇怪,对于模糊或嘈杂的图像来说肯定是矫枉过正 - 然而,由于错误检测/有限恢复,它是一个公平的策略,没有额外的功率时间不确定性问题。然而,它让我们自由选择,如何处理(如果需要),在给定的、受限的、时间功率域内,主要职责 - ROS 控制回路的稳定性 - 丢失或重新传输请求的有效载荷,给予错误 是从时间戳或单调序数索引等间接检测到的。

Topics相反,ROS仅限于单一的PUB/SUB正式通信模式原型,并且固定使用TCPROS传输类(ZeroMQ 可以使用更快的 L3+协议无堆栈,{ inproc:// | ipc:// }或者,如果需要,甚至扩展到 mil- std 保证交付或分布式网格计算tipc://或管理程序编排的vmci://传输 ) 或UDPROS,目前roscpp仅可用且有损,但与TCPROS.