Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/rolling' into sentence_checker
Browse files Browse the repository at this point in the history
  • Loading branch information
DLu committed Feb 6, 2025
2 parents 35e6d2c + b0a330a commit bbf8276
Show file tree
Hide file tree
Showing 170 changed files with 4,788 additions and 3,146 deletions.
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
},
"workspaceMount": "source=${localWorkspaceFolder},target=/tmp/doc_repository,type=bind",
"workspaceFolder": "/tmp/doc_repository",
"postCreateCommand": "pip3 install --no-warn-script-location --user -r requirements.txt -c constraints.txt",
"postCreateCommand": "pip3 install --no-warn-script-location --user -r requirements.txt -c constraints.txt --break-system-packages",
"features": {
"ghcr.io/devcontainers/features/git:1": {}
},
Expand Down
11 changes: 0 additions & 11 deletions .mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ pull_request_rules:
backport:
branches:
- jazzy
- iron
- humble

- name: backport at reviewers discretion
Expand All @@ -18,7 +17,6 @@ pull_request_rules:
backport:
branches:
- jazzy
- iron
- humble

- name: backport to jazzy at reviewers discretion
Expand All @@ -30,15 +28,6 @@ pull_request_rules:
branches:
- jazzy

- name: backport to iron at reviewers discretion
conditions:
- base=rolling
- "label=backport-iron"
actions:
backport:
branches:
- iron

- name: backport to humble at reviewers discretion
conditions:
- base=rolling
Expand Down
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,21 @@ To build this you need to install

* make
* graphviz
* python virtualenv


