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
Copy file name to clipboardExpand all lines: _docs/concepts/client_library/system_modes/index.md
+35-11Lines changed: 35 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,10 +14,12 @@ Table of contents
14
14
-[System Hierarchy and Modes](#system-hierarchy-and-modes)
15
15
-[Mode Inference](#mode-inference)
16
16
-[Mode Manager](#mode-manager)
17
+
-[Error Handling and Rules (Experimental)](#error-handling-and-rules-experimental)
17
18
-[Roadmap](#roadmap)
18
19
-[2018](#2018)
19
20
-[2019](#2019)
20
21
-[2020](#2020)
22
+
-[2021](#2021)
21
23
-[Acknowledgments](#acknowledgments)
22
24
23
25
## Introduction and Goal
@@ -54,13 +56,15 @@ The main features of the approach are (detailed in the remainder):
54
56
55
57
## Requirements
56
58
57
-
The list of requirements is maintained in the doc folder of the micro-ROS system modes repository, at: https://github.com/micro-ROS/system_modes/blob/master/system_modes/doc/requirements.md
59
+
The list of requirements is maintained in the doc folder of the micro-ROS system modes repository, at:
Our approach is based on the ROS 2 Lifecycle. The primary goal of the ROS 2 lifecycle is to allows greater control over the state of a ROS system. It allows consistent initialization, restart and/or replacing of system parts during runtime. It provides a default lifecycle for managed ROS 2 nodes and a matching set of tools for managing lifecycle nodes.
62
65
63
-
The description of the concept can be found at: [http://design.ros2.org/articles/node_lifecycle.html](http://design.ros2.org/articles/node_lifecycle.html)
@@ -78,20 +82,20 @@ Documentation and code can be found at:
78
82
We provide a modeling concept for specifying the hierarchical composition of systems recursively from nodes and for specifying the states and modes of systems and (sub-)systems with the extended lifecycle, analogously to nodes. This system modes and hierarchy (SMH) model also includes an application-specific the mapping of the states and modes along the system hierarchy down to nodes.
The mode inference infers the entire system states (and modes) based on the lifecycle states, modes, and parameter configuration of its components, i.e. the ROS 2 lifecyle nodes. It parses the SMH model and subscribes to lifecycle/mode change requests, lifecycle/mode changes, and parameter events.
88
92
89
-
Based on the lifecycle change events it knows the _actual_ lifecycle state of all nodes. Based on parameter change events it knows the _actual_ parameter values of all nodes, which allows inference of the _modes_ of all nodes based on the SMH model.
93
+
Based on the lifecycle change events it knows the _actual_ lifecycle state of all nodes. Based on parameter change events it knows the _actual_ parameter values of all nodes, which allows inference of the _modes_ of all nodes based on the SMH model.
90
94
Based on the SMH model and the inferred states and modes of all nodes, states and modes of all (sub-)systems can be _inferred_ bottom-up along the system hierarchy.
91
95
This can be compared to the latest _requested_ states and modes to detect a deviation.
@@ -100,10 +104,26 @@ The mode inference can be best observed in the mode monitor, a console-based deb
100
104
Building upon the _Mode Inference_ mechanism, the mode manager provides additional services and topics to _manage and adapt_ system states and modes according to the specification in the SMH model.
If the _actual_ state/mode of the system or any of its parts diverges from the _target_ state/mode, we define rules that try to bring the system back to a valid _target_ state/mode, e.g., a degraded mode. Rules work in a bottom-up manner, i.e. starting from correcting nodes before sub-systems before systems. Rules are basically defined in the following way:
if _actual_ state/mode and _target_ state/mode diverge, but there is no rule for this exact situation, the bottom-up rules will just try to return the system/part to its _target_ state/mode.
123
+
*Potentiall dangereous, to be discussed:* what's happening, if the system is already on its way. E.g., a system or part was just commanded to transition to _ACTIVE.foo_, but is currently _activating_ (so doing everything right). In this case we have to avoid that the bottom-up rules will trigger.
124
+
125
+
*Note:* This feature is still experimental and might be subject to major changes. However, if no rules are specified in the model file, this feature is not used.
126
+
107
127
## Roadmap
108
128
109
129
### 2018
@@ -116,18 +136,22 @@ A simple example is provided at:
116
136
117
137
- Extended lifecycle concept and implementation for ROS 2 C++
118
138
- Mode inference and mode manager for ROS 2 C++
119
-
- ROS diagnostics port from ROS 1 to ROS 2
120
-
-Concept for bottom-up system modes rules
139
+
- ROS diagnostics port from ROS 1 to ROS 2 (prerequisite for micro-ROS diagnostics)
140
+
-Lightweight concept for error propagation and recovery mechanisms
121
141
122
142
### 2020
123
143
124
-
- Diagnostics framework for micro-ROS, interoperating with ROS 2 diagnostics
125
-
- MCU-specific diagnostics functions for resource usage on RTOS layer, latencies, statistics from middleware, etc.
126
144
- Integration of mode manager with real-time executor and/or roslaunch
127
-
- Lightweight concept for specifying error propagation and recovery mechanisms
145
+
- Lightweight implementation for specifying error propagation and recovery mechanisms
146
+
- ROS diagnostics port from ROS 1 to ROS 2 (prerequisite for micro-ROS diagnostics)
128
147
129
148
_Note: The extension of the ACTIVE state by modes (substates) was originally planned for 2020 but brought forward in 2018._
130
149
150
+
### 2021
151
+
152
+
- Diagnostics framework for micro-ROS, interoperating with ROS 2 diagnostics
153
+
- MCU-specific diagnostics functions for resource usage on RTOS layer, latencies, statistics from middleware, etc.
154
+
131
155
## Acknowledgments
132
156
133
157
This activity has received funding from the European Research Council (ERC) under the European Union's Horizon 2020 research and innovation programme (grant agreement n° 780785).
0 commit comments