Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/_static/css/is_theme.css
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,10 @@ src:url("Fonts/742885/39974d8a-38de-4853-a4d1-778234a08061.eot?#iefix") format("
text-align: justify !important;
}

.wy-menu-vertical {
width: 320px;
}

/* Centering figures captions */
.figure.align-center .caption{
text-align: center !important;
Expand Down
12 changes: 7 additions & 5 deletions docs/api_reference/ros2_sh/api_is_ros2_sh.rst
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
.. _api_is_ros2_sh:

ROS 2 System Handle
-------------------
ROS 2 System Handles
--------------------

This section presents the API provided by the *Integration Service* :code:`is-ros2` library.

This library contains two different implementations: :code:`static` and :code:`dynamic`, each one with a different API.
That's why this section will be divided into two parts:

.. toctree::
:maxdepth: 1

factory
metapublisher
systemhandle
static/api_is_ros2_static_sh
dynamic/api_is_ros2_dynamic_sh
15 changes: 15 additions & 0 deletions docs/api_reference/ros2_sh/dynamic/api_is_ros2_dynamic_sh.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
.. _api_is_ros2_dynamic_sh:

Dynamic ROS 2 System Handle
---------------------------

This section presents the API provided by the *Integration Service* :code:`is-ros2` library when
the *Dynamic ROS 2 System Handle* is used.

.. toctree::
:maxdepth: 1

ros2middlewareexception
participant
publisher
subscriber
10 changes: 10 additions & 0 deletions docs/api_reference/ros2_sh/dynamic/participant.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.. _api_ros2_dyancmic_sh_participant:

.. rst-class:: api-ref

Participant
-----------

.. doxygenclass:: eprosima::is::sh::ros2::Participant
:project: ROS2-SH
:members:
10 changes: 10 additions & 0 deletions docs/api_reference/ros2_sh/dynamic/publisher.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.. _api_ros2_dynamic_sh_publisher:

.. rst-class:: api-ref

Publisher
---------

.. doxygenclass:: eprosima::is::sh::ros2::Publisher
:project: ROS2-SH
:members:
10 changes: 10 additions & 0 deletions docs/api_reference/ros2_sh/dynamic/ros2middlewareexception.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.. _api_ros2_dynamic_sh_ros2middlewareexception:

.. rst-class:: api-ref

ROS2MiddlewareException
-----------------------

.. doxygenclass:: eprosima::is::sh::ros2::ROS2MiddlewareException
:project: ROS2-SH
:members:
10 changes: 10 additions & 0 deletions docs/api_reference/ros2_sh/dynamic/subscriber.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.. _api_ros2_dynamic_sh_subscriber:

.. rst-class:: api-ref

Subscriber
----------

.. doxygenclass:: eprosima::is::sh::ros2::Subscriber
:project: ROS2-SH
:members:
14 changes: 14 additions & 0 deletions docs/api_reference/ros2_sh/static/api_is_ros2_static_sh.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
.. _api_is_ros2_static_sh:

Static ROS 2 System Handle
--------------------------

This section presents the API provided by the *Integration Service* :code:`is-ros2` library when the
*Static ROS 2 System Handle* is used.

.. toctree::
:maxdepth: 1

factory
metapublisher
systemhandle
2 changes: 1 addition & 1 deletion docs/examples/different_protocols/pubsub/dds-ros2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Also, to get this example working, the following requirements must be met:

* Having **ROS 2** (*Foxy* or superior) installed, with the :code:`talker-listener` example working.

* Having the **ROS 2 System Handle** installed. You can download it from the
* Having the **Static ROS 2 System Handle** installed. You can download it from the
`ROS2-SH dedicated repository <https://github.com/eProsima/ROS2-SH>`_ into the :code:`is-workspace`
where you have *Integration Service* installed:

Expand Down
2 changes: 1 addition & 1 deletion docs/examples/different_protocols/pubsub/fiware-ros2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Also, to get this example working, the following requirements must be met:

* Having **ROS 2** (*Foxy* or superior) installed, with the :code:`talker-listener` example working.

* Having the **ROS 2 System Handle** installed. You can download it from the
* Having the **Static ROS 2 System Handle** installed. You can download it from the
`ROS2-SH dedicated repository <https://github.com/eProsima/ROS2-SH>`_ into the :code:`is-workspace`
where you have *eProsima Integration Service* installed:

Expand Down
4 changes: 2 additions & 2 deletions docs/examples/different_protocols/pubsub/ros1-ros2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Another typical situation of systems using different protocols is that of
*ROS 1* and *ROS 2*.

By using *Integration Service*, this communication can be achieved with minimum user's effort.
As both a **ROS 1 System Handle** and a *ROS 2 System Handle* already exist, the communication is straightforward.
As both a **ROS 1 System Handle** and a *Static ROS 2 System Handle* already exist, the communication is straightforward.

In the example below, we show how *Integration Service* puts into communication two :code:`pub-echo` examples, one from
*ROS 2*, and the other from *ROS 1*.
Expand All @@ -27,7 +27,7 @@ Also, to get this example working, the following requirements must be met:

* Having **ROS 2** (*Foxy* or superior) installed, with the :code:`talker-listener` example working.

* Having the **ROS 2 System Handle** installed. You can download it from the
* Having the **Static ROS 2 System Handle** installed. You can download it from the
`ROS2-SH dedicated repository <https://github.com/eProsima/ROS2-SH>`_ into the
:code:`is-workspace` where you have *Integration Service* installed:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Also, to get this example working, the following requirements must be met:

* Having **ROS 2** (*Foxy* or superior) installed, with the :code:`talker-listener` example working.

* Having the **ROS 2 System Handle** installed. You can download it from the
* Having the **Static ROS 2 System Handle** installed. You can download it from the
`ROS2-SH dedicated repository <https://github.com/eProsima/ROS2-SH>`_ into the :code:`is-workspace` where you have *Integration Service* installed:

.. code-block:: bash
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/different_protocols/services/dds-server.rst
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Also, to get this example working, the following requirements must be met:

apt install ros-$<ROS2_DISTRO>-example-interfaces

* Having the **ROS 2 System Handle** installed. You can download it from the
* Having the **Static ROS 2 System Handle** installed. You can download it from the
`ROS2-SH dedicated repository <https://github.com/eProsima/ROS2-SH>`_ into the :code:`is-workspace`
where you have *Integration Service* installed:

Expand Down
2 changes: 1 addition & 1 deletion docs/examples/different_protocols/services/ros1-server.rst
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ Also, to get this example working, the following requirements must be met:

apt install ros-$<ROS2_DISTRO>-example-interfaces

* Having the **ROS 2 System Handle** installed. You can download it from the
* Having the **Static ROS 2 System Handle** installed. You can download it from the
`ROS2-SH dedicated repository <https://github.com/eProsima/ROS2-SH>`_ into the :code:`is-workspace`
where you have *Integration Service* installed:

Expand Down
2 changes: 1 addition & 1 deletion docs/examples/different_protocols/services/ros2-server.rst
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ Also, to get this example working, the following requirements must be met:

apt install ros-$<ROS2_DISTRO>-demo-nodes-cpp

* Having the **ROS 2 System Handle** installed. You can download it from the
* Having the **Static ROS 2 System Handle** installed. You can download it from the
`ROS2-SH dedicated repository <https://github.com/eProsima/ROS2-SH>`_ into the :code:`is-workspace`
where you have *Integration Service* installed:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Also, to get this example working, the following requirements must be met:

apt install ros-$<ROS2_DISTRO>-example-interfaces

* Having the **ROS 2 System Handle** installed. You can download it from the
* Having the **Static ROS 2 System Handle** installed. You can download it from the
`ROS2-SH dedicated repository <https://github.com/eProsima/ROS2-SH>`_ into the :code:`is-workspace`
where you have *Integration Service* installed:

Expand Down
2 changes: 1 addition & 1 deletion docs/examples/same_protocol/ros2_change_domain.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Also, to get this example working, the following requirements must be met:

* Having **ROS 2** (*Foxy* or superior) installed, with the :code:`talker-listener` example working.

* Having the **ROS 2 System Handle** installed. You can download it from the `dedicated repository <https://github.com/eProsima/ROS2-SH>`_
* Having the **Static ROS 2 System Handle** installed. You can download it from the `dedicated repository <https://github.com/eProsima/ROS2-SH>`_
into the :code:`is-workspace` where you have *Integration Service* installed:

.. code-block:: bash
Expand Down
2 changes: 1 addition & 1 deletion docs/examples/wan_communication/wan_tcp_dds.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Also, to get this example working, the following requirements must be met in bot

* Having **ROS 2** (*Foxy* or superior) installed, with the :code:`talker-listener` example working.

* Having the **ROS 2 System Handle** installed. You can download it from the
* Having the **Static ROS 2 System Handle** installed. You can download it from the
`ROS2-SH dedicated repository <https://github.com/eProsima/ROS2-SH>`_ into the :code:`is-workspace` where you have *Integration Service* installed:

.. code-block:: bash
Expand Down
15 changes: 14 additions & 1 deletion docs/installation_manual/external_dep.rst
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ The *ROS 1 System Handle* has the following requirements:

:raw-html:`<h4>ROS 2 System Handle</h4>`

The *ROS 2 System Handle* has the following requirements:
The *Static ROS 2 System Handle* has the following requirements:

.. list-table::
:header-rows: 1
Expand All @@ -129,6 +129,19 @@ The *ROS 2 System Handle* has the following requirements:
- `Foxy installation guide <https://docs.ros.org/en/foxy/Installation.html>`_ :raw-html:`<br />`
`Galactic installation guide <https://docs.ros.org/en/galactic/Installation.html>`_

The *Dynamic ROS 2 System Handle* has the following requirements:

.. list-table::
:header-rows: 1
:width: 100%

* - Dependency
- Description
- Installation
* - `FastDDS (v2.0.0 or superior) <https://github.com/eProsima/Fast-DDS>`_
- eProsima C++ implementation for *DDS*.
- `Binaries installation guide <https://fast-dds.docs.eprosima.com/en/latest/installation/binaries/binaries_linux.html>`_ :raw-html:`<br />`
`Sources installation guide <https://fast-dds.docs.eprosima.com/en/latest/installation/sources/sources_linux.html>`_

:raw-html:`<h4>WebSocket System Handle</h4>`

Expand Down
2 changes: 1 addition & 1 deletion docs/introduction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ Available *System Handles* up-to-date are listed below:
- https://github.com/eProsima/FIWARE-SH
* - **ROS 1 System Handle**
- https://github.com/eProsima/ROS1-SH
* - **ROS 2 System Handle**
* - **ROS 2 System Handles**
- https://github.com/eProsima/ROS2-SH
* - **WebSocket System Handle**
- https://github.com/eProsima/WebSocket-SH
Expand Down
1 change: 1 addition & 0 deletions docs/spelling_wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Noetic
nullptr
ostream
parameterizable
preprocess
preprocessor
QoS
remappings
Expand Down
4 changes: 2 additions & 2 deletions docs/user_manual/systemhandle/ros1_sh.rst
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ whole *Integration Service* product suite, there are some specific flags which a
* :code:`MIX_ROS_PACKAGES`: It accepts as an argument a list of `ROS packages <https://index.ros.org/packages/>`_,
such as :code:`std_msgs`, :code:`geometry_msgs`, :code:`sensor_msgs`, :code:`nav_msgs`...
for which the required transformation library to convert the specific *ROS 1* type definitions into *xTypes*,
and the other way around, will be built. This list is shared with the `ROS 2 System Handle <https://github.com/eProsima/ROS2-SH#compilation-flags>`_,
and the other way around, will be built. This list is shared with the `Static ROS 2 System Handle <https://github.com/eProsima/ROS2-SH#compilation-flags>`_,
meaning that the ROS packages specified in the `MIX_ROS_PACKAGES` variable will also be built for *ROS 2*
if the corresponding *System Handle* is present within the *Integration Service* workspace.
To avoid possible errors, if a certain package is only present in *ROS 1*,
Expand All @@ -114,7 +114,7 @@ whole *Integration Service* product suite, there are some specific flags which a
allowing to compile specific *ROS 1* packages independently.

For example, if a user wants to compile a certain package `dummy_msgs` independently from *ROS 1*,
but compiling `std_msgs` and `geometry_msgs` for both the *ROS 1* and *ROS 2 System Handles*,
but compiling `std_msgs` and `geometry_msgs` for both the *ROS 1* and *Static ROS 2 System Handle*,
the following command should be executed:

.. code-block:: bash
Expand Down
58 changes: 49 additions & 9 deletions docs/user_manual/systemhandle/ros2_sh.rst
Original file line number Diff line number Diff line change
@@ -1,30 +1,50 @@
.. _ros2_sh:

ROS 2 System Handle
===================
ROS 2 System Handles
====================

The *ROS 2 System Handle* can be used for two main purposes:
The *ROS 2 System Handles* can be used for two main purposes:

* Connection between a *ROS 2* application and an application running over a different middleware implementation.
This is the classic use-case for *Integration Service*.

* Connecting two *ROS 2* applications running under different Domain IDs.

Two implementations can be distinguished: *static* one based on *ROS 2* :code:`rclcpp` and *dynamic* one based on *Fast DDS*
(by the moment it is only available for the Publisher-Subscriber paradigm).

The main advantages of the *Dynamic ROS 2 System Handle* over the *Static ROS 2 System Handle* are the following ones:

* It allows using types defined by *IDL* without previously generating and installing the *ROS 2 Type Support* for that type,
which gives it a greater versatility with respect to the *Static ROS 2 System Handle*.

* It is not necessary to decide which *ROS 2 Built-in Types* you are going to use during the compilation phase,
as it allows you to use any of them.


Dependencies
^^^^^^^^^^^^

The only dependency of this *System Handle* is to have a ROS 2 installation (`Foxy <https://docs.ros.org/en/foxy/Installation.html>`_ or superior) in your system.
Depending on the *ROS 2 System Handle* mode that wants to be used the list of dependencies varies.

**Static ROS 2 System Handle**

The only dependency is to have a ROS 2 installation (`Foxy <https://docs.ros.org/en/foxy/Installation.html>`_ or superior) in your system.

**Dynamic ROS 2 System Handle**

The only dependency is to have a `Fast DDS installation <https://fast-dds.docs.eprosima.com/en/latest/installation/binaries/binaries_linux.html>`_ (v2.0.0 or superior) in your system.

Configuration
^^^^^^^^^^^^^

Regarding the *ROS 2 System Handle*, there are several specific parameters which can be configured
Regarding the *ROS 2 System Handles*, there are several specific parameters which can be configured
for the *ROS 2* middleware. All of these parameters are optional, and are suboptions of the main
five sections:

* :code:`systems`: The system :code:`type` must be :code:`ros2`. In addition to the
:code:`type` and :code:`types-from` fields,
the *ROS 2 System Handle* accepts the following specific configuration fields:
the *ROS 2 System Handles* accept the following specific configuration fields:

.. code-block:: yaml

Expand All @@ -42,11 +62,25 @@ five sections:
* :code:`domain`: Provides with an easy way to change the *Domain ID* of the ROS 2 entities created
by the *ROS 2 System Handle*.

The *Dynamic ROS 2 System Handle* has an additional parameter:

.. code-block:: yaml

systems:
ros2:
type: ros2
namespace: "/"
node_name: "my_ros2_node"
domain: 4
using: [std_msgs/String, geometry_msgs]

* :code:`using`: List of the *ROS 2* Built-in types or packages that want to be used in the communication.

Examples
^^^^^^^^

There are several examples that you can find in this documentation in which the
*ROS 2 System Handle* is employed in the communication process. Some of them are presented here:
*Static ROS 2 System Handle* is employed in the communication process. Some of them are presented here:

* :ref:`ros1_ros2_bridge_pubsub`
* :ref:`dds_ros2_bridge_pubsub`
Expand All @@ -63,7 +97,7 @@ Compilation flags

Besides the :ref:`global_compilation_flags` available for the
whole *Integration Service* product suite, there are some specific flags which apply only to the
*ROS 2 System Handle*; they are listed below:
*ROS 2 System Handles*; they are listed below:

* :code:`BUILD_ROS2_TESTS`: Allows to specifically compile the *ROS 2 System Handle* unitary and
integration tests. It is useful to avoid compiling each *System Handle*'section test suite present
Expand All @@ -80,6 +114,12 @@ whole *Integration Service* product suite, there are some specific flags which a
the compilation environment; this means that if the last *ROS* environment sourced corresponds to *ROS 1*,
the compilation process will stop and warn the user about it.

* :code:`IS_ROS2_SH_MODE`: This flag is to decide which *ROS 2 System Handle* mode will be compiled, as the
static and dynamic modes are exclusive which means that they cannot be compiled at the same time.
It accepts two different values: :code:`static` or :code:`dynamic`.

The following flags are only applicable for the *Static ROS 2 System Handle*:

* :code:`MIX_ROS_PACKAGES`: It accepts as an argument a list of `ROS packages <https://index.ros.org/packages/>`_,
such as :code:`std_msgs`, :code:`geometry_msgs`, :code:`sensor_msgs`, :code:`nav_msgs`...
for which the required transformation library to convert the specific *ROS 2* type definitions into *xTypes*,
Expand Down Expand Up @@ -108,7 +148,7 @@ whole *Integration Service* product suite, there are some specific flags which a
allowing to compile specific *ROS 2* packages independently.

For example, if a user wants to compile a certain package `dummy_msgs` independently from *ROS 2*,
but compiling `std_msgs` and `geometry_msgs` for both the *ROS 1* and *ROS 2 System Handles*,
but compiling `std_msgs` and `geometry_msgs` for both the *ROS 1* and *Static ROS 2 System Handle*,
the following command should be executed:

.. code-block:: bash
Expand Down
Loading