In the virtualenv
With [venv](https://docs.python.org/3/library/venv.html)

```
# activate the venv
python3 -m venv ros2doc
# activate venv
source ros2doc/bin/activate
# install required packages
pip install -r requirements.txt -c constraints.txt
# deactivate the venv
(ros2doc) deactivate
```

### Pinned versions
Expand All @@ -36,6 +44,7 @@ To upgrade the system validate that things are working and then use `pip freeze
## Building HTML

### Local development test

For local testing of the current tree use:

`make html`
Expand Down
2 changes: 1 addition & 1 deletion conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@
smv_released_pattern = r'^refs/(heads|remotes/[^/]+)/(jazzy|iron|humble|galactic|foxy|eloquent|dashing|crystal).*$'
smv_remote_whitelist = r'^(origin)$'
smv_latest_version = 'jazzy'
smv_eol_versions = ['crystal', 'dashing', 'eloquent', 'foxy', 'galactic']
smv_eol_versions = ['crystal', 'dashing', 'eloquent', 'foxy', 'galactic', 'iron']

distro_full_names = {
'crystal': 'Crystal Clemmys',
Expand Down
7 changes: 5 additions & 2 deletions docker/image/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@
#
# docker build -f docker/image/Dockerfile .

FROM ubuntu:jammy
FROM ubuntu:noble

ARG user=rosindex
ARG uid=1000

ENV DEBIAN_FRONTEND noninteractive
ENV SHELL /bin/bash

# Delete user if it exists in container (e.g Ubuntu Noble: ubuntu)
RUN if id -u $uid ; then userdel `id -un $uid` ; fi

RUN apt-get update && \
apt-get install --no-install-recommends -y \
git-all \
Expand All @@ -31,4 +34,4 @@ WORKDIR /tmp/doc_repository

USER $user

CMD pip3 install --no-warn-script-location --user -r requirements.txt -c constraints.txt && make multiversion
CMD pip3 install --no-warn-script-location --user -r requirements.txt -c constraints.txt --break-system-packages && make multiversion
3 changes: 2 additions & 1 deletion source/Concepts/Basic/About-Client-Libraries.rst
Original file line number Diff line number Diff line change
Expand Up @@ -73,16 +73,17 @@ Community-maintained

While the C++ and Python client libraries are maintained by the core ROS 2 team, members of the ROS 2 community maintain additional client libraries:

* `Ada <https://github.com/ada-ros/ada4ros2>`__ This is a set of packages (binding to ``rcl``, message generator, binding to ``tf2``, examples and tutorials) that allows the writing of Ada applications for ROS 2.
* `C <https://github.com/ros2/rclc>`__ ``rclc`` does not put a layer on top of rcl but complements rcl to make rcl+rclc a feature-complete client library in C. See `micro.ros.org <https://micro.ros.org/>`__ for tutorials.
* `JVM and Android <https://github.com/ros2-java>`__ Java and Android bindings for ROS 2.
* `.NET Core, UWP and C# <https://github.com/esteve/ros2_dotnet>`__ This is a collection of projects (bindings, code generator, examples and more) for writing ROS 2 applications for .NET Core and .NET Standard.
* `Node.js <https://www.npmjs.com/package/rclnodejs>`__ rclnodejs is a Node.js client for ROS 2.
It provides a simple and easy JavaScript API for ROS 2 programming.
* `Rust <https://github.com/ros2-rust/ros2_rust>`__ This is a set of projects (the rclrs client library, code generator, examples and more) that enables developers to write ROS 2 applications in Rust.
* `Flutter and Dart <https://github.com/rcldart>`__ Flutter and Dart bindings for ROS 2.

Older, unmaintained client libraries are:

* `Ada <https://github.com/ada-ros/ada4ros2>`__
* `C# <https://github.com/firesurfer/rclcs>`__
* `Objective C and iOS <https://github.com/esteve/ros2_objc>`__
* `Zig <https://github.com/jacobperron/rclzig>`__
Expand Down
2 changes: 1 addition & 1 deletion source/Concepts/Basic/About-Interfaces.rst
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ For example:
Constants
^^^^^^^^^

Each constant definition is like a field description with a default value, except that this value can never be changed programatically.
Each constant definition is like a field description with a default value, except that this value can never be changed programmatically.
This value assignment is indicated by use of an equal '=' sign, e.g.

.. code-block:: bash
Expand Down
2 changes: 1 addition & 1 deletion source/Concepts/Basic/About-Topics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Publish/Subscribe
-----------------

A publish/subscribe system is one in which there are producers of data (publishers) and consumers of data (subscribers).
The publishers and subscribers know how to contact each other through the concept of a "topic", which is a common name so that the entites can find each other.
The publishers and subscribers know how to contact each other through the concept of a "topic", which is a common name so that the entities can find each other.
For instance, when you create a publisher, you must also give it a string that is the name of the topic; the same goes for the subscriber.
Any publishers and subscribers that are on the same topic name can directly communicate with each other.
There may be zero or more publishers and zero or more subscribers on any particular topic.
Expand Down
24 changes: 24 additions & 0 deletions source/Concepts/Intermediate/About-Composition.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,30 @@ By making the process layout a deploy-time decision the user can choose between:

Additionally ``ros2 launch`` can be used to automate these actions through specialized launch actions.

.. _ComponentContainer:

Component Container
-------------------

A component container is a host process that allows you to load and manage multiple components at runtime within the same process space.

As of now, the following generic component container types are available:

* `component_container <https://github.com/ros2/rclcpp/blob/{REPOS_FILE_BRANCH}/rclcpp_components/src/component_container.cpp>`__

* The most generic component container that uses a single ``SingleThreadedExecutor`` to execute all components.

* `component_container_mt <https://github.com/ros2/rclcpp/blob/{REPOS_FILE_BRANCH}/rclcpp_components/src/component_container_mt.cpp>`__

* Component container that uses a single ``MultiThreadedExecutor`` to execute the components.

* `component_container_isolated <https://github.com/ros2/rclcpp/blob/{REPOS_FILE_BRANCH}/rclcpp_components/src/component_container_isolated.cpp>`__

* Component container that uses a dedicated executor for each component: either ``SingleThreadedExecutor`` (default) or ``MultiThreadedExecutor``.

For more information about the types of executors, see the :ref:`TypesOfExecutors`.
For more information about the options of each component container, see :ref:`ComponentContainerTypes` in the composition tutorial.

Writing a Component
-------------------

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,9 @@ For example, if both ``rmw_cyclonedds_cpp`` and ``rmw_connextdds`` ROS packages
If ``rmw_fastrtps_cpp`` is ever installed, it would be the default.

See the :doc:`guide <../../How-To-Guides/Working-with-multiple-RMW-implementations>` for how to specify which RMW implementation is to be used when running the ROS 2 examples.

Cross-Vendor Communication
--------------------------

While different RMW implementations may be compatible in limited circumstances, this is not guaranteed.
Thus it is suggested that users ensure that all parts of the distributed system are using the same ROS version and the same RMW implementation.
19 changes: 13 additions & 6 deletions source/Concepts/Intermediate/About-Executors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ The *wait set* is also used to detect when timers expire.

The Single-Threaded Executor is also used by the container process for :doc:`components <./About-Composition>`, i.e. in all cases where nodes are created and executed without an explicit main function.

.. _TypesOfExecutors:

Types of Executors
------------------

Expand All @@ -79,9 +81,15 @@ Currently, rclcpp provides three Executor types, derived from a shared parent cl
}

