Latest version

v3.1.0

This release includes the following bugfixes and improvements:

Common

  • Added new compilation flags to compile each middleware examples independently.

  • Document in more detail the dependencies required for the Integration Service Core and each System Handle.

  • Fixed infinite loop problem produced when there are internal publishers and subscribers over the same topic.

  • Avoid creation of empty folders when compiling using colcon.

ROS 1 System Handle

  • Fixed bug producing a high CPU usage.

ROS 2 System Handle

  • Cross-compatibility with ROS 2 Galactic.

  • Added new compilation flag to select which ROS 2 version will be used.

WebSocket System Handle

  • Handle properly asio and websocketpp exceptions.

Previous versions

v3.0.0

This release comprises a whole restructuring and renaming of the project, formerly known as SOSS, into Integration Service.

The ROS 2 and WebSocket System Handles, which were previously included as subfolders of the main project, have been separated into independent repositories.

Important

Previous versions are considered deprecated, and it is not recommended to use them from now on.

There are some global changes that affect to all repositories; they are listed here:

  • Completed migration from SOSS to Integration Service. This, code wise, included changing the C++ namespace convention of the whole project, from soss::core to eprosima::is::core and from soss::<SH_NAME> to eprosima::is::sh::<SH_NAME>.

  • Used eProsima xTypes as the common language for the Core to speak to each System Handle.

  • Created unique pool for SubscriptionCallback and RequestCallback lambda functions. Prior to this version, they were being copied multiple among the Core and involved System Handles, leading to unnecessary copies and entities destruction problems.

  • Added new Logger class, with different logging levels: DEBUG, INFO, WARN, ERROR.

  • Debug logging traces are automatically enabled if the project is compiled in debug mode.

  • Add much more traces and unify the logging style.

  • Full API reference <api_reference> documentation using Doxygen.

  • Migrated whole test suite from Catch to Google Test.

  • Applied uncrustify rules.

  • Added brand new README section for each repository, with detailed information about the project status and features.

  • Added global compilation flags for building tests, examples, libraries and the API reference.

In relation to each repository, these are the most relevant changes for this major release:

Core

  • Add an optional YAML configuration file types section, with an idl subsection. This allows users to introduce their own data type definitions at runtime, following the IDL specification.

  • Inclusion of a types-from option in the YAML configuration file, to allow type inheritance among System Handles.

  • Created a Core GitHub action automated task for unitary and integration tests.

  • Skip blank services names.

  • JSON conversion library: handle special double/float values (Inf, NaN…).

  • JSON conversion library: boolean type support.

  • JSON conversion library: sequences and arrays.

  • Moved all example configuration files into a common folder.

  • Created utility packages and applications for testing all the examples tutorials available in the documentation.

  • Fix non-resizable containers for conversion to/from ROS 1 and ROS 2 static types definitions.

Fast DDS System Handle

  • Migrated from Fast RTPS to Fast DDS.

    Important

    From now on, only 2.X.X versions of Fast DDS will be supported.

  • Got rid of separate CMake testing project; now, it is included in the same project as the System Handle, under the test folder.

  • Created a FastDDS-SH GitHub action automated task for unitary and integration tests.

  • Added support for setting a custom DDS participant domain ID. This option can be set in the YAML specific configuration section for the fastdds middleware.

  • Added the possibility of creating the Fast DDS DomainParticipant entity with a custom XML profile.

  • Added specific compilation flags.

  • UDPv4 is now used as default transport if the user does not set a custom one.

  • Treat services request and reply types properly, even if no remap if present.

  • Fix concurrency problem detected in the client/server integration tests.

FIWARE System Handle

ROS 1 System Handle

  • Created a ROS1-SH GitHub action automated task for unitary and integration tests.

  • Added specific compilation flags.

  • Fixed SystemHandle::configure return value logic.

  • Rearranged project folders with a more consistent structure.

  • Created a new MIX generator project to ease users the task of compiling custom ROS 1 packages transformation libraries.

  • Fixed service server/client not taking into account request and reply types separately.

ROS 2 System Handle

  • Created a ROS2-SH GitHub action automated task for unitary and integration tests.

  • Added specific compilation flags.

  • Rearranged project folders to a more consistent structure.

  • Created a new MIX generator project to ease users the task of compiling custom ROS 2 packages transformation libraries.

  • Fixed service server/client not taking into account request and reply types separately.

WebSocket System Handle

  • Created a WebSocket-SH GitHub action automated task for unitary and integration tests.

  • Add specific compilation flags.

  • Added support for TCP (non-secure) connections.

  • Add the option in the YAML configuration file to disable security.

  • Add tests for server/client interaction.

  • Fixed concurrency problem when handling connections.

  • Add specific traces with more information about the connection ID. Keep track of all the opened connections and tag them with a unique ID.

v2.1.0

This release includes the following bugfixes and improvements:

ROS 2 System Handle

  • Cross-compatibility with ROS 2 Eloquent and Foxy.

WebSocket System Handle

  • Verify token with public key.

v2.0.0

This release includes the following bugfixes and improvements:

Core

  • Fix segfault when converting integer types to/from the Core language to the specific protocol.

  • JSON conversion library: fix vector-of-bool conversions.

  • JSON conversion library: allow more flexibility in converting JSON values into strings.

  • Support for ROS 1 boolean type being cast as uint8_t.

  • Fix template substitution for string templates that have an ending substring.

  • Support dispatch templates for topic names.

Fast DDS System Handle

  • Added Fast DDS System Handle, with complete support for publication/subscription and services.

ROS 1 System Handle

  • Avoid infinite waiting if a request do not reach the remote service.

  • Fixed file separator trouble with topic names containing a /.

  • Include the Core as a dependency of the genmsg package.

  • Allow, via YAML configuration parameters, to specify custom names for ROS 1 nodes.

  • Remove package.xml files, because they confuse colcon.

  • Added latching and queue_size specific topic configuration parameters.

ROS 2 System Handle

  • Avoid infinite waiting if a request do not reach the remote service.

  • Fixed file separator trouble with topic names containing a /.

  • Include the Core as a dependency of the rosidl package.

  • Support for both ROS 2 Crystal and Dashing.

  • Have CMake throw a fatal error when dependencies are missing.

  • Corrected format.

  • Support for ROS 2 domain change.

WebSocket System Handle

  • Update WebSocket System Handle tests, so the TLS handshake works.

  • Have CMake throw a fatal error when dependencies are missing.

v1.0.0

Initial version:

  • Developed basic Core structure and support for Middleware Interface Extension files.

  • Developed initial version of ROS 1, ROS 2 and WebSocket System Handles with publisher/subscriber and server/client support; and FIWARE System Handle, with publisher/subscriber support.

  • Created custom dynamic type Message class for handling content exchange among System Handles.

  • Created mock System Handle, for testing purposes.

  • Support for basic types: ints, floats, strings…