Skip to content

Commit 282a74a

Browse files
FranFinpablogs9
andauthored
Feature/add rtos page overview (micro-ROS#256)
* Add rtos page to overview section. * Added RTOS page in Overview. * Fix height * Minor adjustments. Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
1 parent 73c1da2 commit 282a74a

2 files changed

Lines changed: 160 additions & 0 deletions

File tree

_data/docs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
docs:
33
- overview/features
44
- overview/hardware
5+
- overview/rtos
56
- overview/transports
67
- overview/comparison
78
- overview/ROS_2_feature_comparison

_docs/overview/rtos/index.md

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
---
2+
title: Supported RTOSes
3+
permalink: /docs/overview/rtos/
4+
---
5+
6+
<style>
7+
.rtoscontainer {
8+
height: auto;
9+
display: flex;
10+
flex-direction: row;
11+
justify-content: flex-start;
12+
flex-wrap: wrap;
13+
}
14+
15+
.rtositem_image {
16+
width: 50%;
17+
display: flex;
18+
align-items: center;
19+
justify-content: center;
20+
}
21+
22+
.rtositem_description {
23+
width: 50%;
24+
}
25+
26+
.rtositem_image img {
27+
max-width: 70%;
28+
}
29+
</style>
30+
31+
micro-ROS aims to **bring ROS 2 to microcontrollers** to allow having first-class ROS 2 entities in the embedded world.
32+
33+
The standard approach to micro-ROS assumes a Real-Time Operating System underneath.
34+
35+
Even though recent developments aim at loosening this requirement, with the integration into Arduino IDE as an important step towards true micro-ROS bare-metal support, the RTOS-based support remains the main entrypoint to micro-ROS.
36+
37+
To date, micro-ROS is supported by the RTOSes FreeRTOS, Zephyr, NuttX, in addition to Linux and Windows.
38+
All three RTOSes are downloaded natively with the [micro-ROS build system](https://github.com/micro-ROS/micro_ros_setup), and can be chosen when creating
39+
a new firmware workspace.
40+
Dedicated tutorials for running your first micro-ROS application on each of these Operating Systems can be found [here](https://micro-ros.github.io/docs/tutorials/core/first_application_rtos/).
41+
The features common to all supported RTOSes are an API compliant with POSIX to some degree, extremely low to low footprint, and availability of different scheduling algorithms to ensure determinism in micro-ROS apps behavior.
42+
Find more details about each of the supported RTOSes below, and a more comprehensive explaination on "Why an RTOS?" in the Concepts section, as this page is meant to provide a schematic overview on the matter.
43+
44+
45+
## Real-Time Operating Systems officially supported by the project
46+
47+
In this section, we review the main features of the three RTOSes supported officially by the project, and link to useful documentation.
48+
49+
<div class="rtoscontainer">
50+
<div class="rtositem_description">
51+
<h3><b>FreeRTOS</b></h3>
52+
<div>
53+
<b>Key features:</b>
54+
<ul>
55+
<li>Extremely small footprint</li>
56+
<li>POSIX extension available</li>
57+
<li>Memory management tools</li>
58+
<li>Standard and idle tasks available with assignable priorities</li>
59+
<li>Transport resources: TCP/IP and lwIP</li>
60+
</ul>
61+
<b>Resources:</b>
62+
<ul>
63+
<li><a href="https://www.freertos.org/blog.html">Official FreeRTOS website</a></li>
64+
<li><a href="https://www.freertos.org/2020/09/micro-ros-on-freertos.html">micro-ROS on FreeRTOS</a></li>
65+
<li><a href="https://micro-ros.github.io/docs/tutorials/core/first_application_rtos/freertos/">First micro-ROS Application on FreeRTOS</a></li>
66+
</ul>
67+
</div>
68+
</div>
69+
70+
<div class="rtositem_image">
71+
<img src="https://upload.wikimedia.org/wikipedia/commons/4/4e/Logo_freeRTOS.png">
72+
</div>
73+
</div>
74+
75+
<div class="rtoscontainer">
76+
<div class="rtositem_description">
77+
<h3><b>Zephyr</b></h3>
78+
<div>
79+
<b>Key features:</b>
80+
<ul>
81+
<li>Small footprint</li>
82+
<li>Native POSIX port</li>
83+
<li>Cross Architecture: Huge collection of <a href="https://docs.zephyrproject.org/latest/boards/index.html">supported boards</a></li>
84+
<li>Extensive suite of Kernel services</li>
85+
<li>Multiple Scheduling Algorithms</li>
86+
<li>Highly configurable/Modular for flexibility</li>
87+
<li>Native Linux, macOS, and Windows Development</li>
88+
</ul>
89+
<b>Resources:</b>
90+
<ul>
91+
<li><a href="https://www.zephyrproject.org/">Official Zephyr website</a></li>
92+
<li><a href="https://www.zephyrproject.org/micro-ros-a-member-of-the-zephyr-project-and-integrated-into-the-zephyr-build-system-as-a-module/">micro-ROS on Zephyr</a></li>
93+
<li><a href="https://micro-ros.github.io/docs/tutorials/core/first_application_rtos/zephyr/">First micro-ROS Application on Zephyr</a></li>
94+
<li><a href="https://micro-ros.github.io/docs/tutorials/advanced/zephyr_emulator/">First micro-ROS Application on Zephyr Emulator</a></li>
95+
</ul>
96+
</div>
97+
</div>
98+
99+
<div class="rtositem_image">
100+
<img src="https://upload.wikimedia.org/wikipedia/commons/2/2d/Zephyr-logo.png">
101+
</div>
102+
</div>
103+
104+
<div class="rtoscontainer">
105+
<div class="rtositem_description">
106+
<h3><b>NuttX</b></h3>
107+
<div>
108+
<b>Key features:</b>
109+
<ul>
110+
<li>POSIX compliant interface to a high degree</li>
111+
<li>Rich Feature OS Set</li>
112+
<li>Highly scalable</li>
113+
<li>Real-Time behavior: fully pre-emptible; fixed priority, round-robin, and “sporadic” scheduling</li>
114+
</ul>
115+
<b>Resources:</b>
116+
<ul>
117+
<li><a href="https://nuttx.apache.org/">Official NuttX website</a></li>
118+
<li><a href="https://micro-ros.github.io/docs/tutorials/core/first_application_rtos/nuttx/">First micro-ROS Application on NuttX</a></li>
119+
</ul>
120+
</div>
121+
</div>
122+
123+
<div class="rtositem_image">
124+
<img src="https://upload.wikimedia.org/wikipedia/commons/b/b0/NuttX_logo.png">
125+
</div>
126+
</div>
127+
128+
## Bare metal support
129+
130+
Based on the release of micro-ROS as a standalone library + header files, and on the support provided to the Arduino IDE, micro-ROS is available as a bare-metal application, too.
131+
Fin more details in the dedicated [repo](https://github.com/micro-ROS/micro_ros_arduino).
132+
133+
The open-source Arduino Software (IDE) is a library making it easy to program any Arduino board.
134+
135+
<div class="rtoscontainer">
136+
<div class="rtositem_description">
137+
<h3><b>Arduino bare-metal support</b></h3>
138+
<div>
139+
<b>Key features:</b>
140+
<ul>
141+
<li>Inexpensive</li>
142+
<li>Cross-platform</li>
143+
<li>Simple, clear programming environment</li>
144+
<li>Open source and extensible software</li>
145+
<li>Open source and extensible hardware</li>
146+
</ul>
147+
<b>Resources:</b>
148+
<ul>
149+
<li><a href="https://www.arduino.cc/">Official Arduino Website</a></li>
150+
<li><a href="https://github.com/micro-ROS/micro_ros_arduino">micro_ros_arduino repo</a></li>
151+
</ul>
152+
</div>
153+
</div>
154+
155+
<div class="rtositem_image">
156+
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Arduino_Logo.svg/720px-Arduino_Logo.svg.png" width="500">
157+
</div>
158+
</div>
159+

0 commit comments

Comments
 (0)