From eb82411edbb96fe5fa9a80375c43dd99281e6015 Mon Sep 17 00:00:00 2001 From: Raul Sanchez-Mateos Date: Tue, 20 Jan 2026 15:24:48 +0100 Subject: [PATCH] Apply scripts for furo theme compatibility Signed-off-by: Raul Sanchez-Mateos --- source/Releases/Release-Lyrical-Luth.rst | 4 - .../Creating-An-RMW-Implementation.rst | 3 - .../Using-ROS2-Launch-For-Large-Projects.rst | 121 +++++++++++------- .../Monitoring-For-Parameter-Changes-CPP.rst | 11 +- ...onitoring-For-Parameter-Changes-Python.rst | 11 +- .../Intermediate/Tf2/Adding-A-Frame-Cpp.rst | 33 +++-- .../Intermediate/Tf2/Adding-A-Frame-Py.rst | 33 +++-- .../Tf2/Debugging-Tf2-Problems.rst | 44 ++++--- .../Tf2/Learning-About-Tf2-And-Time-Cpp.rst | 11 +- .../Tf2/Time-Travel-With-Tf2-Cpp.rst | 22 ++-- ...d-Datatypes-With-Tf2-Ros-MessageFilter.rst | 30 +++-- .../Tf2/Writing-A-Tf2-Broadcaster-Cpp.rst | 44 ++++--- .../Tf2/Writing-A-Tf2-Broadcaster-Py.rst | 44 ++++--- .../Tf2/Writing-A-Tf2-Listener-Cpp.rst | 22 ++-- .../Tf2/Writing-A-Tf2-Listener-Py.rst | 22 ++-- 15 files changed, 285 insertions(+), 170 deletions(-) diff --git a/source/Releases/Release-Lyrical-Luth.rst b/source/Releases/Release-Lyrical-Luth.rst index 4addbe9b939..299bf562163 100644 --- a/source/Releases/Release-Lyrical-Luth.rst +++ b/source/Releases/Release-Lyrical-Luth.rst @@ -5,10 +5,6 @@ Lyrical Luth (codename 'lyrical'; May, 2026) ============================================ -.. contents:: Table of Contents - :depth: 2 - :local: - *Lyrical Luth* is the twelfth release of ROS 2. What follows is highlights of the important changes and features in Lyrical Luth since the last release. diff --git a/source/Tutorials/Advanced/Creating-An-RMW-Implementation.rst b/source/Tutorials/Advanced/Creating-An-RMW-Implementation.rst index 38125cd07e8..37573e98eb4 100644 --- a/source/Tutorials/Advanced/Creating-An-RMW-Implementation.rst +++ b/source/Tutorials/Advanced/Creating-An-RMW-Implementation.rst @@ -7,9 +7,6 @@ Creating an ``rmw`` implementation **Time:** 30+ minutes -.. contents:: Table of Contents - :local: - Introduction ------------ diff --git a/source/Tutorials/Intermediate/Launch/Using-ROS2-Launch-For-Large-Projects.rst b/source/Tutorials/Intermediate/Launch/Using-ROS2-Launch-For-Large-Projects.rst index b1be402ee26..ea64b54bf9a 100644 --- a/source/Tutorials/Intermediate/Launch/Using-ROS2-Launch-For-Large-Projects.rst +++ b/source/Tutorials/Intermediate/Launch/Using-ROS2-Launch-For-Large-Projects.rst @@ -65,23 +65,26 @@ To do this, let's create a ``launch_turtlesim_launch`` file in the ``/launch`` f Earlier launch system versions may not support ``let`` inside ``include`` statements and require ``arg`` instead. The syntax is the same: ``name`` and ``value`` attributes remain unchanged (e.g., ````). -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML Copy and paste the complete code into the ``launch/launch_turtlesim_launch.xml`` file: .. literalinclude:: launch/launch_turtlesim_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML Copy and paste the complete code into the ``launch/launch_turtlesim_launch.yaml`` file: .. literalinclude:: launch/launch_turtlesim_launch.yaml :language: yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python Copy and paste the complete code into the ``launch/launch_turtlesim_launch.py`` file: @@ -108,23 +111,26 @@ However, there are cases when some nodes or launch files have to be launched sep We will begin by writing a launch file that will start our first turtlesim simulation. First, create a new file called ``turtlesim_world_1_launch``. -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML Copy and paste the complete code into the ``launch/turtlesim_world_1_launch.xml`` file: .. literalinclude:: launch/turtlesim_world_1_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML Copy and paste the complete code into the ``launch/turtlesim_world_1_launch.yaml`` file: .. literalinclude:: launch/turtlesim_world_1_launch.yaml :language: yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python Copy and paste the complete code into the ``launch/turtlesim_world_1_launch.py`` file: @@ -139,23 +145,26 @@ This launch file starts the ``turtlesim_node`` node, which starts the turtlesim In the second launch, we will start a second turtlesim simulation with a different configuration. Now create a ``turtlesim_world_2_launch`` file. -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML Copy and paste the complete code into the ``launch/turtlesim_world_2_launch.xml`` file: .. literalinclude:: launch/turtlesim_world_2_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML Copy and paste the complete code into the ``launch/turtlesim_world_2_launch.yaml`` file: .. literalinclude:: launch/turtlesim_world_2_launch.yaml :language: yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python Copy and paste the complete code into the ``launch/turtlesim_world_2_launch.py`` file: @@ -190,9 +199,10 @@ A solution is to use wildcard characters, which act as substitutions for unknown Now let's create a new ``turtlesim_world_3_launch`` file similar to ``turtlesim_world_2_launch`` to include one more ``turtlesim_node`` node in a new namespace ``turtlesim3``: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML Copy and paste the complete code into the ``launch/turtlesim_world_3_launch.xml`` file: @@ -200,7 +210,8 @@ Now let's create a new ``turtlesim_world_3_launch`` file similar to ``turtlesim_ :language: xml :emphasize-lines: 3 - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML Copy and paste the complete code into the ``launch/turtlesim_world_3_launch.yaml`` file: @@ -208,7 +219,8 @@ Now let's create a new ``turtlesim_world_3_launch`` file similar to ``turtlesim_ :language: yaml :emphasize-lines: 7 - .. group-tab:: Python + .. tab-item:: Python + :sync: Python Copy and paste the complete code into the ``launch/turtlesim_world_3_launch.py`` file: @@ -261,9 +273,10 @@ Every nested node will inherit that namespace automatically. To do that, firstly, we need to remove the ``namespace='turtlesim2'`` line from the ``turtlesim_world_2_launch`` file. Afterwards, we need to update the ``launch_turtlesim_launch`` to change the include statement to the following: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: xml @@ -272,7 +285,8 @@ Afterwards, we need to update the ``launch_turtlesim_launch`` to change the incl - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: yaml @@ -282,7 +296,8 @@ Afterwards, we need to update the ``launch_turtlesim_launch`` to change the incl - include: file: "$(find-pkg-share launch_tutorial)/launch/turtlesim_world_2_launch.yaml" - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: python @@ -304,23 +319,26 @@ As a result, each node in the ``turtlesim_world_2_launch`` launch description wi Now create a ``broadcaster_listener_launch`` file. -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML Copy and paste the complete code into the ``launch/broadcaster_listener_launch.xml`` file: .. literalinclude:: launch/broadcaster_listener_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML Copy and paste the complete code into the ``launch/broadcaster_listener_launch.yaml`` file: .. literalinclude:: launch/broadcaster_listener_launch.yaml :language: yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python Copy and paste the complete code into the ``launch/broadcaster_listener_launch.py`` file: @@ -341,21 +359,24 @@ We also start a ``turtle_tf2_listener`` node and set its ``target_frame`` parame Recall that we called the ``broadcaster_listener_launch`` file in our top-level launch file. In addition to that, we have passed it ``target_frame`` launch argument as shown below: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/launch_turtlesim_launch.xml :language: xml :lines: 5-7 - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/launch_turtlesim_launch.yaml :language: yaml :lines: 8-12 - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/launch_turtlesim_launch.py :language: python @@ -370,23 +391,26 @@ This will assign ``target_frame`` its default value, which is ``turtle1``. Now create a ``mimic_launch`` file. -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML Copy and paste the complete code into the ``launch/mimic_launch.xml`` file: .. literalinclude:: launch/mimic_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML Copy and paste the complete code into the ``launch/mimic_launch.yaml`` file: .. literalinclude:: launch/mimic_launch.yaml :language: yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python Copy and paste the complete code into the ``launch/mimic_launch.py`` file: @@ -404,23 +428,26 @@ This way ``turtle1`` in our ``turtlesim2`` simulation world will follow ``turtle Let's now create a file called ``turtlesim_rviz_launch``. -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML Copy and paste the complete code into the ``launch/turtlesim_rviz_launch.xml`` file: .. literalinclude:: launch/turtlesim_rviz_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML Copy and paste the complete code into the ``launch/turtlesim_rviz_launch.yaml`` file: .. literalinclude:: launch/turtlesim_rviz_launch.yaml :language: yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python Copy and paste the complete code into the ``launch/turtlesim_rviz_launch.py`` file: @@ -435,23 +462,26 @@ This RViz configuration will set the world frame, enable TF visualization, and s Let's now create the last launch file called ``fixed_broadcaster_launch`` in our package. -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML Copy and paste the complete code into the ``launch/fixed_broadcaster_launch.xml`` file: .. literalinclude:: launch/fixed_broadcaster_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML Copy and paste the complete code into the ``launch/fixed_broadcaster_launch.yaml`` file: .. literalinclude:: launch/fixed_broadcaster_launch.yaml :language: yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python Copy and paste the complete code into the ``launch/fixed_broadcaster_launch.py`` file: @@ -494,21 +524,24 @@ The ``data_files`` field should now look like this: To finally see the result of our code, build the package and launch the top-level launch file using the following command: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch launch_tutorial launch_turtlesim_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch launch_tutorial launch_turtlesim_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console diff --git a/source/Tutorials/Intermediate/Monitoring-For-Parameter-Changes-CPP.rst b/source/Tutorials/Intermediate/Monitoring-For-Parameter-Changes-CPP.rst index 3fbc67bdc51..f3c30bb883f 100644 --- a/source/Tutorials/Intermediate/Monitoring-For-Parameter-Changes-CPP.rst +++ b/source/Tutorials/Intermediate/Monitoring-For-Parameter-Changes-CPP.rst @@ -399,21 +399,24 @@ Navigate back to the root of your workspace, ``ros2_ws``, and rebuild your updat Then source the setup files: -.. tabs:: +.. tab-set:: - .. group-tab:: Linux + .. tab-item:: Linux + :sync: Linux .. code-block:: console $ . install/setup.bash - .. group-tab:: macOS + .. tab-item:: macOS + :sync: macOS .. code-block:: console $ . install/setup.bash - .. group-tab:: Windows + .. tab-item:: Windows + :sync: Windows .. code-block:: console diff --git a/source/Tutorials/Intermediate/Monitoring-For-Parameter-Changes-Python.rst b/source/Tutorials/Intermediate/Monitoring-For-Parameter-Changes-Python.rst index cdea50ceef8..430fd847945 100644 --- a/source/Tutorials/Intermediate/Monitoring-For-Parameter-Changes-Python.rst +++ b/source/Tutorials/Intermediate/Monitoring-For-Parameter-Changes-Python.rst @@ -380,21 +380,24 @@ Navigate back to the root of your workspace, ``ros2_ws``, and rebuild your updat Then source the setup files: -.. tabs:: +.. tab-set:: - .. group-tab:: Linux + .. tab-item:: Linux + :sync: Linux .. code-block:: console $ . install/setup.bash - .. group-tab:: macOS + .. tab-item:: macOS + :sync: macOS .. code-block:: console $ . install/setup.bash - .. group-tab:: Windows + .. tab-item:: Windows + :sync: Windows .. code-block:: console diff --git a/source/Tutorials/Intermediate/Tf2/Adding-A-Frame-Cpp.rst b/source/Tutorials/Intermediate/Tf2/Adding-A-Frame-Cpp.rst index cfa4ba3788b..51f846e24c9 100644 --- a/source/Tutorials/Intermediate/Tf2/Adding-A-Frame-Cpp.rst +++ b/source/Tutorials/Intermediate/Tf2/Adding-A-Frame-Cpp.rst @@ -183,19 +183,22 @@ Finally, add the ``install(TARGETS…)`` section so ``ros2 run`` can find your e Now let's create a launch file for this example. With your text editor, create a new file called ``turtle_tf2_fixed_frame_demo_launch`` with extension ``.py``, ``.xml``, or ``.yaml`` in the ``src/learning_tf2_cpp/launch`` directory, and add the following lines: -.. tabs:: +.. tab-set:: - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/turtle_tf2_fixed_frame_demo_launch.py :language: python - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/turtle_tf2_fixed_frame_demo_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/turtle_tf2_fixed_frame_demo_launch.yaml :language: yaml @@ -204,21 +207,24 @@ This launch file imports the required packages and then creates a ``demo_nodes`` The last part of the code will add our fixed ``carrot1`` frame to the turtlesim world using our ``fixed_frame_tf2_broadcaster`` node. -.. tabs:: +.. tab-set:: - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/turtle_tf2_fixed_frame_demo_launch.py :language: python :lines: 14-18 - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/turtle_tf2_fixed_frame_demo_launch.xml :language: xml :lines: 3-4 - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/turtle_tf2_fixed_frame_demo_launch.yaml :language: yaml @@ -485,19 +491,22 @@ Finally, add the ``install(TARGETS…)`` section so ``ros2 run`` can find your e To test this code, create a new launch file ``turtle_tf2_dynamic_frame_demo_launch`` with extension ``.py``, ``.xml``, or ``.yaml`` in the ``src/learning_tf2_cpp/launch`` directory and paste the following code: -.. tabs:: +.. tab-set:: - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/turtle_tf2_dynamic_frame_demo_launch.py :language: python - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/turtle_tf2_dynamic_frame_demo_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/turtle_tf2_dynamic_frame_demo_launch.yaml :language: yaml diff --git a/source/Tutorials/Intermediate/Tf2/Adding-A-Frame-Py.rst b/source/Tutorials/Intermediate/Tf2/Adding-A-Frame-Py.rst index 547e15f062d..f666bfefef9 100644 --- a/source/Tutorials/Intermediate/Tf2/Adding-A-Frame-Py.rst +++ b/source/Tutorials/Intermediate/Tf2/Adding-A-Frame-Py.rst @@ -161,20 +161,23 @@ Add the following line between the ``'console_scripts':`` brackets: Now let's create a launch file for this example. With your text editor, create a new file called ``turtle_tf2_fixed_frame_demo_launch`` with extension ``.py``, ``.xml``, or ``.yaml`` in the ``src/learning_tf2_py/launch`` directory, and add the following lines: -.. tabs:: +.. tab-set:: - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/py_turtle_tf2_fixed_frame_demo_launch.py :name: turtle_tf2_fixed_frame_demo_launch.py :language: python - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/py_turtle_tf2_fixed_frame_demo_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/py_turtle_tf2_fixed_frame_demo_launch.yaml :language: yaml @@ -183,21 +186,24 @@ This launch file imports the required packages and then creates a ``demo_nodes`` The last part of the code will add our fixed ``carrot1`` frame to the turtlesim world using our ``fixed_frame_tf2_broadcaster`` node. -.. tabs:: +.. tab-set:: - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/py_turtle_tf2_fixed_frame_demo_launch.py :language: python :lines: 14-18 - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/py_turtle_tf2_fixed_frame_demo_launch.xml :language: xml :lines: 3-4 - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/py_turtle_tf2_fixed_frame_demo_launch.yaml :language: yaml @@ -443,19 +449,22 @@ Add the following line between the ``'console_scripts':`` brackets: To test this code, create a new launch file ``turtle_tf2_dynamic_frame_demo_launch`` with extension ``.py``, ``.xml``, or ``.yaml`` in the ``src/learning_tf2_py/launch`` directory and paste the following code: -.. tabs:: +.. tab-set:: - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/py_turtle_tf2_dynamic_frame_demo_launch.py :name: turtle_tf2_dynamic_frame_demo_launch.py - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/py_turtle_tf2_dynamic_frame_demo_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/py_turtle_tf2_dynamic_frame_demo_launch.yaml :language: yaml diff --git a/source/Tutorials/Intermediate/Tf2/Debugging-Tf2-Problems.rst b/source/Tutorials/Intermediate/Tf2/Debugging-Tf2-Problems.rst index 27c55514b8e..13bdb5966b5 100644 --- a/source/Tutorials/Intermediate/Tf2/Debugging-Tf2-Problems.rst +++ b/source/Tutorials/Intermediate/Tf2/Debugging-Tf2-Problems.rst @@ -68,19 +68,22 @@ to And save changes to the file. In order to run this demo, we need to create a launch file ``start_tf2_debug_demo_launch`` with extension ``.py``, ``.xml``, or ``.yaml`` in the ``launch`` subdirectory of package ``learning_tf2_cpp``: -.. tabs:: +.. tab-set:: - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/start_tf2_debug_demo_launch.py :language: python - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/start_tf2_debug_demo_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/start_tf2_debug_demo_launch.yaml :language: yaml @@ -89,21 +92,24 @@ Don't forget to add the ``turtle_tf2_listener_debug`` executable to the ``CMakeL Now let's run it to see what happens: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch learning_tf2_cpp start_tf2_debug_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch learning_tf2_cpp start_tf2_debug_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console @@ -179,9 +185,10 @@ To fix this bug, just replace ``turtle3`` with ``turtle2`` in line 65. And now stop the running demo, build it, and run it again: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console @@ -191,7 +198,8 @@ And now stop the running demo, build it, and run it again: time 1630223704.617054 but the latest data is at time 1630223704.616726, when looking up transform from frame [turtle1] to frame [turtle2] - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console @@ -201,7 +209,8 @@ And now stop the running demo, build it, and run it again: time 1630223704.617054 but the latest data is at time 1630223704.616726, when looking up transform from frame [turtle1] to frame [turtle2] - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console @@ -251,21 +260,24 @@ In the new code we are asking for the transform between the turtles 100 millisec It is usual to use a longer periods, just to make sure that the transform will arrive. Stop the demo, build and run: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch turtle_tf2 start_tf2_debug_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch turtle_tf2 start_tf2_debug_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console diff --git a/source/Tutorials/Intermediate/Tf2/Learning-About-Tf2-And-Time-Cpp.rst b/source/Tutorials/Intermediate/Tf2/Learning-About-Tf2-And-Time-Cpp.rst index d83c5c34e13..98fd3700c39 100644 --- a/source/Tutorials/Intermediate/Tf2/Learning-About-Tf2-And-Time-Cpp.rst +++ b/source/Tutorials/Intermediate/Tf2/Learning-About-Tf2-And-Time-Cpp.rst @@ -104,21 +104,24 @@ It will block for up to that duration waiting for it to timeout. You can now build the package and run the launch file. -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch learning_tf2_cpp turtle_tf2_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch learning_tf2_cpp turtle_tf2_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console diff --git a/source/Tutorials/Intermediate/Tf2/Time-Travel-With-Tf2-Cpp.rst b/source/Tutorials/Intermediate/Tf2/Time-Travel-With-Tf2-Cpp.rst index 51956ab7287..51bf86e6297 100644 --- a/source/Tutorials/Intermediate/Tf2/Time-Travel-With-Tf2-Cpp.rst +++ b/source/Tutorials/Intermediate/Tf2/Time-Travel-With-Tf2-Cpp.rst @@ -47,21 +47,24 @@ Now if you run this, during the first 5 seconds, the second turtle would not kno But what happens after these 5 seconds? Build the package then let's just give it a try: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch learning_tf2_cpp turtle_tf2_fixed_frame_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch learning_tf2_cpp turtle_tf2_fixed_frame_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console @@ -122,21 +125,24 @@ Checking the results Build the package then let's run the simulation again, this time with the advanced time-travel API: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch learning_tf2_cpp turtle_tf2_fixed_frame_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch learning_tf2_cpp turtle_tf2_fixed_frame_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console diff --git a/source/Tutorials/Intermediate/Tf2/Using-Stamped-Datatypes-With-Tf2-Ros-MessageFilter.rst b/source/Tutorials/Intermediate/Tf2/Using-Stamped-Datatypes-With-Tf2-Ros-MessageFilter.rst index ac2a494a9dd..1f05173ae4e 100644 --- a/source/Tutorials/Intermediate/Tf2/Using-Stamped-Datatypes-With-Tf2-Ros-MessageFilter.rst +++ b/source/Tutorials/Intermediate/Tf2/Using-Stamped-Datatypes-With-Tf2-Ros-MessageFilter.rst @@ -36,15 +36,17 @@ Prerequisites This tutorial expects you to have ``turtle_tf2_py`` package installed. -.. tabs:: +.. tab-set:: - .. group-tab:: Linux + .. tab-item:: Linux + :sync: Linux .. code-block:: console $ sudo apt install ros-{DISTRO}-turtle-tf2-py - .. group-tab:: From Source + .. tab-item:: From Source + :sync: From Source .. code-block:: console @@ -235,19 +237,22 @@ Then we fill up the ``PointStamped`` messages of ``turtle3`` with incoming ``Pos In order to run this demo, we need to create a launch file ``turtle_tf2_sensor_message_launch`` with extension ``.py``, ``.xml``, or ``.yaml`` in the ``launch`` subdirectory of package ``learning_tf2_py``: -.. tabs:: +.. tab-set:: - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/turtle_tf2_sensor_message_launch.py :language: python - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/turtle_tf2_sensor_message_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/turtle_tf2_sensor_message_launch.yaml :language: yaml @@ -695,21 +700,24 @@ Open a new terminal, navigate to the root of your workspace, and source the setu First we need to run several nodes (including the broadcaster node of PointStamped messages) by launching the launch file ``turtle_tf2_sensor_message_launch``: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch learning_tf2_py turtle_tf2_sensor_message_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch learning_tf2_py turtle_tf2_sensor_message_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console diff --git a/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Cpp.rst b/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Cpp.rst index e7ef2aad070..62013419433 100644 --- a/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Cpp.rst +++ b/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Cpp.rst @@ -247,19 +247,22 @@ Now create a launch file for this demo. Create a ``launch`` folder in the ``src/learning_tf2_cpp`` directory. With your text editor, create a new file called ``turtle_tf2_demo_launch`` with extension ``.py``, ``.xml``, or ``.yaml`` in the ``launch`` folder, and add the following lines: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/turtle_tf2_demo_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/turtle_tf2_demo_launch.yaml :language: yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/turtle_tf2_demo_launch.py :language: python @@ -270,9 +273,10 @@ With your text editor, create a new file called ``turtle_tf2_demo_launch`` with Let's examine the launch file structure. Each format has its own way of setting up the launch file: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML XML launch files start with an XML declaration and a root ```` element. @@ -280,7 +284,8 @@ Each format has its own way of setting up the launch file: :language: xml :lines: 1-2 - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML YAML launch files start with a YAML version declaration and a ``launch:`` key. @@ -288,7 +293,8 @@ Each format has its own way of setting up the launch file: :language: yaml :lines: 1-3 - .. group-tab:: Python + .. tab-item:: Python + :sync: Python In Python launch files, we first import required modules from the ``launch`` and ``launch_ros`` packages. It should be noted that ``launch`` is a generic launching framework (not ROS 2 specific) and ``launch_ros`` has ROS 2 specific things, like nodes that we import here. @@ -299,21 +305,24 @@ Each format has its own way of setting up the launch file: Now we run our nodes that start the turtlesim simulation and broadcast ``turtle1`` state to the tf2 using our ``turtle_tf2_broadcaster`` node. -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/turtle_tf2_demo_launch.xml :language: xml :lines: 3-6 - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/turtle_tf2_demo_launch.yaml :language: yaml :lines: 4-9 - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/turtle_tf2_demo_launch.py :language: python @@ -435,21 +444,24 @@ Open a new terminal, navigate to the root of your workspace, and source the setu Now run the launch file that will start the turtlesim simulation node and ``turtle_tf2_broadcaster`` node: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch learning_tf2_cpp turtle_tf2_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch learning_tf2_cpp turtle_tf2_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console diff --git a/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Py.rst b/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Py.rst index 0d1f9f9f149..fac3eb9f29d 100644 --- a/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Py.rst +++ b/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Py.rst @@ -254,21 +254,24 @@ Now create a launch file for this demo. Create a ``launch`` folder in the ``src/learning_tf2_py`` directory. With your text editor, create a new file called ``turtle_tf2_demo_launch`` with extension ``.py``, ``.xml``, or ``.yaml`` in the ``launch`` folder, and add the following lines: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/py_turtle_tf2_demo_launch.xml :language: xml :name: turtle_tf2_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/py_turtle_tf2_demo_launch.yaml :language: yaml :name: turtle_tf2_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/py_turtle_tf2_demo_launch.py :language: python @@ -281,9 +284,10 @@ With your text editor, create a new file called ``turtle_tf2_demo_launch`` with Let's examine the launch file structure. Each format has its own way of setting up the launch file: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML XML launch files start with an XML declaration and a root ```` element. @@ -291,7 +295,8 @@ Each format has its own way of setting up the launch file: :language: xml :lines: 1-2 - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML YAML launch files start with a YAML version declaration and a ``launch:`` key. @@ -299,7 +304,8 @@ Each format has its own way of setting up the launch file: :language: yaml :lines: 1-3 - .. group-tab:: Python + .. tab-item:: Python + :sync: Python In Python launch files, we first import required modules from the ``launch`` and ``launch_ros`` packages. It should be noted that ``launch`` is a generic launching framework (not ROS 2 specific) and ``launch_ros`` has ROS 2 specific things, like nodes that we import here. @@ -310,21 +316,24 @@ Each format has its own way of setting up the launch file: Now we run our nodes that start the turtlesim simulation and broadcast ``turtle1`` state to the tf2 using our ``turtle_tf2_broadcaster`` node. -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/py_turtle_tf2_demo_launch.xml :language: xml :lines: 3-6 - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/py_turtle_tf2_demo_launch.yaml :language: yaml :lines: 4-9 - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/py_turtle_tf2_demo_launch.py :language: python @@ -457,21 +466,24 @@ Open a new terminal, navigate to the root of your workspace, and source the setu Now run the launch file that will start the turtlesim simulation node and ``turtle_tf2_broadcaster`` node: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch learning_tf2_py turtle_tf2_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch learning_tf2_py turtle_tf2_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console diff --git a/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Listener-Cpp.rst b/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Listener-Cpp.rst index bce08b784e8..8cc9fe39244 100644 --- a/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Listener-Cpp.rst +++ b/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Listener-Cpp.rst @@ -280,19 +280,22 @@ Finally, add the ``install(TARGETS…)`` section so ``ros2 run`` can find your e Open the launch file called ``turtle_tf2_demo_launch`` with extension ``.py``, ``.xml``, or ``.yaml`` in the ``src/learning_tf2_cpp/launch`` directory with your text editor, add two new nodes to the launch description, add a launch argument, and add the imports. The resulting file should look like: -.. tabs:: +.. tab-set:: - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/listener_cpp_launch.py :language: python - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/listener_cpp_launch.xml :language: xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/listener_cpp_launch.yaml :language: yaml @@ -386,21 +389,24 @@ Open a new terminal, navigate to the root of your workspace, and source the setu Now you're ready to start your full turtle demo: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch learning_tf2_cpp turtle_tf2_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch learning_tf2_cpp turtle_tf2_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console diff --git a/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Listener-Py.rst b/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Listener-Py.rst index 72093ba7be7..7180f6e8990 100644 --- a/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Listener-Py.rst +++ b/source/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Listener-Py.rst @@ -230,21 +230,24 @@ Add the following line between the ``'console_scripts':`` brackets: Open the launch file called ``turtle_tf2_demo_launch`` with extension ``.py``, ``.xml``, or ``.yaml`` in the ``src/learning_tf2_py/launch`` directory with your text editor, add two new nodes to the launch description, add a launch argument, and add the imports. The resulting file should look like: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. literalinclude:: launch/listener_py_launch.xml :language: xml :name: turtle_tf2_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. literalinclude:: launch/listener_py_launch.yaml :language: yaml :name: turtle_tf2_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. literalinclude:: launch/listener_py_launch.py :language: python @@ -341,21 +344,24 @@ Open a new terminal, navigate to the root of your workspace, and source the setu Now you're ready to start your full turtle demo: -.. tabs:: +.. tab-set:: - .. group-tab:: XML + .. tab-item:: XML + :sync: XML .. code-block:: console $ ros2 launch learning_tf2_py turtle_tf2_demo_launch.xml - .. group-tab:: YAML + .. tab-item:: YAML + :sync: YAML .. code-block:: console $ ros2 launch learning_tf2_py turtle_tf2_demo_launch.yaml - .. group-tab:: Python + .. tab-item:: Python + :sync: Python .. code-block:: console