Overview
The Portenta H7 is part of Arduino's Pro series and stands out as one of the most powerful microcontrollers on the market. This is due to its STM32H7 dual-core processor, onboard wireless module supporting Wi-Fi and Bluetooth, and a graphical accelerator that enables external display output—making it an excellent choice for Micro-ROS applications.
Micro-ROS is an open-source framework designed to bring ROS 2 capabilities to microcontrollers, enabling seamless interoperability with traditional robotics systems. Micro-ROS nodes run on powerful microcontrollers like the Portenta H7, while a Micro-ROS agent operates on a host computer to facilitate high-level communication and coordination with other ROS 2 nodes.
Setup
(Source: micro-ROS/micro_ros_arduino: micro-ROS library for Arduino)
The Portenta H7 is one of the officially supported boards by Arduino for deploying Micro-ROS, making the setup process straightforward. Micro-ROS applications can be developed using the Arduino IDE, which provides a wide range of libraries and examples, simplifying development and integration.
Performance
(Source: micro-ROS/micro_ros_arduino: micro-ROS library for Arduino)
In this demo , I would be comparing ESP32 and the Portenta H7 on initializing McroROS. Additionally, I run a full Micro-ROS application on the Portenta H7.
Using the provided publisher example from the Arduino IDE, the Portenta H7 initializes Micro-ROS seamlessly, while the ESP32 encounters numerous compilation errors. This is expected, as the Micro-ROS library for ESP32 (v2.0.2) lags behind the current ESP32 library version (v3.1.1). Even when using the latest ESP32 library, the board manages to compile the code but fails to allocate the necessary resources for a Micro-ROS application. This failure is indicated by the built-in LED and further constrained by the ESP32's 280MHz clock speed.
Thanks to the power of the STM32H7, running at 480MHz with dual-core processing, the Portenta H7 can function as both a publisher and subscriber within a ROS 2 environment. Additionally, its onboard wireless module supports Wi-Fi and Bluetooth, enabling seamless wireless applications.
To fully test Micro-ROS on the Portenta H7, I assembled an RC car using a recycled board, controlled remotely via a Steam Deck.
Watch the video here: https://youtu.be/QnQJRikoqec
(Two subscribers and one publisher being run by Portenta H7)
In the photo above, the Micro-ROS setup on the Portenta H7 is publishing data from an ultrasonic sensor to the /obstacle_avoidance_publisher topic. Additionally, it has two subscribers: motor_value_topic and wheel_speed_value, which handle motor navigation. The Steam Deck acts as the Micro-ROS agent, processing ROS 2 applications to manage these three nodes while also controlling the motor’s PWM using the up and down arrow buttons.
Final Verdict
The Portenta H7 is a strong candidate for Micro-ROS applications, thanks to its powerful dual-core processor. In my tests, it successfully ran two subscribers and one publisher within a single node. However, this is when it started to reach its limits, as I noticed some delays in motor response at higher publishing frequencies. Reducing the publishing rate helped mitigate the latency.
The biggest downside is its price—at $113 CAD, it is relatively expensive. However, if you just need something to support your ROS project that acts as a ROS Node without needing a full OS like Ubuntu, the Portenta H7 can get the job done. In addition to its low power nature (due to not needing an OS) it has numerous GPIO pins, DFU for a more accurate calculation due to its Cortex M7 and an official support from Arduino giving you less time to troubleshoot and more time in innovation.
Top Comments