diff --git a/docs/source/conf.py b/docs/source/conf.py
index c8d12b61..eaf41a10 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -36,7 +36,7 @@
]
intersphinx_mapping = {
- 'python': ('https://docs.python.org/3.10/', None),
+ 'python': ('https://docs.python.org/3.12/', None),
'sphinx': ('https://www.sphinx-doc.org/en/master/', None),
}
intersphinx_disabled_domains = ['std']
@@ -48,8 +48,8 @@
html_theme = 'sphinx_book_theme'
# Tried with `furo` on May 23, 2025, but somehow it didn't look right. In particular the download button wasn't as clear.
html_theme_options = {
- "announcement": "The documentation is being updated to Jazzy in this branch. "
- "See Humble Docs for the stable ones. "
+ "announcement": "This tutorial has been updated to ROS2 Jazzy. "
+ "See Humble Docs for the previous version. "
"Create an issue for inconsistencies.",
}
html_title = project
diff --git a/docs/source/preamble/python/installing_python.rst b/docs/source/preamble/python/installing_python.rst
index e8ae374c..6b1f0ba4 100644
--- a/docs/source/preamble/python/installing_python.rst
+++ b/docs/source/preamble/python/installing_python.rst
@@ -7,7 +7,7 @@ Installing Python on Ubuntu
If you change or try to tinker with the default Python version of Ubuntu, your system will most likely **BREAK COMPLETELY**.
Do not play around with the default Python installation, because Ubuntu depends on it to work properly (or work at all).
-In Ubuntu 22.04, Python is already installed!
+In Ubuntu, Python is already installed!
In fact, Ubuntu would not work without it. Let's check its version by running
.. code-block:: console
@@ -18,9 +18,9 @@ which should output
.. code-block:: console
- Python 3.10.6
+ Python 3.12.3
-If the :code:`3.10` part of your version is different (e.g. :code:`3.9` or :code:`3.11`\), get this fixed because this tutorial will not work for you.
+If the :code:`3.12` part of your version is different, this tutorial might not work for you. Please make sure to use the default Python in your Ubuntu.
.. warning::
Note that the command is :program:`python3` and not :program:`python`. In fact, the result of
@@ -50,13 +50,13 @@ which should output something similar to
.. code-block:: console
- Python 3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0] on linux
+ Python 3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
-in particular, if the :code:`GCC 11` is different, e.g. :code:`GCC 9` or :code:`GCC 12`\, then get this fixed because this tutorial will not work for you.
+in particular, if the :code:`GCC 13` is different, then this tutorial might not work for you.
-As you already know, to exit the `interactive shell `_ you can use :kbd:`CTRL+D` or type :code:`quit()` and press :kbd:`ENTER`.
+As you already know, to exit the `interactive shell `_ you can use :kbd:`CTRL+D` or type :code:`quit()` and press :kbd:`ENTER`.
Some Python packages must be installed through :program:`apt`
-------------------------------------------------------------
@@ -83,7 +83,7 @@ When you want to isolate your environment, use :program:`venv`
Until that is handled, we are not going to use :program:`venv` for the ROS2 tutorials.
However, we will use :program:`venv` to protect our ROS2 environment from these Python preamble tutorials.
-Using :program:`venv` (`More info `_) is quite straightforward.
+Using :program:`venv` (`More info `_) is quite straightforward.
Create a :file:`venv`
^^^^^^^^^^^^^^^^^^^^^
@@ -151,20 +151,20 @@ then, we install
.. code-block:: console
- python3 -m pip install dqrobotics
+ python3 -m pip install dqrobotics --break-system-packages
which will result in something similar to (might change depending on future versions)
.. code-block:: console
- Collecting dqrobotics
- Downloading dqrobotics-23.4.0a15-cp310-cp310-manylinux1_x86_64.whl (551 kB)
- ---------------------------------------- 551.4/551.4 KB 6.3 MB/s eta 0:00:00
- Collecting numpy
- Downloading numpy-1.25.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.6 MB)
- ---------------------------------------- 17.6/17.6 MB 7.4 MB/s eta 0:00:00
- Installing collected packages: numpy, dqrobotics
- Successfully installed dqrobotics-23.4.0a15 numpy-1.25.0
+ Collecting dqrobotics
+ Downloading dqrobotics-25.4.0a17-cp312-cp312-manylinux2014_aarch64.whl.metadata (2.9 kB)
+ Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (from dqrobotics) (1.26.4)
+ Downloading dqrobotics-25.4.0a17-cp312-cp312-manylinux2014_aarch64.whl (512 kB)
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 512.5/512.5 kB 14.0 MB/s eta 0:00:00
+ [...]
+ Installing collected packages: dqrobotics
+ Successfully installed dqrobotics-25.4.0a17
Removing libraries (installed with :program:`pip`)
--------------------------------------------------
@@ -173,18 +173,18 @@ We can remove the library we just installed with
.. code-block:: console
- python3 -m pip uninstall dqrobotics
+ python3 -m pip uninstall dqrobotics --break-system-packages
resulting in
.. code-block:: console
- Found existing installation: dqrobotics 23.4.0a15
- Uninstalling dqrobotics-23.4.0a15:
- Would remove:
- /home/murilo/ros2tutorial_venv/lib/python3.10/site-packages/dqrobotics-23.4.0a15.dist-info/*
- /home/murilo/ros2tutorial_venv/lib/python3.10/site-packages/dqrobotics/*
- Proceed (Y/n)?
+ Found existing installation: dqrobotics 25.4.0a7
+ Uninstalling dqrobotics-25.4.0a7:
+ Would remove:
+ /usr/local/lib/python3.12/dist-packages/dqrobotics-25.4.0a7.dist-info/*
+ /usr/local/lib/python3.12/dist-packages/dqrobotics/*
+ Proceed (Y/n)?
.. hint::
@@ -195,7 +195,7 @@ Then, press :kbd:`ENTER`, which results in
.. code-block:: console
- Successfully uninstalled dqrobotics-23.4.0a15
+ Successfully uninstalled dqrobotics-25.4.0a7
When using :program:`pip`, do **NOT** use :code:`sudo`
------------------------------------------------------
diff --git a/docs/source/publishers_and_subscribers.rst b/docs/source/publishers_and_subscribers.rst
index a2edc87a..d45bbd67 100644
--- a/docs/source/publishers_and_subscribers.rst
+++ b/docs/source/publishers_and_subscribers.rst
@@ -136,14 +136,14 @@ The publisher must be created with the :code:`Node.create_publisher(...)` method
.. _publisher and subscriber parameter table:
-+--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:code:`msg_type` | A class, namely the message that will be used in the topic. In this case, :code:`AmazingQuote`. |
-+--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:code:`topic` | The topic through which the communication will occur. Can be arbitrarily chosen, but to make sense :code:`/amazing_quote`. |
-+--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
-|:code:`qos_profile` | The simplest interpretation for this parameter is the maximum number of messages that will be stored in a buffer if your node (including :code:`spin(...)`) takes too long to process them. |
-| | (See more on `docs for QoSProfile `_.) |
-+--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------+
++--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:code:`msg_type` | A class, namely the message that will be used in the topic. In this case, :code:`AmazingQuote`. |
++--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:code:`topic` | The topic through which the communication will occur. Can be arbitrarily chosen, but to make sense :code:`/amazing_quote`. |
++--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|:code:`qos_profile` | The simplest interpretation for this parameter is the maximum number of messages that will be stored in a buffer if your node (including :code:`spin(...)`) takes too long to process them. |
+| | (See more on `docs for QoSProfile `_.) |
++--------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. warning::
@@ -292,6 +292,6 @@ which outputs
.. warning::
- Unless instructed otherwise, the publisher does **NOT** wait for a subscriber to connect before it starts publishing the messages. As shown in the case above, the first message we received started with `id=3`. If we delayed longer to start the publisher, we would have received later messages only.
+ Unless instructed otherwise, the publisher does **NOT** wait for a subscriber to connect before it starts publishing the messages. As shown in the case above, the first message we received started with `id>0`. If we delayed longer to start the publisher, we would have received later messages only.
Let's close each node with :kbd:`CTRL+C` on each terminal before we proceed to the next tutorial.
diff --git a/docs/source/puppeteer-config.json b/docs/source/puppeteer-config.json
new file mode 100644
index 00000000..dce67b8e
--- /dev/null
+++ b/docs/source/puppeteer-config.json
@@ -0,0 +1,3 @@
+{
+ "args": ["--no-sandbox"]
+}
\ No newline at end of file