Many robotic systems utilize middleware layers based on the publisher and subscriber model to coordinate activities of different parts of the system; these middlewares are designed to enable both inter- and intra-compute node connectivity. In general, a middleware layer needs to provide discovery, data encapsulation, and transport services. In many applications, the concept of prioritization can also be modeled to reserve access to a limited communication channel and ensure high-priority data (such as an emergency stop request) is given preferred treatment. Contemporary examples include ROS[1]}, OROCOS[2]}, and YARP[3]}. While we use ROS as a case study of a publish/subscribe architecture to motivate the requirements of a transport layer, any architecture that utilizes a centralized directory-like service is likely to face similar limitations.
