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
Micro-ROS offers **seven key features** that make it ready for use in your microcontroller-based robotic project:
51
51
52
52
<divclass="feature feature_is_active">
53
-
<divclass="feature_title">☑ Microcontroller-optimized client API supporting all major ROS concepts<spanclass="three_dots"> (...)</span></div>
53
+
<divclass="feature_title">✔ Microcontroller-optimized client API supporting all major ROS concepts<spanclass="three_dots"> (...)</span></div>
54
54
<divclass="feature_description">
55
55
<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>
56
56
<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>
57
57
</div>
58
58
</div>
59
59
60
60
<divclass="feature">
61
-
<pclass="feature_title">☑ Seamless integration with ROS 2<spanclass="three_dots"> (...)</span></p>
61
+
<pclass="feature_title">✔ Seamless integration with ROS 2<spanclass="three_dots"> (...)</span></p>
62
62
<divclass="feature_description">
63
63
<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>
64
64
</div>
65
65
</div>
66
66
67
67
<divclass="feature">
68
-
<pclass="feature_title">☑ Multi-RTOS support with generic build system<spanclass="three_dots"> (...)</span></p>
68
+
<pclass="feature_title">✔ Multi-RTOS support with generic build system<spanclass="three_dots"> (...)</span></p>
69
69
<divclass="feature_description">
70
70
<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>
71
71
<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>
72
72
</div>
73
73
</div>
74
74
75
75
<divclass="feature">
76
-
<pclass="feature_title">☑ Extremely resource-constrained but flexible middleware<spanclass="three_dots"> (...)</span></p>
76
+
<pclass="feature_title">✔ Extremely resource-constrained but flexible middleware<spanclass="three_dots"> (...)</span></p>
77
77
<divclass="feature_description">
78
78
<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>
79
79
<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>
<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>
87
87
<p>When creating a project with an underlying RTOS, please take into account the license(s) of the RTOS project or vendor.</p>
88
88
</div>
89
89
</div>
90
90
91
91
<divclass="feature">
92
-
<pclass="feature_title">☑ Vibrant community and ecosystem<spanclass="three_dots"> (...)</span></p>
92
+
<pclass="feature_title">✔ Vibrant community and ecosystem<spanclass="three_dots"> (...)</span></p>
93
93
<divclass="feature_description">
94
94
<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>
95
95
<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>
96
96
</div>
97
97
</div>
98
98
99
99
<divclass="feature">
100
-
<pclass="feature_title">☑ Long-term maintainability and interoperability<spanclass="three_dots"> (...)</span></p>
100
+
<pclass="feature_title">✔ Long-term maintainability and interoperability<spanclass="three_dots"> (...)</span></p>
101
101
<divclass="feature_description">
102
102
<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>
103
103
<p>Furthermore, by the <ahref="https://soss.docs.eprosima.com/">System-Of-Systems Synthesizer</a> (SOSS), a fast and lightweight <ahref="https://www.omg.org/spec/DDS-XTypes">OMG DDS-XTYPES standard</a> 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 <ahref="https://www.fiware.org/">FIWARE Context Broker</a> by the NGSIv2 (Next Generation Service Interface) standard by leveraging the integration capabilities of the SOSS core.</p>
0 commit comments