diff --git a/_data/docs.yml b/_data/docs.yml index 04140b6d..750eb5c7 100644 --- a/_data/docs.yml +++ b/_data/docs.yml @@ -2,6 +2,7 @@ docs: - overview/features - overview/hardware + - overview/rtos - overview/transports - overview/comparison - overview/ROS_2_feature_comparison diff --git a/_docs/overview/rtos/index.md b/_docs/overview/rtos/index.md new file mode 100644 index 00000000..2a872116 --- /dev/null +++ b/_docs/overview/rtos/index.md @@ -0,0 +1,159 @@ +--- +title: Supported RTOSes +permalink: /docs/overview/rtos/ +--- + + + +micro-ROS aims to **bring ROS 2 to microcontrollers** to allow having first-class ROS 2 entities in the embedded world. + +The standard approach to micro-ROS assumes a Real-Time Operating System underneath. + +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. + +To date, micro-ROS is supported by the RTOSes FreeRTOS, Zephyr, NuttX, in addition to Linux and Windows. +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 +a new firmware workspace. +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/). +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. +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. + + +## Real-Time Operating Systems officially supported by the project + +In this section, we review the main features of the three RTOSes supported officially by the project, and link to useful documentation. + +
+
+

FreeRTOS

+
+ Key features: +
    +
  • Extremely small footprint
  • +
  • POSIX extension available
  • +
  • Memory management tools
  • +
  • Standard and idle tasks available with assignable priorities
  • +
  • Transport resources: TCP/IP and lwIP
  • +
+ Resources: + +
+
+ +
+ +
+
+ +
+
+

Zephyr

+
+ Key features: +
    +
  • Small footprint
  • +
  • Native POSIX port
  • +
  • Cross Architecture: Huge collection of supported boards
  • +
  • Extensive suite of Kernel services
  • +
  • Multiple Scheduling Algorithms
  • +
  • Highly configurable/Modular for flexibility
  • +
  • Native Linux, macOS, and Windows Development
  • +
+ Resources: + +
+
+ +
+ +
+
+ +
+
+

NuttX

+
+ Key features: +
    +
  • POSIX compliant interface to a high degree
  • +
  • Rich Feature OS Set
  • +
  • Highly scalable
  • +
  • Real-Time behavior: fully pre-emptible; fixed priority, round-robin, and “sporadic” scheduling
  • +
+ Resources: + +
+
+ +
+ +
+
+ +## Bare metal support + +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. +Fin more details in the dedicated [repo](https://github.com/micro-ROS/micro_ros_arduino). + +The open-source Arduino Software (IDE) is a library making it easy to program any Arduino board. + +
+
+

Arduino bare-metal support

+
+ Key features: +
    +
  • Inexpensive
  • +
  • Cross-platform
  • +
  • Simple, clear programming environment
  • +
  • Open source and extensible software
  • +
  • Open source and extensible hardware
  • +
+ Resources: + +
+
+ +
+ +
+
+