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

ROS: Is ZeroMQ better for large data streams, e.g. raw images, than native image topic?

对 ROS 相当陌生,但一直无法找到此信息搜索。

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

这对于具有原生图像主题的 ROS 来说是否完美,或者像 ZeroMQ 这样的单独协议是否更适合这项任务? ROS 对大数据流的限制是什么?

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

谢谢!

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 takesno less ~0.4 [s]

Q : What are the limitations in <something> on large data streams?

在这里我们总是打三倍的恶魔组合:

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

在 ROS 域中,作为协调控制环的受限子系统的系统,还有一个问题 - 不满足 "in-time-ness" 会导致控制失败,进入主要不稳定的区域。

越过这个边界的例子不胜枚举——从生产线陷入恐慌,导致立即紧急全停,到工具、产品、设备损坏,继续碰撞,还在继续的过程中崩溃操作(当碰撞检测和紧急全停未安全实施时)。


Q : would a separate protocol such as ZeroMQ be better for this task?

ZeroMQ 具有出色的性能(在 Devil-mix 的 Time 段上并没有增加太多,但它始终取决于拥有(in-)足够的资源( Power 顺利处理)

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

ZeroMQ 对 Devil-mix 的 Errors 分支具有出色的属性 - 我们得到零错误的保证 - 它可以将消息(有效负载)作为位传递 -对原始内容的比特完全相同的副本,或者什么都没有。这个保证可能看起来很奇怪,对于模糊或嘈杂的图像来说肯定是矫枉过正 - 然而,这是一个没有额外 PowerTime 的合理策略 - error-detection/limited-recovery 导致的不确定性问题。然而,它让我们可以自由选择,如何处理(如果需要),在给定的、受限的 Time- 和 Power- 域内,主要职责 - ROS 控制环的稳定性 - 缺少或重新传输请求的有效载荷,给定 错误 是从时间戳或单调序数索引等中间接检测到的[=27] =]

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