The *Multi-Threaded Executor* creates a configurable number of threads to allow for processing multiple messages or events in parallel.
The *Static Single-Threaded Executor* optimizes the runtime costs for scanning the structure of a node in terms of subscriptions, timers, service servers, action servers, etc.
It performs this scan only once when the node is added, while the other two executors regularly scan for such changes.
Therefore, the Static Single-Threaded Executor should be used only with nodes that create all subscriptions, timers, etc. during initialization.

.. note::

The *Static Single-Threaded Executor* has been deprecated, and *Single-Threaded Executor* is recommended instead.
The *Static Single-Threaded Executor* was developed to reduce the the runtime costs for scanning the entities of a node in terms of subscriptions, timers, service servers, action servers, etc.
These runtime improvements are now available also in all the other *Executor*.
Besides, the *Static Single-Threaded Executor* has a few issues such as `max duration is not respected in spin_some <https://github.com/ros2/rclcpp/issues/2462>`__.
Because of these unstable issues, some unit tests are skipped for *Static Single-Threaded Executor*.
You can see more details for `ROS Discourse: The ROS 2 C++ Executors <https://discourse.ros.org/t/the-ros-2-c-executors/38296>`__.

All three executors can be used with multiple nodes by calling ``add_node(..)`` for each node.

Expand All @@ -91,13 +99,13 @@ All three executors can be used with multiple nodes by calling ``add_node(..)``
rclcpp::Node::SharedPtr node2 = ...
rclcpp::Node::SharedPtr node3 = ...
rclcpp::executors::StaticSingleThreadedExecutor executor;
rclcpp::executors::SingleThreadedExecutor executor;
executor.add_node(node1);
executor.add_node(node2);
executor.add_node(node3);
executor.spin();
In the above example, the one thread of a Static Single-Threaded Executor is used to serve three nodes together.
In the above example, the one thread of a Single-Threaded Executor is used to serve three nodes together.
In case of a Multi-Threaded Executor, the actual parallelism depends on the callback groups.

Callback groups
Expand Down Expand Up @@ -179,7 +187,6 @@ Here is a summary of some of these issues:
4. No built-in control over triggering for specific topics.

Additionally, the executor overhead in terms of CPU and memory usage is considerable.
The Static Single-Threaded Executor reduces this overhead greatly but it might not be enough for some applications.

These issues have been partially addressed by the following developments:

Expand Down
13 changes: 4 additions & 9 deletions source/Concepts/Intermediate/About-RQt.rst
Original file line number Diff line number Diff line change
Expand Up @@ -43,25 +43,20 @@ And then look for packages that start with ``rqt_``.
System setup
------------

Installing From Debian
^^^^^^^^^^^^^^^^^^^^^^
Installing From debs
^^^^^^^^^^^^^^^^^^^^

.. code-block:: bash
sudo apt install ros-{DISTRO}-rqt*
Building From Source
^^^^^^^^^^^^^^^^^^^^

See :doc:`Building RQt from Source <../../How-To-Guides/RQt-Source-Install>`.

RQt Components Structure
------------------------

RQt consists of two metapackages:

* *rqt* - core infrastucture modules.
* *rqt* - core infrastructure modules.
* *rqt_common_plugins* - Commonly useful debugging tools.

Advantage of RQt framework
Expand All @@ -77,7 +72,7 @@ Compared to building your own GUIs from scratch:
From system architecture's perspective:

* Support multi-platform (basically wherever `QT <http://qt-project.org/>`__ and ROS run) and multi-language (``Python``, ``C++``).
* Manageable lifecycle: RQt plugins using a common API makes maintainance & reuse easier.
* Manageable lifecycle: RQt plugins using a common API makes maintenance & reuse easier.


Further Reading
Expand Down
5 changes: 5 additions & 0 deletions source/Contact.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ If not, ask a new question on `Robotics Stack Exchange <https://robotics.stackex
Make sure to add tags, at the very least the ``ros2`` tag and the distro version you are running, e.g. ``{DISTRO}``.
If your question is related to the documentation here, add a tag like ``docs``, or more specifically, ``tutorials``.

Please don't contact the developers/maintainers directly.
The community can't see question or answer(s) not asked or answered publicly.
Open Source development works best when the entire community participates in discussions and helps to answer questions.
It's better to send all questions to `Robotics Stack Exchange <https://robotics.stackexchange.com/>`__ and report all issues to the issue tracker.

