eProsima / Integration-Service

Apache License 2.0
66 stars 28 forks source link

Introduction

Integration Service CI Status

eProsima Integration Service is a Linux tool that enables communication among an arbitrary number of protocols that speak different languages.

This project was born as a joint effort between Open Robotics and eProsima, which nowadays is in charge of maintaining it.

Integration Service general architecture

It works by translating the languages of the systems involved to a common representation language that follows the Extensible and Dynamic Topic Types for DDS (xTypes) standard by the OMG; specifically, Integration Service bases its intercommunication abilities on eProsima's open source implementation for the xTypes protocol, that is, eProsima xTypes.

The translation is mediated by system-specific plugins, or System Handles, allowing to communicate the middlewares involved with the core, that speaks the common xTypes representation language. This is carried out by interfacing each entity in the user application with a complimentary "mirror" proxy in the System Handle (SH), able to communicate with the former according to either a pub/sub or service pattern. Namely:

Integration Service can be launched using the command line, as follows:

~/is_ws$ integration-service <filename>.yaml

It is recommended to use colcon to build and install the Integration Service executable and its associated middleware plugins; for more information, please refer to the Installation manual section in the documentation chapter of this document.

Commercial support

Looking for commercial support? Write us to info@eprosima.com

Find more about us at eProsima’s webpage.

Quick start

Download here the Integration Service docker image that contains pre-installed Fast DDS, ROS 1, ROS 2 and WebSocket System Handles and the documentation examples.

Dependencies

This section provides a list of the dependencies needed in order to compile Integration Service. These requirements will be different depending on the System Handles you want to use.

Integration Service Core

FastDDS System Handle

Fiware System Handle

ROS 1 System Handle

ROS 2 System Handle

WebSocket System Handle

Configuration

The Integration Service can be configured during runtime by means of a dedicated YAML file. This configuration file must follow a specific syntax, meaning that it is required that a number of compulsory section are opportunely filled for it to successfully configure and launch an Integration Service instance, while others are optional. Both kinds are listed and reviewed below:

Finally, it is important to remark that both the services and topics sections are not mandatory, meaning that an Integration Service instance can be launched only for publication/subscription bridging, or solely to perform service type communications. However, they are not exclusive, and can coexist under the same YAML configuration file.

Supported middlewares and protocols

All of the currently protocols are integrated within Integration Service by means of dedicated plugins or System Handles.

The complete System Handles set for the Integration Service is currently composed of the following protocols:

Additionally, creating a System Handle is a relatively easy task and allows to integrate a new protocol to the Integration System infrastructure, which automatically provides the new protocol with communication capabilities towards all of the aforementioned middlewares and protocols.

For more information, please refer to the System Handle user manual and System Handle API reference sections, available in the official documentation.

Compilation flags

Integration Service uses CMake for building and packaging the project. There are several CMake flags, which can be tuned during the configuration step:

Documentation

The official documentation for eProsima Integration Service is hosted by Read the Docs, and comprises the following sections:

License

This repository is open-sourced under the Apache-2.0 license. See the LICENSE file for more details.