mROS 2 (mros2 as casually codename) realizes a agent-less and lightweight runtime environment compatible with ROS 2 for embedded devices.
mROS 2 mainly offers pub/sub APIs compatible with rclcpp for embedded devices.
mROS 2 consists of communication library for pub/sub APIs, RTPS protocol, UDP/IP stack, and real-time kernel. This repository provides the reference implementation of mROS 2 that can be operated on the Espressif Systems ESP32 boards. Please also check mros2 repository for more details and another implementations.
- Target device: ESP32 family
- Boards
- For now, these boards below are confirmed to run the example on them.
- These boards below are also confirmed by the development team, but not always supported in the latest version (due to our development resources,,,).
- These boards were confirmed to operate by our friendly users (any PRs are welcome to add this list based on your experience!!)
- Seeed Studio XIAO ESP32C3 (see #7)
- ESP32-C6-DevKitC-1 (see #21)
- Seeed Studio XIAO ESP32C6 (see #23)
- Seeed Studio XIAO ESP32S3 (see #24)
- SDK: ESP-IDF
- Kernel: ESP-IDF FreeRTOS
- Boards
- Host environment
- ROS 2 Humble Hawksbill on Ubuntu 22.04 LTS
- Network setting
- Make sure both the device and the host are connected to the same network.
- IP address needs to be assigned to the device by DHCP. We have not confirmed the operation using static IP setting yet. So you may not un-comment the
#define STATIC_IPline inplatform/wifi/wifi.h. - Please prepare the Wi-Fi router that provides 2.4 GHz band.
- Most of ESP32 only support 2.4 GHz.
- Note that you need to set up a dedicated SSID at 2.4 GHz. If the SSID has a band steering setting (that shares 2.4 GHz and 5 GHz), the communication of ESP32 may be disconnected during the operation.
- The firewall on the host (Ubuntu) needs to be disabled for ROS 2 (DDS) communication (e.g.
$ sudo ufw disable). - If the host is connected to the Internet with other network adapters, communication with mros2 may not work properly. In that case, please turn off them.
TODO:
Caution
The official page describes that supported platforms are TOPPERS, Mbed OS, ESP-IDF (FreeRTOS), and POSIX OS.
However, this library currently only supports ESP-IDF and ESP32 because it is very experimental.
Most programs of mROS 2 for ESP-IDF are based on the following repositories: mros2-esp32.
This version is only checked for building, so it is not confirmed to run.
Create a PlatformIO project, and add this repository URL to the lib_deps like following.
[env:m5stack-core-esp32]
platform = espressif32
board = m5stack-core-esp32
framework = espidf
lib_deps = https://github.com/realteck-ky/mros2-pioThe examples folder has useful mROS 2 application programs.
Copy it as main code in the src directory and build the project.