Skip to content

Commit dab24ed

Browse files
committed
Updated intro text on Client Library.
Signed-off-by: Ralph Lange <ralph.lange@de.bosch.com>
1 parent 44b7431 commit dab24ed

2 files changed

Lines changed: 11 additions & 16 deletions

File tree

_docs/concepts/client_library/introduction/index.md

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,21 @@ redirect_from:
66
- /docs/concepts/client_library/
77
---
88

9-
The client library provides the micro-ROS API for the user code, i.e. for application-level micro-ROS nodes. The overall goal is to provide all relevant, major ROS 2 concepts in suitable implementation for microcontrollers. Where possible, API compatibility with ROS 2 shall be achieved for ease of portability.
9+
The Client Library provides the micro-ROS API for the user code, i.e., for application-level micro-ROS nodes. The goal is to provide all relevant, major ROS 2 concepts in an optimized implementation for microcontrollers. At the same time, we strive to make the API as compatible as possible to standard ROS 2, to facilitate porting of code.
1010

11-
In this undertaking, to minimize the long-term maintenance cost, we strive to use existing data structures and algorithms from the ROS 2 stack or to bring necessary changes in the mainline stack. This raises a lot of question regarding the applicability of existing ROS 2 layers on microcontrollers in terms of runtime efficiency, portability to different RTOS, dynamic memory management, etc.
11+
To minimize the long-term maintenance cost, we use existing data structures and algorithms from the ROS 2 stack and to bring necessary changes in the mainline stack as far as possible. That's why the micro-ROS client library is built up from standard [ROS 2 Client Support Library (rcl)](https://github.com/ros2/rcl/) and a new [ROS 2 Client Library package (rclc)](https://github.com/ros2/rclc/). Together, as depicted below, rcl + rclc form a feature-complete client library in the C programming language.
1212

13-
## Two-layered API
13+
<img src="/img/micro-ROS_architecture.png" style="display:block; width:50%; float:right;"/>
1414

15-
While C is still the dominating programming language for microcontrollers, there is a clear trend towards the use of higher-level languages, in particular C++. This trend is also driven by modern microcontrollers featuring several hundred kilobytes or even few megabytes of RAM.
15+
Important features and properties:
1616

17-
Therefore, we plan to offer/support two APIs:
17+
* Use of rcl data structures where possible to avoid runtime overhead by wrappers.
18+
* Convenience functions for common tasks (e.g., creation of a publisher, finalization of a subscription) provided by rclc.
19+
* Dedicated Executor for fine-grained control over triggering and processing order of callbacks.
20+
* Specialized implementations for graphs, lifecycle nodes, diagnostics, etc.
1821

19-
1. A **C API** based on the [ROS 2 Support Client Library (rcl)](https://github.com/ros2/rcl/), enriched with modular packages for execution management, diagnostics, parameters, ...
20-
2. A **C++ API** based on the [ROS 2 rclcpp](https://github.com/ros2/rclcpp/), which at first requires analyzing the fitness of rclcpp for use on microcontrollers, in particular regarding memory and CPU consumption as well as dynamic memory management.
22+
Check out our subpages for more information.
2123

22-
<img src="micro-ROS_stack.png" style="display:block; margin-left: auto; margin-right: auto;"/>
24+
<br style="clear:both;" />
2325

24-
The basis of discussion for this decision is documented in a dedicated [decision paper](decision_paper/).
25-
26-
## Advanced Concepts
27-
28-
Advanced concepts developed in the context of the client library are documented separately. In general, these concepts are developed for the standard rclcpp first, before implementing a tailored C version. These are:
29-
30-
* [Real-Time Executor](real-time_executor/)
31-
* [System Modes](system_modes/)
26+
For the interested reader: The rationales for the decision to use a combination of rcl + rclc are explained in our [decision paper](decision_paper/) from 2019.
-68.9 KB
Binary file not shown.

0 commit comments

Comments
 (0)