Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add installation document of GurumDDS #2164

Merged
merged 4 commits into from
Dec 21, 2021
Merged
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
3 changes: 2 additions & 1 deletion source/Concepts/About-Middleware-Implementations.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ A ROS middleware implementation is typically made up of a few |packages| in a si

The ``<implementation_name>_cmake_module`` |package| contains any CMake Modules and functions needed to find the supporting dependencies for the middleware implementation.
For example, ``rti_connext_dds_cmake_module`` provides wrapper logic around the CMake Module shipped with RTI Connext DDS to make sure that all packages that depend on it will select the same installation of RTI Connext DDS.
Similarly, ``fastrtps_cmake_module`` includes a CMake Module to find eProsima's Fast DDS.
Similarly, ``fastrtps_cmake_module`` includes a CMake Module to find eProsima's Fast DDS and ``gurumdds_cmake_module`` includes a CMake Module to find GurumNetworks GurumDDS.
Not all implementations will have a package like this: for example, Eclipe's Cyclone DDS already provides a CMake Module which is used directly by its RMW implementation without the need of additional wrappers.

The ``rmw_<implementation_name>_<language>`` |package| implements the ``rmw`` C |API| in a particular language.
Expand All @@ -52,6 +52,7 @@ The rmw implementation for ``Fast DDS`` is on |GitHub|_ at `ros2/rmw_fastrtps_cp

The rmw implementation for ``Connext DDS`` is on |GitHub|_ at `ros2/rmw_connextdds <https://github.com/ros2/rmw_connextdds>`_.

The rmw implementation for ``GurumDDS`` is on |GitHub|_ at `ros/rmw_gurumdds <https://github.com/ros2/rmw_gurumdds>`_.

To learn more about what is required to create a new middleware implementation for ROS see this page:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ To have multiple RMW implementations available for use you must have installed t

Both C++ and Python nodes support an environment variable ``RMW_IMPLEMENTATION`` that allows the user to select the RMW implementation to use when running ROS 2 applications.

The user may set this variable to a specific implementation identifier, such as ``rmw_cyclonedds_cpp``, ``rmw_fastrtps_cpp``, or ``rmw_connextdds``.
The user may set this variable to a specific implementation identifier, such as ``rmw_cyclonedds_cpp``, ``rmw_fastrtps_cpp``, ``rmw_connextdds``, or ``rmw_gurumdds_cpp``.

For example, to run the talker demo using the C++ talker and Python listener with the Connext RMW implementation:

Expand Down
3 changes: 2 additions & 1 deletion source/Installation/DDS-Implementations.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ Installing DDS implementations

By default, ROS 2 uses DDS as its `middleware <https://design.ros2.org/articles/ros_on_dds.html>`__.
It is compatible with multiple DDS or RTPS (the DDS wire protocol) vendors.
There is currently support for eProsima's Fast DDS, RTI's Connext DDS and Eclipse Cyclone DDS.
There is currently support for eProsima's Fast DDS, RTI's Connext DDS, Eclipse Cyclone DDS, and GurumNetworks GurumDDS.
ADLINK's OpenSplice is no longer supported as of Foxy.
See https://ros.org/reps/rep-2000.html for supported DDS vendors by distribution.

For distros before Eloquent, the only bundled vendor is eProsima's Fast DDS.
Since Eloquent, both Fast DDS and Cyclone DDS are bundled, but Fast DDS is still the default.
:doc:`Working with Eclipse Cyclone DDS <DDS-Implementations/Working-with-Eclipse-CycloneDDS>` explains how to utilize Cyclone DDS.
:doc:`Working with eProsima Fast DDS <DDS-Implementations/Working-with-eProsima-Fast-DDS>` explains how to utilize Fast DDS.
:doc:`Working with GurumNetworks GurumDDS <DDS-Implementations/Working-with-GurumNetworks-GurumDDS>` explains how to utilize GurumDDS.

.. toctree::
:hidden:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
.. redirect-from::

Working-with-GurumNetworks-GurumDDS

Working with GurumNetworks GurumDDS
===================================

rmw_gurumdds is a implementation of the ROS middleware interface using GurumNetworks GurumDDS.
More information about GurumDDS is available on our website: https://gurum.cc/index_eng


Prerequisites
-------------

The following description assumes that you have completed the 'Environment setup' process
from the :doc:`Installing ROS 2 via Debian Packages <../Ubuntu-Install-Debians>` or
from the :doc:`Building ROS 2 on Ubuntu Linux <../Ubuntu-Development-Setup>`.

rmw_gurumdds requires version of GurumDDS-2.7.x.
Debian packages of GurumDDS is provided in the ROS 2 apt repositories on linux.
Windows binary installer of GurumDDS will be supported soon.

GurumDDS requires a license. See the next page: https://gurum.cc/free_trial_eng.html
After getting a license, move it to the following location.

============= ================
DDS Version License Location
============= ================
<= 2.7.2860 /etc/flame
>= 2.7.2861 /etc/gurumnet
============= ================


Install packages
----------------

The easiest way is to install from ROS 2 apt repository.
When ros-{DISTRO}-rmw-gurumdds-cpp is installed, gurumdds-2.7 is also installed.

.. code-block:: bash

sudo apt install ros-{DISTRO}-rmw-gurumdds-cpp

Build from source code
----------------------

Building from source code is also another way to install.

First, clone rosidl_typesupport_gurumdds and rmw_gurumdds in the ROS 2 workspace source directory.

.. code-block:: bash

cd ros2_ws/src
git clone https://github.com/ros2/rmw_gurumdds ros2/rmw_gurumdds
git clone https://github.com/ros2/rosidl_typesupport_gurumdds ros2/rosidl_typesupport_gurumdds

Then, install necessary packages for GurumDDS.

.. code-block:: bash

cd ..
rosdep install --from src -i --rosdistro {DISTRO}

Finally, run colcon build.

.. code-block:: bash

colcon build --symlink-install

Switch to rmw_gurumdds
------------------------

Switch from other rmw to rmw_gurumdds by specifying the environment variable.

.. code-block:: bash

export RMW_IMPLEMENTATION=rmw_gurumdds_cpp

See also: :doc:`Working with multiple RMW implementations <../../How-To-Guides/Working-with-multiple-RMW-implementations>`

Run the talker and listener
---------------------------

Now run ``talker`` and ``listener`` to test GurumDDS.
Don't forget to set up environment by setup script.

.. code-block:: bash

ros2 run demo_nodes_cpp talker

.. code-block:: bash

ros2 run demo_nodes_cpp listener