Contributing support
^^^^^^^^^^^^^^^^^^^^

Expand Down
11 changes: 2 additions & 9 deletions source/How-To-Guides.rst
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,9 @@ If you are new and looking to learn the ropes, start with the :doc:`Tutorials <T
How-To-Guides/Cross-compilation
How-To-Guides/Releasing/Releasing-a-Package
How-To-Guides/Using-Python-Packages
How-To-Guides/RQt-Port-Plugin-Windows
How-To-Guides/Run-2-nodes-in-single-or-separate-docker-containers
How-To-Guides/Visualizing-ROS-2-Data-With-Foxglove-Studio
How-To-Guides/Package-maintainer-guide
How-To-Guides/Building-a-Custom-Debian-Package
How-To-Guides/Core-maintainer-guide
How-To-Guides/Building-a-Custom-Deb-Package
How-To-Guides/Building-ROS-2-with-Tracing
How-To-Guides/Topics-Services-Actions
How-To-Guides/Using-Variants
Expand All @@ -53,8 +51,3 @@ If you are new and looking to learn the ropes, start with the :doc:`Tutorials <T
How-To-Guides/ROS-2-IDEs
How-To-Guides/Setup-ROS-2-with-VSCode-and-Docker-Container
How-To-Guides/Using-Custom-Rosdistro

.. toctree::
:hidden:

How-To-Guides/RQt-Source-Install
2 changes: 1 addition & 1 deletion source/How-To-Guides/Ament-CMake-Documentation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ The macros have additional parameters:
find_package(ament_cmake_gtest REQUIRED)
ament_add_gtest(some_test <test_sources>
APPEND_ENV PATH=some/addtional/path/for/testing/resources)
APPEND_ENV PATH=some/additional/path/for/testing/resources)
- ``APPEND_LIBRARY_DIRS``: append libraries so that they can be found by the linker at runtime.
This can be achieved by setting environment variables like ``PATH`` on Windows and ``LD_LIBRARY_PATH`` on Linux, but this makes the call platform specific.
Expand Down
2 changes: 1 addition & 1 deletion source/How-To-Guides/Building-ROS-2-with-Tracing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Furthermore, the functions can be completely removed through a CMake option, whi
Building without tracepoints
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This step depends on whether you are :doc:`building ROS 2 from source <../Installation/Alternatives/Ubuntu-Development-Setup>` or using ROS 2 binaries (:doc:`Debian packages <../Installation/Ubuntu-Install-Debians>` or :doc:`binary archive <../Installation/Alternatives/Ubuntu-Install-Binary>`).
This step depends on whether you are :doc:`building ROS 2 from source <../Installation/Alternatives/Ubuntu-Development-Setup>` or using ROS 2 binaries (:doc:`deb packages <../Installation/Ubuntu-Install-Debs>` or :doc:`binary archive <../Installation/Alternatives/Ubuntu-Install-Binary>`).
To remove the tracepoints, (re)build ``tracetools`` and set the ``TRACETOOLS_TRACEPOINTS_EXCLUDED`` CMake option to ``ON``:

.. tabs::
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
.. redirect-from::

Guides/Building-a-Custom-Debian-Package
How-To-Guides/Building-a-Custom-Debian-Package

Building a custom Debian package
================================
Building a custom deb package
=============================

Many Ubuntu users install ROS 2 on their system by installing :doc:`debian packages <../Installation/Ubuntu-Install-Debians>`.
This guide gives a short set of instructions to build local, custom Debian packages.
Many Ubuntu users install ROS 2 on their system by installing :doc:`deb packages <../Installation/Ubuntu-Install-Debs>`.
This guide gives a short set of instructions to build local, custom deb packages.

.. contents:: Table of Contents
:local:
Expand Down Expand Up @@ -38,10 +39,10 @@ Initialize the rosdep database by calling:
Note that the ``rosdep init`` command may fail if it has already been initialized in the past; this can safely be ignored.

Build the debian from the package
---------------------------------
Build the deb from the package
------------------------------

Run the following commands to build the debian:
Run the following commands to build the deb:

.. code:: bash
Expand Down
Loading

0 comments on commit bbf8276

Please # to comment.