An efficient IPC for ROS with partial serialization
We propose an efficient IPC technique called TZC (Towards Zero-Copy). As a core component of TZC, we design a novel algorithm called partial serialization. Our formulation can generate messages that can be divided into two parts. During message transmission, one part is transmitted through a socket and the other part uses shared memory. The part within shared memory is never copied or serialized during its lifetime. Our tests show that when the message size is 4MB, TZC can reduce the overhead of ROS IPC from tens of milliseconds to hundreds of microseconds.
A more detailed report can be found: https://arxiv.org/abs/1810.00556
A video of applications is at https://github.com/Jrdevil-Wang/tzc_transport/blob/master/TZC.mp4
Directory description:
/example | Code examples using TZC. |
/include/tzc_transport | Core TZC code. |
/include/sensor_msgs | Example of generated message header file. |
/scripts | The TZC message generator. |
/templates | The template file used by message generator. |
If you are interested, please cite our IROS 2019 paper:
@inproceedings{DBLP:conf/iros/0001THM019,
author = {Yu{-}Ping Wang and
Wende Tan and
Xu{-}Qiang Hu and
Dinesh Manocha and
Shi{-}Min Hu},
title = {{TZC:} Efficient Inter-Process Communication for Robotics Middleware
with Partial Serialization},
booktitle = {2019 {IEEE/RSJ} International Conference on Intelligent Robots and
Systems, {IROS} 2019, Macau, SAR, China, November 3-8, 2019},
pages = {7805--7812},
publisher = {{IEEE}},
year = {2019},
url = {https://doi.org/10.1109/IROS40897.2019.8968462},
doi = {10.1109/IROS40897.2019.8968462},
timestamp = {Fri, 31 Jan 2020 13:28:16 +0100},
biburl = {https://dblp.org/rec/conf/iros/0001THM019.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}