You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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]>
@@ -8,113 +6,9 @@ Conceptual overviews provide relatively high-level, general background informati
8
6
.. toctree::
9
7
:maxdepth:1
10
8
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
118
12
119
13
120
14
Related Content
@@ -126,4 +20,3 @@ For a brief video introduction to ROS 2, see this community contributed content:
126
20
127
21
* `Getting started with ROS Part 1: Nodes, Parameters and Topics <https://youtu.be/46TPAKXBOF8>`_
128
22
* `Getting started with ROS Part 2: Services and Actions <https://youtu.be/keZAJ83eEoM>`_
0 commit comments