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 takes
no 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 分支具有出色的属性 - 我们得到零错误的保证 - 它可以将消息(有效负载)作为位传递 -对原始内容的比特完全相同的副本,或者什么都没有。这个保证可能看起来很奇怪,对于模糊或嘈杂的图像来说肯定是矫枉过正 - 然而,这是一个没有额外 Power 和 Time 的合理策略 - error-detection/limited-recovery 导致的不确定性问题。然而,它让我们可以自由选择,如何处理(如果需要),在给定的、受限的 Time- 和 Power- 域内,主要职责 - ROS 控制环的稳定性 - 缺少或重新传输请求的有效载荷,给定 错误 是从时间戳或单调序数索引等中间接检测到的[=27] =]
ROS Topics
,相反,仅限于单个 PUB/SUB
正式通信模式原型,并且固定使用 TCPROS
传输-class ( ZeroMQ 可以使用更快的 L3+ 无堆栈协议 { inproc:// | ipc:// }
或者,如果需要,甚至可以扩展到军用标准保证交付或分布式网格计算 tipc://
或管理程序编排的 vmci://
传输)或 UDPROS
,目前仅在 roscpp
中可用且有损,但与 TCPROS
相比具有更低的延迟。
对 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 takes
no 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 分支具有出色的属性 - 我们得到零错误的保证 - 它可以将消息(有效负载)作为位传递 -对原始内容的比特完全相同的副本,或者什么都没有。这个保证可能看起来很奇怪,对于模糊或嘈杂的图像来说肯定是矫枉过正 - 然而,这是一个没有额外 Power 和 Time 的合理策略 - error-detection/limited-recovery 导致的不确定性问题。然而,它让我们可以自由选择,如何处理(如果需要),在给定的、受限的 Time- 和 Power- 域内,主要职责 - ROS 控制环的稳定性 - 缺少或重新传输请求的有效载荷,给定 错误 是从时间戳或单调序数索引等中间接检测到的[=27] =]
ROS Topics
,相反,仅限于单个 PUB/SUB
正式通信模式原型,并且固定使用 TCPROS
传输-class ( ZeroMQ 可以使用更快的 L3+ 无堆栈协议 { inproc:// | ipc:// }
或者,如果需要,甚至可以扩展到军用标准保证交付或分布式网格计算 tipc://
或管理程序编排的 vmci://
传输)或 UDPROS
,目前仅在 roscpp
中可用且有损,但与 TCPROS
相比具有更低的延迟。