-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathTERMINOLOGY
133 lines (94 loc) · 4.53 KB
/
TERMINOLOGY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
Master Process
==============
The master is the main process of Rapyuta that monitors and maintains the
command data structure which includes:
1. organization of connection between robots and Rapyuta
2. processing of all configuration requests from robots
3. monitoring network of other task sets
Container Process
=================
This process needs to be started on a machine to be able to start linux
containers on that machine. The Machine class as well as ContainerClient (which
is an endpoint on the machine (slave) side) class reside in this process. This
process needs super-user privileges since it starts and stops linux containers.
There can be many such processes but only one can run per machine.
Robot Process
=============
This process has to be started for any robot to connect to the cloud engine.
This process creates, destroys and maintains a list of Robot Namespaces. There
can be many such processes however using the current settings only one can run
per machine. Its tasks include:
1. forwarding of configuration requests to the Master
2. conversion of data messages
3. communication with robots and other Endpoints
Environment Process
===================
Environments are the processes that run inside containers and manage ROS
environments. There is a one-to-one relationship between an environment and a
container It has a connection to the master independent of the Container
process. Its tasks include:
1. communication with ROS nodes and other Endpoints
2. launching/stopping ROS nodes
3. adding/removing parameters
Proxy
=====
Proxy is the representation of an entity of the cloud engine on the master side.
Examples include - Robot Proxy, Environment Proxy, etc.
Network
=======
This is singleton class that exists in the master process and manages all the
network connections of all the Endpoints in the cloud engine.
Endpoint
========
An Endpoint represents a process which is capable of communicating with
non-Rapyuta components. The actual communication is relalized using an
Interface.
Namespace
=========
Namespace is the representation of an entity in the cloud engine on the slave
side which is capable of communicating with non-Rapyuta components. Its purpose
is to group indiviudal Interfaces of the same entity in an Endpoint.
Robot Namespace
===============
This class represents a robot in the cloud engine. When a robot connects to
robot process, it gets a representative namespace in the robot process which
then handles its request to the master process and everywhere else.
Environment Namespace
=====================
Environment Namespaces are objects representative of the linux containers that
get created by the container process. Thus, there is one-to-one relationship
between an Environment Namespace and running linux container.
Interfaces
==========
The Interfaces are the actual interface used for external communication with a
non-Rapyuta component. All Interfaces run in an Endpoint and belong to a
Namespace of the Endpoint. They implement an abstract Interface class that can
represent a service-provider, service-client, topic-publisher or a
topic-subscriber. Interfaces of Environment Endpoints are standard ROS
interfaces. Meanwhile, Interfaces of Robot Endpoints provide either converters,
which convert a data message from the external communication format
(JSON object) to the internal communication format (serialized ROS message) and
vice versa or forwarders which send the serialized ROS message as binary blob.
Protocols
=========
There are a few different protocols in use in the cloud engine.
These include:
1. WebsocketServerProtocol/WebsocketClientProtocol
They handle the connection between a client(rce-ros) and a robot process.
2. RCEInternalProtocol
It handles the internal communication between different Endpoints int the
cloud engine, i.e. between Environment Processes and Robot Processes.
Connection
==========
A Connection represents a connection between two endpoints. When interfaces are
connected they either create a new connection between their endpoints or reuse
an old connection. Its subclasses include EndpointConnection,
LoopbackConnection, and InterfaceConnection, etc.
User
====
The User represents generally a human who has one or more robots that need to
be connected to the cloud. Each User has a unique API key, which is used by the
robots for authentication. Additionally, all requests are initially processed by
the User and handed off to another component for further processing if
necessary. The User can have multiple Namespaces which, in turn, can have
several Interfaces.