![]() |
micro_ros_espidf package from micro_ros_espidf_component repomicro_ros_espidf |
Package Summary
Tags | No category tags. |
Version | 5.0.1 |
License | Apache License 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Description | micro-ROS ESP32 IDF component and sample code |
Checkout URI | https://github.com/micro-ros/micro_ros_espidf_component.git |
VCS Type | git |
VCS Version | jazzy |
Last Updated | 2025-01-30 |
Dev Status | UNKNOWN |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | esp-idf micro-ros |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Pablo Garrido
Authors
micro-ROS component for ESP-IDF
This component has been tested in ESP-IDF v4.4, and v5.2 with ESP32, ESP32-S2, ESP32-S3, ESP32-C3 and ESP32-C6.
Dependencies
This component needs colcon
and other Python 3 packages inside the IDF virtual environment in order to build micro-ROS packages:
. $IDF_PATH/export.sh
pip3 install catkin_pkg lark-parser colcon-common-extensions empy==3.3.4
Middlewares available
This package support the usage of micro-ROS on top of two different middlewares:
- eProsima Micro XRCE-DDS: the default micro-ROS middleware.
- embeddedRTPS: an experimental implementation of a RTPS middleware compatible with ROS 2.
In order to select it, use idf.py menuconfig
and go to micro-ROS Settings > micro-ROS middleware
Usage
You can clone this repo directly in the components
folder of your project.
If you encounter issues during the build process, ensure that you are running in a clean shell environment without the ROS 2 setup script sourced.
Example
In order to test a int32_publisher example:
. $IDF_PATH/export.sh
cd examples/int32_publisher
# Set target board [esp32|esp32s2|esp32s3|esp32c3]
idf.py set-target esp32
idf.py menuconfig
# Set your micro-ROS configuration and WiFi credentials under micro-ROS Settings
idf.py build
idf.py flash
idf.py monitor
To clean and rebuild all the micro-ROS library:
idf.py clean-microros
Is possible to use a micro-ROS Agent just with this docker command:
# UDPv4 micro-ROS Agent
docker run -it --rm --net=host microros/micro-ros-agent:foxy udp4 --port 8888 -v6
Build with docker container
It’s possible to build this example application using preconfigured docker container. Execute this line to build an example app using docker container:
docker run -it --rm --user espidf --volume="/etc/timezone:/etc/timezone:ro" -v $(pwd):/micro_ros_espidf_component -v /dev:/dev --privileged --workdir /micro_ros_espidf_component microros/esp-idf-microros:latest /bin/bash -c "cd examples/int32_publisher; idf.py menuconfig build flash monitor"
Dockerfile for this container is provided in the ./docker directory and available in dockerhub. This approach uses ESP-IDF v5.
Using serial transport
By default, micro-ROS component uses UDP transport, but is possible to enable UART transport or any other custom transport setting the colcon.meta
like:
...
"rmw_microxrcedds": {
"cmake-args": [
...
"-DRMW_UXRCE_TRANSPORT=custom",
...
]
},
...
An example on how to implement this external transports is available in examples/int32_publisher_custom_transport
.
Available ports are 0
, 1
and 2
corresponding UART_NUM_0
, UART_NUM_1
and UART_NUM_2
.
Is possible to use a micro-ROS Agent just with this docker command:
# Serial micro-ROS Agent
docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:foxy serial --dev [YOUR BOARD PORT] -v6
Purpose of the Project
This software is not ready for production use. It has neither been developed nor tested for a specific use case. However, the license conditions of the applicable Open Source licenses allow you to adapt the software to your needs. Before using it in a safety relevant setting, make sure that the software fulfills your requirements and adjust it according to any applicable safety standards, e.g., ISO 26262.
License
This repository is open-sourced under the Apache-2.0 license. See the LICENSE file for details.
For a list of other open-source components included in ROS 2 system_modes, see the file 3rd-party-licenses.txt.
Known Issues/Limitations
There are no known limitations.
Changelog for package micro_ros_espidf
5.0.1 (2024-06-03)
- Bump jazzy (#246)
- Add multithread to CI
(#238)
- Add multithread to CI
- Fix multithread example
* Override esp_macros fro micro-ROS build ---------
- Update IDF versions
(#230)
- Update IDF versions
* Update nightly ---------
- Forcing to use make on Unix (#223) (#225) This also makes the process fail if pulling external code fails. (cherry picked from commit d2249e8f34223f16cdec2e2151a5f5537842014d) Co-authored-by: flabrosse <<ffl@aber.ac.uk>>
- Ignore lttngpy (#222)
- Fix empy dep (#213) (#214) (cherry picked from commit dd5108214f747780ac401ab50a2b6ae97f1480fc) Co-authored-by: Pablo Garrido <<pablogs9@gmail.com>>
- Patch CI (#208) (#210) Remove when https://github.com/colcon/colcon-python-setup-py/issues/56 is solved (cherry picked from commit d0e63d9ab1d4b1b2777e68b715c5ea6d20ad68f4) Co-authored-by: Pablo Garrido <<pablogs9@gmail.com>>
- Remove micro-ROS fork (#204)
- Contributors: Antonio Cuadros, Pablo Garrido, mergify[bot]
5.0.0 (2023-06-12)
- Update rolling branches (#197)
- Replace repo with micro-ROS fork (#192)
- Fix rolling sources (#185)
- Ignore tracetools tests (#184)
- Update to new RCL fork (#182)
- Add IDF 5 support and deprecate versions 4.1 and 4.2 (#176)
- Add rosidl_core_generators (#158)
- Add example_interfaces package (backport #149) (#150)
4.0.0 (2022-05-25)
- Update banner (#143)
- Fixed build when PATH contains spaces (#140)
- Add logos (#137)
- Fix include paths (#136)
- Fix includes
- Fix service server example (#128) (#130)
- Fix include paths (#126)
- esp32s3: add esp32s3 support (#120) (#124)
- Fix atomics (#121)
- fix wrong ar command (#117) (#119)
- Add support for ESP-IDF v4.4 (#110)
- custom cmake target: idf.py clean-ros (#105) (#106)
- Fix embeddedRTPS repo (backport #102) (#103)
- Set ESP flag and change rtps branch (backport #99) (#100)
- Add embeddedRTPS as experimental middleware (backport #95) (#97)
- Fix heartbeat time (#91) (#93)
- Update dockerfile baseimage (#87) (#88)
- support for vcs import of extra packages (#83) (#85)
- Add multithread example (#82)
- ping pong application example for esp32 w/idf (#79) (#80)
- multichange tool (#76) (#78)
- Fix utils path (#73)
- Initial param example (#72)
- Add static type handler (#68)
- Enable introspection (#67)
- Initial changes for Rolling release
- Update Nightly
- Simplify Colcon installation (#64)
- Fix for building after sourcing ROS setup script (#63)
- Fix IDF 4.3 atomic 64 exchange (#62)
- Update RMW API
- Modify RMW API include (#41)
- optional app-colcon.meta in project directory (#57)
- Fix example
- Manually merged changes from old branch (#56)
- Remove IDF latest from CI (#55)
- ESP32c3 support (#52)
- Add IDF v4.3 support (#51)
- bugfix for ADDITIONAL_CLEAN_FILES (#49)
- Fix RCLC foxy (#48)
- Fix nightly
- Update custom transport example (#46)
- Update rclc repo (#40)
- Clean old transports files (#43)
- Fix include network util (#42)
- Update external transports API (#38)
- Fix colcon.meta (#39)
- Update nightly with latest IDF (#37)
- Add master IDF to CI (#33)
- Add issue template
- Add nightly CI
- Support extra packages (#30)
- examples: simplifies the examples and pack, when possible, into a single source file. (#26)
- feature/ethernet: Enable support of the microROS over the ethernet interface (#24)
- Update README.md
- support for CONFIG_PM_ENABLE added (#22)
- Add new micro_ros_msgs repo (#21)
- Support for ESP32-S2 (#19)
- Rework demo (#17)
- rework demo (#16)
- make: added -j to enable parallel build jobs (#15)
- Update meta defaults (#14)
- Add IDF v4.3 support (#13)
- Fix rclc spin time
- Update rclc_int32_publisher.c (#12)
- Refactor module structure (#11)
- Update README.md
- Update README.md
- Enabling Agent autodiscovery
- Update sdkconfig.defaults (#4)
- Update README.md
- Removed && in docker run (#7)
- Posibility to build in docker container. (#6)
- Typo
- Removed libatomic (#3)
- Update README.md
- Add Serial support (#2)
- Add licensing
- Added CI
- Added agent
- Updated Readme
- Deleted TODO
- Initial commit
- Initial commit