Proxying ROS communications -- enabling containerized ROS deployments in distributed multi-host environments
Arne Wendt, Thorsten Schüppstuhl
TL;DR
This paper tackles the challenge of running ROS in containerized, distributed multi-host environments where bidirectional communication must span containerized and non-containerized nodes. It analyzes ROS XMLRPC Master/Slave APIs and TCPROS data transport, evaluates Docker networking modes, and demonstrates that none of the stock modes satisfy all deployment requirements. To address this gap, it proposes a layer-7 ROS proxy (rosproxy) that runs in a container, transparently intercepting and rewriting XMLRPC calls and proxying TCPROS connections to enable cross-segment ROS communication without modifying nodes or Docker. The solution is runtime-agnostic, improves deployment reproducibility at the edge, and could inform future work with ROS 2 DDS-based transports and cloud robotics scenarios.
Abstract
With the ability to use containers at the edge, they pose a unified solution to combat the complexity of distributed multi-host ROS deployments, as well as individual ROS-node and dependency deployment. The bidirectional communication in ROS poses a challenge to using containerized ROS deployments alongside non-containerized ones spread over multiple machines though. We will analyze the communication protocol employed by ROS, and the suitability of different container networking modes and their implications on ROS deployments. Finally, we will present a layer 7 transparent proxy server architecture for ROS, as a solution to the identified problems. Enabling the use of ROS not only in containerized environments, but proxying ROS between network segments in general.
