|
1 | 1 | --- |
2 | 2 | title: Features Overview |
3 | 3 | permalink: /docs/overview/features/ |
| 4 | +redirect_from: |
| 5 | + - /docs/ |
| 6 | + - /docs/overview/ |
4 | 7 | --- |
5 | 8 |
|
6 | | -TODO(ralph-lange): Add few introductory sentences and a nice graphics. Then make this the overview page. |
7 | | - |
8 | | - |
9 | | - |
10 | | -### Microcontroller-optimized client API supporting all major ROS concepts |
11 | | - |
12 | | -Micro-ROS brings all major core concepts such as nodes, publish/subscribe, client/service, node graph, lifecycle, etc. onto microcontrollers (MCU). The client API of micro-ROS (in the C programming language) is based on the standard ROS 2 Client Support Library (rcl) and a set of extensions and convenience functions (rclc). |
13 | | - |
14 | | -The combination rcl+rclc is optimized for MCUs. After an initialization phase, it can be used without any dynamic memory allocations. The rclc package provides advanced execution mechanisms allowing implementing well-proven scheduling patterns from embedded systems engineering. |
15 | | - |
16 | | -### Seamless integration with ROS 2 |
17 | | - |
18 | | -The micro-ROS agent connects micro-ROS nodes (i.e. components) on MCUs seamlessly with standard ROS 2 systems. This allows accessing micro-ROS nodes with the known ROS 2 tools and APIs just as normal ROS nodes. |
19 | | - |
20 | | -### Multi-RTOS support with generic build system |
21 | | -Micro-ROS supports three popular open-source real-time operating sytems (RTOS): FreeRTOS, Zephyr, and NuttX. It can be ported on any RTOS that comes with a POSIX interface. |
22 | | - |
23 | | -The RTOS-specific build systems are integrated into few generic setup scripts, which are provided as a ROS 2 package. Therefore, ROS developers can use their usual command line tools. In addition, micro-ROS provides selected integrations with RTOS-specific tool chains (e.g., for ESP-IDF and Zephyr). |
24 | | - |
25 | | -### Extremely resource-constrained but flexible middleware |
26 | | - |
27 | | -Micro XRCE-DDS by eProsima meets all requirements for a middleware for deeply embedded systems. That is why micro-ROS has been one of the applications for this implementation of the new DDS for Extremely Resource Constrained Environments (XRCE) standard. For the integration with the ROS middleware interface (rmw) in the micro-ROS stack, static memory pools were introduced to avoid dynamic memory allocations at runtime. |
28 | | - |
29 | | -The middleware comes with built-in support for serial transports, UDP over Ethernet, Wi-Fi, and 6LoWPAN, and Bluetooth. Furthermore, the Micro XRCE-DDS source code provides templates for implementing support for further transports. |
30 | | - |
31 | | -### Permissive license |
32 | | - |
33 | | -The micro-ROS stack, including the Micro XRCE-DDS middleware, comes under the same permissive license as ROS 2, which is Apache License 2.0. (When building projects with micro-ROS, please take into account the license(s) of the underlying RTOS.) |
34 | | - |
35 | | -### Vibrant community and ecosystem |
36 | | - |
37 | | -Micro-ROS is developed by a constantly growing, self-organized community backed by the Embedded Working Group, a formal ROS 2 Working Group. The community shares entry level tutorials, provides support via Slack and GitHub, and meets in public Working Group video-calls on a monthly basis. As a matter of course, commercial support is provided for the Micro XRCE-DDS by eProsima. |
38 | | - |
39 | | -This community also create tools around micro-ROS. For example, to optimize micro-ROS-based applications to the MCU hardware, specific benchmarking tools have been developed. These allow checking memory usage, CPU time consumption and general performance. |
40 | | - |
41 | | -### Long-term maintainability and interoperability |
42 | | - |
43 | | -Micro-ROS is made up of well-established components: Famous open-source RTOSs, a standardized middleware, and the standard ROS 2 Client Support Library (rcl). In this way, the amount of micro-ROS-specific code was minimized for long-term maintainability. At the same time, the micro-ROS stack preserves the modularity of the standard ROS 2 stack. Micro-ROS can be used with a custom middleware layer - and thus standard - or a custom ROS client library. |
44 | | - |
45 | | -Furthermore, by the [System-Of-Systems Synthesizer](https://soss.docs.eprosima.com/) (SOSS), a fast and lightweight [OMG DDS-XTYPES standard](https://www.omg.org/spec/DDS-XTypes) integration tool, further middleware protocols can be connected. For example, we have developed the SOSS-FIWARE and SOSS-ROS2 System-Handles, which connect ROS 2 and micro-ROS with the [FIWARE Context Broker](https://www.fiware.org/) by the NGSIv2 (Next Generation Service Interface) standard by leveraging the integration capabilities of the SOSS core. |
| 9 | +<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> |
| 10 | +<script> |
| 11 | +$(document).ready( function() { |
| 12 | + $('.feature_description').hide(); |
| 13 | + $('.feature').click( function() { |
| 14 | + var featureDescription = $(this).children('.feature_description'); |
| 15 | + if (featureDescription.is(":visible")) { |
| 16 | + featureDescription.slideToggle(500); |
| 17 | + setTimeout(function() { |
| 18 | + featureDescription.prev('.feature_teaser').slideToggle(0); |
| 19 | + }, 500); |
| 20 | + } else { |
| 21 | + featureDescription.prev('.feature_teaser').slideToggle(0); |
| 22 | + featureDescription.slideToggle(500); |
| 23 | + } |
| 24 | + }); |
| 25 | +}); |
| 26 | +</script> |
| 27 | + |
| 28 | +<style> |
| 29 | + .feature_teaser { |
| 30 | + color: #AAAAAA; |
| 31 | + margin-left: 1.6em; |
| 32 | + } |
| 33 | + .feature_description { |
| 34 | + text-align: justify; |
| 35 | + margin-left: 1.6em; |
| 36 | + } |
| 37 | + .feature_teaser ~ p { |
| 38 | + margin: 0 0 5pt 0; |
| 39 | + } |
| 40 | + .feature_description ~ p { |
| 41 | + margin: 0 0 5pt 0; |
| 42 | + } |
| 43 | +</style> |
| 44 | + |
| 45 | +<div class="feature"> |
| 46 | + <h3 class="feature_name">☑ Microcontroller-optimized client API supporting all major ROS concepts</h3> |
| 47 | + <div class="feature_teaser"> |
| 48 | + <p>Micro-ROS brings all major core concepts ...</p> |
| 49 | + </div> |
| 50 | + <div class="feature_description"> |
| 51 | + <p>Micro-ROS brings all major core concepts such as nodes, publish/subscribe, client/service, node graph, lifecycle, etc. onto microcontrollers (MCU). The client API of micro-ROS (in the C programming language) is based on the standard ROS 2 Client Support Library (rcl) and a set of extensions and convenience functions (rclc).</p> |
| 52 | + <p>The combination rcl+rclc is optimized for MCUs. After an initialization phase, it can be used without any dynamic memory allocations. The rclc package provides advanced execution mechanisms allowing implementing well-proven scheduling patterns from embedded systems engineering.</p> |
| 53 | + </div> |
| 54 | +</div> |
| 55 | + |
| 56 | +<div class="feature"> |
| 57 | + <h3 class="feature_name">☑ Seamless integration with ROS 2</h3> |
| 58 | + <div class="feature_teaser"> |
| 59 | + <p>The micro-ROS agent connects micro-ROS nodes ...</p> |
| 60 | + </div> |
| 61 | + <div class="feature_description"> |
| 62 | + <p>The micro-ROS agent connects micro-ROS nodes (i.e. components) on MCUs seamlessly with standard ROS 2 systems. This allows accessing micro-ROS nodes with the known ROS 2 tools and APIs just as normal ROS nodes.</p> |
| 63 | + </div> |
| 64 | +</div> |
| 65 | + |
| 66 | +<div class="feature"> |
| 67 | + <h3 class="feature_name">☑ Multi-RTOS support with generic build system</h3> |
| 68 | + <div class="feature_teaser"> |
| 69 | + <p>Micro-ROS supports three popular open-source ...</p> |
| 70 | + </div> |
| 71 | + <div class="feature_description"> |
| 72 | + <p>Micro-ROS supports three popular open-source real-time operating sytems (RTOS): FreeRTOS, Zephyr, and NuttX. It can be ported on any RTOS that comes with a POSIX interface.</p> |
| 73 | + <p>The RTOS-specific build systems are integrated into few generic setup scripts, which are provided as a ROS 2 package. Therefore, ROS developers can use their usual command line tools. In addition, micro-ROS provides selected integrations with RTOS-specific tool chains (e.g., for ESP-IDF and Zephyr).</p> |
| 74 | + </div> |
| 75 | +</div> |
| 76 | + |
| 77 | +<div class="feature"> |
| 78 | + <h3 class="feature_name">☑ Extremely resource-constrained but flexible middleware</h3> |
| 79 | + <div class="feature_teaser"> |
| 80 | + <p>Micro XRCE-DDS by eProsima meets all requirements ...</p> |
| 81 | + </div> |
| 82 | + <div class="feature_description"> |
| 83 | + <p>Micro XRCE-DDS by eProsima meets all requirements for a middleware for deeply embedded systems. That is why micro-ROS has been one of the applications for this implementation of the new DDS for Extremely Resource Constrained Environments (XRCE) standard. For the integration with the ROS middleware interface (rmw) in the micro-ROS stack, static memory pools were introduced to avoid dynamic memory allocations at runtime.</p> |
| 84 | + <p>The middleware comes with built-in support for serial transports, UDP over Ethernet, Wi-Fi, and 6LoWPAN, and Bluetooth. Furthermore, the Micro XRCE-DDS source code provides templates for implementing support for further transports.</p> |
| 85 | + </div> |
| 86 | +</div> |
| 87 | + |
| 88 | +<div class="feature"> |
| 89 | + <h3 class="feature_name">☑ Permissive license</h3> |
| 90 | + <div class="feature_teaser"> |
| 91 | + <p>Micro-ROS comes under the same permissive ...</p> |
| 92 | + </div> |
| 93 | + <div class="feature_description"> |
| 94 | + <p>Micro-ROS comes under the same permissive license as ROS 2, which is Apache License 2.0. This applies to the micro-ROS client library, the middleware layer, and tools.</p> |
| 95 | + <p>When creating a project with an underlying RTOS, please take into account the license(s) of the RTOS project or vendor.</p> |
| 96 | + </div> |
| 97 | +</div> |
| 98 | + |
| 99 | +<div class="feature"> |
| 100 | + <h3 class="feature_name">☑ Vibrant community and ecosystem</h3> |
| 101 | + <div class="feature_teaser"> |
| 102 | + <p>Micro-ROS is developed by a constantly growing ...</p> |
| 103 | + </div> |
| 104 | + <div class="feature_description"> |
| 105 | + <p>Micro-ROS is developed by a constantly growing, self-organized community backed by the Embedded Working Group, a formal ROS 2 Working Group. The community shares entry level tutorials, provides support via Slack and GitHub, and meets in public Working Group video-calls on a monthly basis. As a matter of course, commercial support is provided for the Micro XRCE-DDS by eProsima.</p> |
| 106 | + <p>This community also create tools around micro-ROS. For example, to optimize micro-ROS-based applications to the MCU hardware, specific benchmarking tools have been developed. These allow checking memory usage, CPU time consumption and general performance.</p> |
| 107 | + </div> |
| 108 | +</div> |
| 109 | + |
| 110 | +<div class="feature"> |
| 111 | + <h3 class="feature_name">☑ Long-term maintainability and interoperability</h3> |
| 112 | + <div class="feature_teaser"> |
| 113 | + <p>Micro-ROS is made up of well-established components ...</p> |
| 114 | + </div> |
| 115 | + <div class="feature_description"> |
| 116 | + <p>Micro-ROS is made up of well-established components: Famous open-source RTOSs, a standardized middleware, and the standard ROS 2 Client Support Library (rcl). In this way, the amount of micro-ROS-specific code was minimized for long-term maintainability. At the same time, the micro-ROS stack preserves the modularity of the standard ROS 2 stack. Micro-ROS can be used with a custom middleware layer - and thus standard - or a custom ROS client library.</p> |
| 117 | + <p>Furthermore, by the [System-Of-Systems Synthesizer](https://soss.docs.eprosima.com/) (SOSS), a fast and lightweight [OMG DDS-XTYPES standard](https://www.omg.org/spec/DDS-XTypes) integration tool, further middleware protocols can be connected. For example, we have developed the SOSS-FIWARE and SOSS-ROS2 System-Handles, which connect ROS 2 and micro-ROS with the [FIWARE Context Broker](https://www.fiware.org/) by the NGSIv2 (Next Generation Service Interface) standard by leveraging the integration capabilities of the SOSS core.</p> |
| 118 | + </div> |
| 119 | +</div> |
0 commit comments