[ros-users] [Discourse.ros.org] [ROS Projects] TZC: Efficient Inter-Process Communication for Robotics Middleware with Partial Serialization

Yu Ping Wang ros.discourse at gmail.com
Tue Oct 2 15:42:44 UTC 2018



Thanks for your comments! Here is some responses. I hope these responses will make my point clearer.

1. We have argued in Section II.C that intra-process communication (such as nodelets) is the only efficient solution for now. But the obvious drawback of intra-process communication is fault isolation. Since all modules run within the same process, when any module crashes, the entire system crashes. There are applications that pay more attention to reliability and TZC can provide an option.

2. Combining socket and shared-memory may inherit their disadvantages, but also their  advantages. By using socket for the control part, we can use compatible select/poll notification interfaces; and by using shared-memory for the data part, we can skip serialization for most of the data. As for the disadvantages you have mentioned, I don't consider them serious because:
2.1. If a subscriber need to change the message, it can always copy the message and edit its copy and suffer the copying time. But there are practical callbacks that need not change the message and TZC provides an optimization.
2.2. Shared-memory IPC does not provide proper synchronization (or notification) mechanism. We have to notify the subscribers through another channel. The control part is used for that and it is usually small enough (although it is larger than a reference) to omit its serialization latency.

3. The latency improvements are to be expected, *IF* we can skip those serialization operations. How to skip serialization for inter-process communication is the main contribution of this paper.

4. As shown in the example code, TZC generates new message types and works per topic. You can always publish ROS (1 or 2) messages without TZC.

5. About why split the message.  ROS transmits all message data through socket and ETHZ-ASL transmits all message data through shared-memory, but both of them can not avoid serialization. We split the message to avoid serialization of most of the message data (i.e. the data part).





---
[Visit Topic](https://discourse.ros.org/t/tzc-efficient-inter-process-communication-for-robotics-middleware-with-partial-serialization/6264/9) or reply to this email to respond.




More information about the ros-users mailing list