diff --git a/source/Tutorials/Advanced/Discovery-Server/Discovery-Server.rst b/source/Tutorials/Advanced/Discovery-Server/Discovery-Server.rst index 749889c1596..0d48b43cba1 100644 --- a/source/Tutorials/Advanced/Discovery-Server/Discovery-Server.rst +++ b/source/Tutorials/Advanced/Discovery-Server/Discovery-Server.rst @@ -103,9 +103,19 @@ Execute the listener demo, to listen to the ``/chatter`` topic. In a new terminal, set the environment variable ``ROS_DISCOVERY_SERVER`` to the location of the discovery server. (Do not forget to source ROS 2 in every new terminal) -.. code-block:: console +.. tabs:: + + .. group-tab:: Linux + + .. code-block:: console + + export ROS_DISCOVERY_SERVER=127.0.0.1:11811 - export ROS_DISCOVERY_SERVER=127.0.0.1:11811 + .. group-tab:: Windows + + .. code-block:: console + + set ROS_DISCOVERY_SERVER=127.0.0.1:11811 Launch the listener node. Use the argument ``--remap __node:=listener_discovery_server`` to change the node's name for this tutorial. @@ -121,9 +131,22 @@ Launch talker node Open a new terminal and set the ``ROS_DISCOVERY_SERVER`` environment variable as before so that the node starts a discovery client. +.. tabs:: + + .. group-tab:: Linux + + .. code-block:: console + + export ROS_DISCOVERY_SERVER=127.0.0.1:11811 + + .. group-tab:: Windows + + .. code-block:: console + + set ROS_DISCOVERY_SERVER=127.0.0.1:11811 + .. code-block:: console - export ROS_DISCOVERY_SERVER=127.0.0.1:11811 ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker_discovery_server You should now see the talker publishing "hello world" messages, and the listener receiving these messages. @@ -186,15 +209,37 @@ In several terminals, run the following code to establish a communication with r ``--server-id N`` means server with id N. When referencing the servers with ``ROS_DISCOVERY_SERVER``, server ``0`` must be in first place and server ``1`` in second place. -.. code-block:: console +.. tabs:: - export ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" - ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker + .. group-tab:: Linux -.. code-block:: console + .. code-block:: console + + export ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" + ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker + + .. group-tab:: Windows + + .. code-block:: console + + set ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" + ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker + +.. tabs:: + + .. group-tab:: Linux - export ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" - ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener + .. code-block:: console + + export ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" + ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener + + .. group-tab:: Windows + + .. code-block:: console + + set ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" + ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener Now, if one of these servers fails, there will still be discovery capability available and nodes will still discover each other. @@ -214,15 +259,37 @@ In different terminals, run the following code to establish a communication with fastdds discovery --server-id 0 --ip-address 127.0.0.1 --port 11811 --backup -.. code-block:: console +.. tabs:: - export ROS_DISCOVERY_SERVER="127.0.0.1:11811" - ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker + .. group-tab:: Linux -.. code-block:: console + .. code-block:: console - export ROS_DISCOVERY_SERVER="127.0.0.1:11811" - ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener + export ROS_DISCOVERY_SERVER="127.0.0.1:11811" + ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker + + .. group-tab:: Windows + + .. code-block:: console + + set ROS_DISCOVERY_SERVER="127.0.0.1:11811" + ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker + +.. tabs:: + + .. group-tab:: Linux + + .. code-block:: console + + export ROS_DISCOVERY_SERVER="127.0.0.1:11811" + ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener + + .. group-tab:: Windows + + .. code-block:: console + + set ROS_DISCOVERY_SERVER="127.0.0.1:11811" + ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener Several backup files are created in the discovery server's working directory (the directory it was launched in). The two ``SQLite`` files and two ``json`` files contain the information required to start a new server and restore the failed server's state in case of failure, avoiding the need for the discovery process to happen again, and without losing information. @@ -257,25 +324,70 @@ In another terminal run the second server listening on localhost using another p Now, run each node in a different terminal. Use ``ROS_DISCOVERY_SERVER`` environment variable to decide which server they are connected to. Be aware that the `ids must match `__. -.. code-block:: console +.. tabs:: - export ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" - ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker_1 + .. group-tab:: Linux -.. code-block:: console + .. code-block:: console - export ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" - ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener_1 + export ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" + ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker_1 -.. code-block:: console + .. group-tab:: Windows - export ROS_DISCOVERY_SERVER="127.0.0.1:11811" - ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker_2 + .. code-block:: console -.. code-block:: console + set ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" + ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker_1 + +.. tabs:: + + .. group-tab:: Linux + + .. code-block:: console + + export ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" + ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener_1 + + .. group-tab:: Windows + + .. code-block:: console + + set ROS_DISCOVERY_SERVER="127.0.0.1:11811;127.0.0.1:11888" + ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener_1 + +.. tabs:: + + .. group-tab:: Linux + + .. code-block:: console + + export ROS_DISCOVERY_SERVER="127.0.0.1:11811" + ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker_2 + + .. group-tab:: Windows + + .. code-block:: console + + set ROS_DISCOVERY_SERVER="127.0.0.1:11811" + ros2 run demo_nodes_cpp talker --ros-args --remap __node:=talker_2 + +.. tabs:: + + .. group-tab:: Linux + + .. code-block:: console + + export ROS_DISCOVERY_SERVER=";127.0.0.1:11888" + ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener_2 + + .. group-tab:: Windows + + .. code-block:: console + + set ROS_DISCOVERY_SERVER=";127.0.0.1:11888" + ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener_2 - export ROS_DISCOVERY_SERVER=";127.0.0.1:11888" - ros2 run demo_nodes_cpp listener --ros-args --remap __node:=listener_2 We should see how ``Listener 1`` is receiving messages from both talker nodes, while ``Listener 2`` is in a different partition from ``Talker 2`` and so does not receive messages from it. @@ -364,34 +476,83 @@ First of all, instantiate a Discovery Server using `Fast DDS CLI