Modal Pipe Architecture (MPA)
The vast majority of VOXL services, tools, and utilities require some inter-process communication to function. For example, voxl-qvio-server consumes camera data from voxl-camera-server and IMU data from voxl-imu-server to provide Visual Inertial Odometery VIO. We use POSIX pipes as the underlying transport mechanism for this inter-process communication due to their robustness, efficiency, and portability. This structure is called Modal Pipe Architecture, or simply MPA.
To provide standardization and ease of use, all MPA services use the C/C++ library libmodal_pipe to create, publish, and subscribe to MPA data.