6.2. Build System Components¶
6.2.1. Renesas e2 Studio¶
Renesas RA Family is the official supported hardware of micro-ROS. This family of MCUs provides a wide range of features based on Arm® Cortex®-M33, M23, and M4 processor cores.
Renesas e2 Studio provides a whole integrated development environment that allows for professional development, test and profiling of embedded applications. The micro-ROS component for Renesas provides a set of tools and instructions to integrate the build and configuration of micro-ROS within a Renesas e2 Studio project.
This package supports multiple RTOSes (FreeRTOS and Azure RTOS), as well as a bare-metal approach. Also, a wide range of transport layers are available: UART, UDP/IP, TCP/IP, USB-CDC and CAN/FD.
Note
For detailed instructions on how to use micro-ROS with this platform, please refer to micro-ROS for Renesas e2 Studio Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component renesas_e2_studio
6.2.2. Espressif ESP-IDF¶
micro-ROS component for ESP-IDF allows the integration of the micro-ROS stack in one of the most famous WiFI-enabled MCUs: the ESP32 family.
By means of this component, it is easy integrate, configure and deploy a micro-ROS application that can communicate with the ROS 2 dataspace over WiFi, UART or USB-CDC. By default, this toolchain integrates FreeRTOS as framework and allows the user to run micro-ROS tasks simultaneously along with other user process.
Most of the ESP32 versions are supported: ESP32, ESP32-S2, ESP32-S3 and even the RISC-V based MCU of Espressif, the ESP32-C3.
Note
For detailed instructions on how to use micro-ROS with this platform visit micro-ROS component for ESP-IDF Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component esp_idf
6.2.3. Zephyr RTOS¶
Zephyr RTOS is an RTOS for embedded systems supported by the Linux Foundation. It provides a full featured and layered architectured RTOS ready for deploy production-ready applications. Thanks to the huge amount of ready-to-use drivers, it will be easy to integrate connectivity solutions such as Bluetooth BLE, WiFi, USB or CAN.
With the micro-ROS module for Zephyr RTOS, ROS 2 users will find easy to integrate an embedded micro-ROS application in the Zephyr ecosystem. This module support a considerable part of the list of supported boards by Zephyr.
Note
For detailed instructions on how to use micro-ROS with this platform visit micro-ROS module for Zephyr Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component zephyr_rtos
6.2.4. ARM MBed RTOS¶
micro-ROS provides a module for integration ROS 2 embedded application in ARM MBed RTOS. A basic UART transport is provided for version v6.8 and beyond.
Note
For detailed instructions on how to use micro-ROS with this platform visit micro-ROS module for Mbed RTOS Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component mbed_rtos
6.2.5. NuttX RTOS¶
NuttX is one of the most complete and mature RTOS available. It is supported by Apache Foundation and provides a piece of software with emphasis on standard compliance and small footprint. It is a powerful and flexible RTOS that can be used for embedded applications. Also, it is compliant with POSIX and ANSI standards.
micro-ROS component for NuttX provides an example application environment where the micro-ROS stack is integrated in the NuttX 10 build system and can be ran as a NuttX application with an UART transport.
Note
For detailed instructions on how to use micro-ROS with this platform visit micro-ROS app for Nuttx RTOS Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component nuttx_rtos
6.2.6. Microsoft Azure RTOS¶
Azure RTOS is the embedded IoT development environment of Microsoft. It provides a huge amount of solutions and ready-to-use libraries with focus in cloud applications and connectivity.
By means of this module, micro-ROS is integrated in ThreadX (the Azure RTOS scheduler), using NetX (the Azure RTOS network stack) to provide a UDP/IP transport.
Note
For detailed instructions on how to use micro-ROS with this platform visit micro-ROS app for Microsoft Azure RTOS Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component azure_rtos
6.2.7. TI Tiva C Series¶
Texas Instruments Tiva C Series is a family of MCU based on ARM Cortex-M4F. micro-ROS provides support for this platform and a basic USB-CDC transport.
Note
For detailed instructions on how to use micro-ROS with this platform visit micro-ROS app for TI Tiva™ C Series TM4C123G Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component tiva_c_series
6.2.8. ST Micro ST Cube IDE/MX¶
STM32Cube is one of the preferred options for using the ST Micro STM32 family. By means of this module, the micro-ROS user will find easy to integrate the micro-ROS stack in a STM32Cube project.
All the STM32 MCUs are supported by this IDE and most of them should be able to run the micro-ROS stack. By now, multiple Nucleo boards featuring STM32F4 and STM42F7 devices has been tested a proven to work. By using this module the micro-ROS user will find it easy to port micro-ROS to its own STM32 with FreeRTOS and the provided serial based transport.
Note
For detailed instructions on how to use micro-ROS with this platform visit micro-ROS for STM32CubeMX/IDE Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component stm32cube
6.2.9. Platform.IO¶
Platform.IO is one of the most popular collaborative platform for embedded development. It provides a large set of supported platforms, frameworks and libraries for embedded development. All of this based with an intuitive configuration procedure and an automated toolchain installation.
By using this module, micro-ROS user will be able to integrate micro-ROS in their Platform.IO projects just by including a couple of configuration lines. Some of the out-of-the-box supported transport are: UART, WiFi and Ethernet. Also, the micro-ROS user will find easy to port micro-ROS to the large list of supported platforms.
Note
For detailed instructions on how to use micro-ROS with this platform visit micro-ROS for PlatformIO Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component platformio
6.2.10. Arduino¶
Arduino is the reference development framework to introduce new users to the embedded world. Using their user-friendly IDE and tools, Arduino users can easily go from their first blinky LED to the their own micro-ROS applications.
micro-ROS for Arduino provides a set of prebuilt libraries for reference platforms so the user do not have to handle the micro-ROS build procedure. Also, for advanced users, instructions for customizing the installation and recompiling the library are provided.
Note
For detailed instructions on how to use micro-ROS with this platform visit micro-ROS for Arduino Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component arduino
6.2.11. Raspberry Pi Pico¶
Raspberry Pi Pico is the versatile embedded and low cost solution of Raspberry Pi for microcontroller environments. It features a dual core Cortex-M0+ based silicon named RP2040, which include a wide variety of peripherals such as I2C, SPI, UART or GPIO, and even a hardware programmable module named PIO. Also a full featured API for hardware abstraction are provided within the SDK.
micro-ROS module for Raspberry Pi Pico SDK provides a set of prebuilt libraries so the user do not have to handle the micro-ROS build procedure. Also, for advanced users, instructions for customizing the installation and recompiling the library are provided.
Note
For detailed instructions on how to use micro-ROS with this platform visit micro-ROS for Raspberry Pi Pico Github repository or use your Vulcanexus distribution to download this module:
source /opt/vulcanexus/jazzy/setup.bash
ros2 run micro_ros_setup component raspberry_pi_pico