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

问题描述 投票:1回答:1

对于ROS来说还很陌生,但一直无法在搜索中找到此信息。

我们正在构建一种仪器,需要使用100Mbit受限电缆通过网络传输大型数据流。最好我们需要传输RAW图像(每张约10MB),或者我们可以做一些无损压缩,从而使每张约5MB。

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

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

谢谢!

python zeromq ros
1个回答
0
投票

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大型数据流中<something>的限制是什么?

在这里,我们总是与以下三项魔鬼混战:

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

在ROS域中,作为用于协调控制环约束子系统的系统,还有另一个问题-不满足“及时性”会导致控制失败并进入不稳定的区域。

跨越边界时发生的无数示例-从生产线陷入恐慌,导致立即紧急全停状态,到损坏的工具,产品,设备和持续碰撞,在仍然持续的操作过程中仍然崩溃(当碰撞检测和紧急全站仪未实现安全)。


Q将诸如ZeroMQ之类的单独协议用于此任务会更好吗?

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

如果Devil-mix的Power部分允许,则[[ZeroMQ具有出色的性能可伸缩性]

ZeroMQ对于Devil-mix的Errors支路具有出色的性能-我们得到零错误的保证-它可以将消息(有效负载)作为原始内容的逐位相同副本进行传递,或者什么都没有。该保修可能看起来很奇怪,对于模糊或嘈杂的图像肯定是过大了-但是,这是不因错误检测/有限恢复而导致的其他[[Power和Time-不确定性问题的合理策略。但是,这使我们可以自由选择,如何在给定的受限制的Time-和Power域内处理(如果需要),主要职责-ROS控制环的稳定性-具有如果从时间戳或单调序数索引等中间接检测到错误,则丢失或重新传输请求的有效负载

相反,ROS Topics仅限于单个PUB/SUB正式通信模式原型,并且固定为使用TCPROS传输类(ZeroMQ可以使用更快的,无L3 +协议的协议栈)

{ inproc:// | ipc:// }

,或者,如果需要,甚至可以扩展到军用标准的保证交付或分布式网格计算tipc://或系统管理程序协调的vmci://传输)或UDPROS,目前可在与roscpp相比,仅TCPROS有损耗,但延迟较低。
© www.soinside.com 2019 - 2024. All rights reserved.