Skip to content

Commit 5cdc08c

Browse files
Rearrangement of the conceptual documents. (ros2#3732)
* Rearrangement of the conceptual documents. Lay it out in a way so we can incrementally explain the necessary concepts as readers need. Signed-off-by: Chris Lalancette <[email protected]> Co-authored-by: Michael Carroll <[email protected]>
1 parent c0b48e1 commit 5cdc08c

File tree

54 files changed

+624
-678
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+624
-678
lines changed

source/Concepts.rst

Lines changed: 3 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
.. _ConceptsHome:
2-
31
Concepts
42
========
53

@@ -8,113 +6,9 @@ Conceptual overviews provide relatively high-level, general background informati
86
.. toctree::
97
:maxdepth: 1
108

11-
Concepts/About-Domain-ID
12-
Concepts/About-Different-Middleware-Vendors
13-
Concepts/About-Logging
14-
Concepts/About-Quality-of-Service-Settings
15-
Concepts/About-ROS-2-Client-Libraries
16-
Concepts/About-ROS-Interfaces
17-
Concepts/About-ROS-2-Parameters
18-
Concepts/About-Executors
19-
Concepts/About-Topic-Statistics
20-
Concepts/About-Command-Line-Tools
21-
Concepts/About-RQt
22-
Concepts/About-Composition
23-
Concepts/About-Catment
24-
Concepts/About-Cross-Compilation
25-
Concepts/About-Security
26-
Concepts/About-Tf2
27-
28-
29-
The Core Stack Developer Concepts are much more detailed conceptual articles intended for developers who plan modify or contribute to the ROS 2 core:
30-
31-
.. toctree::
32-
:maxdepth: 2
33-
34-
Concepts/About-Build-System
35-
Concepts/About-Internal-Interfaces
36-
Concepts/About-Middleware-Implementations
37-
Concepts/About-ROS-2-Client-Libraries
38-
39-
Quick overview of ROS 2 Concepts
40-
--------------------------------
41-
42-
.. contents::
43-
:local:
44-
45-
ROS 2 is a middleware based on an anonymous publish/subscribe mechanism that allows for message passing between different ROS processes.
46-
47-
At the heart of any ROS 2 system is the ROS graph.
48-
The ROS graph refers to the network of nodes in a ROS system and the connections between them by which they communicate.
49-
50-
Graph Concepts
51-
^^^^^^^^^^^^^^
52-
53-
54-
* Nodes: A node is an entity that uses ROS to communicate with other nodes.
55-
* Messages: ROS data type used when subscribing or publishing to a topic.
56-
* Topics: Nodes can publish messages to a topic as well as subscribe to a topic to receive messages.
57-
* Discovery: The automatic process through which nodes determine how to talk to each other.
58-
59-
Nodes
60-
^^^^^
61-
62-
A node is a participant in the ROS graph.
63-
ROS nodes use a ROS client library to communicate with other nodes.
64-
Nodes can publish or subscribe to Topics.
65-
Nodes can also provide or use Services and Actions.
66-
There are configurable Parameters associated with a node.
67-
Connections between nodes are established through a distributed discovery process.
68-
Nodes may be located in the same process, in different processes, or on different machines.
69-
These concepts will be described in more detail in the sections that follow.
70-
71-
Client Libraries
72-
^^^^^^^^^^^^^^^^
73-
74-
ROS client libraries allow nodes written in different programming languages to communicate.
75-
There is a core ROS client library (RCL) that implements common functionality needed for the ROS APIs of different languages.
76-
This makes it so that language-specific client libraries are easier to write and that they have more consistent behavior.
77-
78-
The following client libraries are maintained by the ROS 2 team:
79-
80-
81-
* rclcpp = C++ client library
82-
* rclpy = Python client library
83-
84-
Additionally, other client libraries have been developed by the ROS community.
85-
See the :doc:`ROS 2 Client Libraries <Concepts/About-ROS-2-Client-Libraries>` article for more details.
86-
87-
Discovery
88-
^^^^^^^^^
89-
90-
Discovery of nodes happens automatically through the underlying middleware of ROS 2.
91-
It can be summarized as follows:
92-
93-
#. When a node is started, it advertises its presence to other nodes on the network with the same ROS domain (set with the ROS_DOMAIN_ID environment variable).
94-
Nodes respond to this advertisement with information about themselves so that the appropriate connections can be made and the nodes can communicate.
95-
#. Nodes periodically advertise their presence so that connections can be made with new-found entities, even after the initial discovery period.
96-
#. Nodes advertise to other nodes when they go offline.
97-
98-
Nodes will only establish connections with other nodes if they have compatible :doc:`Quality of Service <../Tutorials/Demos/Quality-of-Service>` settings.
99-
100-
Take the :ref:`talker-listener demo <talker-listener>` for example.
101-
Running the C++ talker node in one terminal will publish messages on a topic,
102-
and the Python listener node running in another terminal will subscribe to messages on the same topic.
103-
104-
You should see that these nodes discover each other automatically, and begin to exchange messages.
105-
106-
Security
107-
^^^^^^^^
108-
109-
ROS 2 includes the ability to secure communications among nodes within the ROS 2 computational graph.
110-
Similar to discovery, security happens through the underlying ROS 2 middleware (provided it has support for the corresponding security plugins).
111-
No additional software installation is needed to enable security; however, the middleware requires configuration files for each ROS graph participant.
112-
These files enable encryption and authentication, and define policies both for individual nodes and for the overall ROS graph.
113-
ROS 2 also adds a master "on/off" switch to control security behavior.
114-
115-
ROS utilities can create the authoritative `trust anchor <https://en.wikipedia.org/wiki/Trust_anchor>`_ for a ROS application, or an external certificate authority can be used.
116-
117-
See the :doc:`ROS 2 Security <Concepts/About-Security>` article for additional details or ROS security features.
9+
Concepts/Basic
10+
Concepts/Intermediate
11+
Concepts/Advanced
11812

11913

12014
Related Content
@@ -126,4 +20,3 @@ For a brief video introduction to ROS 2, see this community contributed content:
12620

12721
* `Getting started with ROS Part 1: Nodes, Parameters and Topics <https://youtu.be/46TPAKXBOF8>`_
12822
* `Getting started with ROS Part 2: Services and Actions <https://youtu.be/keZAJ83eEoM>`_
129-

0 commit comments

Comments
 (0)