From acc3bbb5c58197b1be4edd7c1768a712a1e9fc4b Mon Sep 17 00:00:00 2001 From: Aarav Gupta Date: Thu, 21 May 2026 16:25:10 +0530 Subject: [PATCH 1/5] Multiple CI and README.md Improvements (#324) Also removed CI compatibility and mentions of ESP-IDF v4.4 as it's been declared EOL by Espressif. - (cherry picked from commit d749ff191b5a3b0594b788393bd7da69816a62b7) # Conflicts: # .github/workflows/ci.yml # .github/workflows/nightly.yml # README.md --- .github/workflows/ci.yml | 39 +++++++++++++++++++++++++++-------- .github/workflows/nightly.yml | 17 ++++++++------- README.md | 27 +++++++++++++++++------- 3 files changed, 59 insertions(+), 24 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3d53251a..1392f3ea 100755 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,16 +2,28 @@ name: CI on: pull_request: + push: branches: - - '**' + - humble + - jazzy + - kilted + - rolling + workflow_call: + inputs: + branch: + description: "Branch to checkout" + required: false + type: string + default: "rolling" + workflow_dispatch: jobs: - micro_ros_idf: runs-on: ubuntu-latest strategy: fail-fast: false matrix: +<<<<<<< HEAD idf_target: [ esp32, esp32s2, esp32s3, esp32c3, esp32c6, esp32p4] idf_version: [ "espressif/idf:release-v4.4", "espressif/idf:release-v5.2", "espressif/idf:release-v5.5" ] exclude: @@ -24,22 +36,25 @@ jobs: # Skip IDF v5.2 + ESP32-P4 combination - idf_target: esp32p4 idf_version: espressif/idf:release-v5.2 +======= + idf_target: [esp32, esp32s2, esp32s3, esp32c3, esp32c6] + idf_version: [v5.2, v5.3, v5.4] +>>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) container: - image: ${{ matrix.idf_version }} + image: "espressif/idf:release-${{ matrix.idf_version }}" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v6 with: path: micro_ros_espidf_component + ref: ${{ inputs.branch || github.ref }} - name: Dependencies shell: bash run: | - apt update - export DEBIAN_FRONTEND=noninteractive - apt install -y git python3-pip . $IDF_PATH/export.sh +<<<<<<< HEAD pip3 install catkin_pkg lark-parser colcon-common-extensions empy==3.3.4 # This line avoids the error when using Python < 3.7 https://importlib-resources.readthedocs.io/en/latest/ pip3 install importlib-resources @@ -58,6 +73,9 @@ jobs: run: | . $IDF_PATH/export.sh pip3 install setuptools==68.1.2 +======= + pip install catkin_pkg colcon-common-extensions lark +>>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) - name: Build sample - int32_publisher shell: bash @@ -97,7 +115,7 @@ jobs: - name: Build sample - int32_publisher_custom_transport_usbcdc shell: bash - if: (matrix.idf_target == 'esp32s2' || matrix.idf_target == 'esp32s3') && matrix.idf_version == 'espressif/idf:release-v5.2' + if: matrix.idf_target == 'esp32s2' || matrix.idf_target == 'esp32s3' run: | . $IDF_PATH/export.sh cd micro_ros_espidf_component/examples/int32_publisher_custom_transport_usbcdc @@ -114,6 +132,7 @@ jobs: cd examples/multithread_publisher idf.py set-target ${{ matrix.idf_target }} idf.py build +<<<<<<< HEAD - name: EmbeddedRTPS shell: bash @@ -123,4 +142,6 @@ jobs: make -f libmicroros.mk clean cd examples/int32_publisher_embeddedrtps idf.py set-target ${{ matrix.idf_target }} - idf.py build \ No newline at end of file + idf.py build +======= +>>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 4ef09706..510612cf 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -1,19 +1,16 @@ name: Nightly on: - workflow_dispatch: - inputs: - name: - description: "Manual trigger" schedule: - - cron: '0 4 * * *' + - cron: '0 4 * * *' + workflow_dispatch: jobs: micro_ros_idf: - runs-on: ubuntu-latest strategy: fail-fast: false matrix: +<<<<<<< HEAD branch: [rolling, jazzy, humble] idf_target: [ esp32, esp32s2, esp32c3, esp32s3, esp32c6, esp32p4] idf_version: [ "espressif/idf:release-v4.4", "espressif/idf:release-v5.2", "espressif/idf:release-v5.5" ] @@ -120,4 +117,10 @@ jobs: make -f libmicroros.mk clean cd examples/int32_publisher_embeddedrtps idf.py set-target ${{ matrix.idf_target }} - idf.py build \ No newline at end of file + idf.py build +======= + branch: [humble, jazzy, kilted, rolling] + uses: ./.github/workflows/ci.yml + with: + branch: ${{ matrix.branch }} +>>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) diff --git a/README.md b/README.md index d9749b47..df0aa3e6 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,11 @@ # micro-ROS component for ESP-IDF +<<<<<<< HEAD This component has been tested in ESP-IDF v4.4, v5.2, and v5.5 with ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6 and ESP32-P4. +======= +This component has been tested in ESP-IDF v5.2, v5.3, and v5.4 with ESP32, ESP32-S2, ESP32-S3, ESP32-C3 and ESP32-C6. +>>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) ## Dependencies @@ -11,16 +15,22 @@ This component needs `colcon` and other Python 3 packages inside the IDF virtual ```bash . $IDF_PATH/export.sh +<<<<<<< HEAD pip3 install catkin_pkg lark-parser colcon-common-extensions empy==3.3.4 +======= +pip3 install catkin_pkg colcon-common-extensions lark +>>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) ``` ## Middlewares available This package support the usage of micro-ROS on top of two different middlewares: + - [eProsima Micro XRCE-DDS](https://micro-xrce-dds.docs.eprosima.com/en/latest/): the default micro-ROS middleware. -- [embeddedRTPS](https://github.com/embedded-software-laboratory/embeddedRTPS): an experimental implementation of a RTPS middleware compatible with ROS 2. +- [embeddedRTPS](https://github.com/embedded-software-laboratory/embeddedRTPS): an experimental implementation of a RTPS middleware compatible with ROS 2. (CURRENTLY NOT WORKING) 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. @@ -34,7 +44,11 @@ In order to test a int32_publisher example: ```bash . $IDF_PATH/export.sh cd examples/int32_publisher +<<<<<<< HEAD # Set target board [esp32|esp32s2|esp32s3|esp32c3|esp32c6|esp32p4] +======= +# Set target board [esp32|esp32s2|esp32s3|esp32c3|esp32c6] +>>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) idf.py set-target esp32 idf.py menuconfig # Set your micro-ROS configuration and WiFi credentials under micro-ROS Settings @@ -61,19 +75,16 @@ docker run -it --rm --net=host microros/micro-ros-agent:jazzy udp4 --port 8888 - It's possible to build this example application using the official Espressif [docker images](https://hub.docker.com/r/espressif/idf), following the same steps: ```bash -docker pull espressif/idf:release-v5.2 -# Run ESP-IDF container -docker run --name micro-ros-espidf-component-test -it espressif/idf:release-v5.2 bash +docker run --name micro-ros-espidf-component -it espressif/idf:release-v5.4 bash -git clone https://github.com/micro-ROS/micro_ros_espidf_component.git +git clone -b rolling https://github.com/micro-ROS/micro_ros_espidf_component.git cd micro_ros_espidf_component/ # Install dependencies -pip3 install catkin_pkg lark-parser colcon-common-extensions +pip install catkin_pkg colcon-common-extensions lark -$IDF_PATH/export.sh cd examples/int32_publisher -# Set target board [esp32|esp32s2|esp32s3|esp32c3] +# Set target board [esp32|esp32s2|esp32s3|esp32c3|esp32c6] idf.py set-target esp32 idf.py menuconfig # Set your micro-ROS configuration and WiFi credentials under micro-ROS Settings From 101dd0b65c8a4793cb0c48d31cb1c99c581add9f Mon Sep 17 00:00:00 2001 From: Aarav Gupta Date: Thu, 21 May 2026 16:42:34 +0530 Subject: [PATCH 2/5] Fix conflicts in ci.yml --- .github/workflows/ci.yml | 53 ++-------------------------------------- 1 file changed, 2 insertions(+), 51 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1392f3ea..8fd5afac 100755 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,23 +23,8 @@ jobs: strategy: fail-fast: false matrix: -<<<<<<< HEAD - idf_target: [ esp32, esp32s2, esp32s3, esp32c3, esp32c6, esp32p4] - idf_version: [ "espressif/idf:release-v4.4", "espressif/idf:release-v5.2", "espressif/idf:release-v5.5" ] - exclude: - # Skip IDF v4 + ESP32C6 combination - - idf_target: esp32c6 - idf_version: espressif/idf:release-v4.4 - # Skip IDF v4 + ESP32-P4 combination - - idf_target: esp32p4 - idf_version: espressif/idf:release-v4.4 - # Skip IDF v5.2 + ESP32-P4 combination - - idf_target: esp32p4 - idf_version: espressif/idf:release-v5.2 -======= - idf_target: [esp32, esp32s2, esp32s3, esp32c3, esp32c6] - idf_version: [v5.2, v5.3, v5.4] ->>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) + idf_target: [esp32, esp32s2, esp32s3, esp32c3, esp32c6, esp32p4] + idf_version: [v5.2, v5.3, v5.4, v5.5] container: image: "espressif/idf:release-${{ matrix.idf_version }}" @@ -54,28 +39,7 @@ jobs: shell: bash run: | . $IDF_PATH/export.sh -<<<<<<< HEAD - pip3 install catkin_pkg lark-parser colcon-common-extensions empy==3.3.4 - # This line avoids the error when using Python < 3.7 https://importlib-resources.readthedocs.io/en/latest/ - pip3 install importlib-resources - # this installs the modules also for global python interpreter, needed for IDF v5 - # IDF 5.5 uses Python 3.12 which has externally-managed-environment protection - if [ "${{ matrix.idf_version }}" == "espressif/idf:release-v5.5" ]; then \ - /usr/bin/pip3 install --break-system-packages catkin_pkg lark-parser colcon-common-extensions empy==3.3.4 importlib-resources; \ - else \ - /usr/bin/pip3 install catkin_pkg lark-parser colcon-common-extensions empy==3.3.4 importlib-resources; \ - fi - - # This line can be removed when https://github.com/colcon/colcon-python-setup-py/issues/56 is solved - - name: Patch setuptools - shell: bash - if: matrix.idf_version == 'espressif/idf:release-v4.4' - run: | - . $IDF_PATH/export.sh - pip3 install setuptools==68.1.2 -======= pip install catkin_pkg colcon-common-extensions lark ->>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) - name: Build sample - int32_publisher shell: bash @@ -132,16 +96,3 @@ jobs: cd examples/multithread_publisher idf.py set-target ${{ matrix.idf_target }} idf.py build -<<<<<<< HEAD - - - name: EmbeddedRTPS - shell: bash - run: | - . $IDF_PATH/export.sh - cd micro_ros_espidf_component - make -f libmicroros.mk clean - cd examples/int32_publisher_embeddedrtps - idf.py set-target ${{ matrix.idf_target }} - idf.py build -======= ->>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) From f04877109faaa29b4b7e8ba75108da87e1ea9d59 Mon Sep 17 00:00:00 2001 From: Aarav Gupta Date: Thu, 21 May 2026 16:43:53 +0530 Subject: [PATCH 3/5] Fix conflicts in nightly.yml --- .github/workflows/nightly.yml | 110 ---------------------------------- 1 file changed, 110 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 510612cf..129bf167 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -10,117 +10,7 @@ jobs: strategy: fail-fast: false matrix: -<<<<<<< HEAD - branch: [rolling, jazzy, humble] - idf_target: [ esp32, esp32s2, esp32c3, esp32s3, esp32c6, esp32p4] - idf_version: [ "espressif/idf:release-v4.4", "espressif/idf:release-v5.2", "espressif/idf:release-v5.5" ] - exclude: - # Skip IDF v4 + ESP32C6 combination - - idf_target: esp32c6 - idf_version: espressif/idf:release-v4.4 - # Skip IDF v4 + ESP32-P4 combination - - idf_target: esp32p4 - idf_version: espressif/idf:release-v4.4 - # Skip IDF v5.2 + ESP32-P4 combination - - idf_target: esp32p4 - idf_version: espressif/idf:release-v5.2 - - - container: - image: ${{ matrix.idf_version }} - - steps: - - uses: actions/checkout@v2 - with: - path: micro_ros_espidf_component - ref: ${{ matrix.branch }} - - - name: Dependencies - shell: bash - run: | - apt update - export DEBIAN_FRONTEND=noninteractive - apt install -y git python3-pip - . $IDF_PATH/export.sh - pip3 install catkin_pkg lark-parser empy==3.3.4 colcon-common-extensions - # This line avoids the error when using Python < 3.7 https://importlib-resources.readthedocs.io/en/latest/ - pip3 install importlib-resources - # this installs the modules also for global python interpreter, needed for IDF v5 - # IDF 5.5 uses Python 3.12 which has externally-managed-environment protection - if [ "${{ matrix.idf_version }}" == "espressif/idf:release-v5.5" ]; then \ - /usr/bin/pip3 install --break-system-packages catkin_pkg lark-parser colcon-common-extensions importlib-resources; \ - else \ - /usr/bin/pip3 install catkin_pkg lark-parser colcon-common-extensions importlib-resources; \ - fi - - # This line can be removed when https://github.com/colcon/colcon-python-setup-py/issues/56 is solved - - name: Patch setuptools - shell: bash - if: matrix.idf_version == 'espressif/idf:release-v4.4' - run: | - . $IDF_PATH/export.sh - pip3 install setuptools==68.1.2 - - - name: Build sample - int32_publisher - shell: bash - run: | - . $IDF_PATH/export.sh - cd micro_ros_espidf_component/examples/int32_publisher - idf.py set-target ${{ matrix.idf_target }} - idf.py build - - - name: Build sample - low_consumption - shell: bash - if: matrix.idf_target != 'esp32c3' && matrix.idf_target != 'esp32s3' && matrix.idf_target != 'esp32c6' && matrix.idf_target != 'esp32p4' - run: | - . $IDF_PATH/export.sh - cd micro_ros_espidf_component/examples/low_consumption - idf.py set-target ${{ matrix.idf_target }} - idf.py build - - - name: Build sample - handle_static_types - shell: bash - run: | - . $IDF_PATH/export.sh - cd micro_ros_espidf_component/examples/handle_static_types - idf.py set-target ${{ matrix.idf_target }} - idf.py build - - - name: Build sample - int32_publisher_custom_transport - shell: bash - run: | - . $IDF_PATH/export.sh - cd micro_ros_espidf_component - make -f libmicroros.mk clean - sed -i 's/DRMW_UXRCE_TRANSPORT=udp/DRMW_UXRCE_TRANSPORT=custom/' colcon.meta - cd examples/int32_publisher_custom_transport - idf.py set-target ${{ matrix.idf_target }} - idf.py build - - - name: Build sample - multithread_publisher - shell: bash - run: | - . $IDF_PATH/export.sh - cd micro_ros_espidf_component - make -f libmicroros.mk clean - sed -i 's/DRMW_UXRCE_TRANSPORT=udp/DRMW_UXRCE_TRANSPORT=custom/' colcon.meta - cd examples/multithread_publisher - idf.py set-target ${{ matrix.idf_target }} - idf.py build - - - name: EmbeddedRTPS - if: ${{ matrix.branch == 'humble' }} - shell: bash - run: | - . $IDF_PATH/export.sh - cd micro_ros_espidf_component - make -f libmicroros.mk clean - cd examples/int32_publisher_embeddedrtps - idf.py set-target ${{ matrix.idf_target }} - idf.py build -======= branch: [humble, jazzy, kilted, rolling] uses: ./.github/workflows/ci.yml with: branch: ${{ matrix.branch }} ->>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) From fb87e3a580879ca9f34a4545c4b93b465b2ae132 Mon Sep 17 00:00:00 2001 From: Aarav Gupta Date: Thu, 21 May 2026 16:48:04 +0530 Subject: [PATCH 4/5] Fix conflicts in README.md --- README.md | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/README.md b/README.md index df0aa3e6..3a734c3f 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,7 @@ # micro-ROS component for ESP-IDF -<<<<<<< HEAD -This component has been tested in ESP-IDF v4.4, v5.2, and v5.5 with ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6 and ESP32-P4. -======= -This component has been tested in ESP-IDF v5.2, v5.3, and v5.4 with ESP32, ESP32-S2, ESP32-S3, ESP32-C3 and ESP32-C6. ->>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) +This component has been tested in ESP-IDF v5.2, v5.3, v5.4, and v5.5 with ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6, and ESP32-P4. ## Dependencies @@ -15,11 +11,7 @@ This component needs `colcon` and other Python 3 packages inside the IDF virtual ```bash . $IDF_PATH/export.sh -<<<<<<< HEAD -pip3 install catkin_pkg lark-parser colcon-common-extensions empy==3.3.4 -======= pip3 install catkin_pkg colcon-common-extensions lark ->>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) ``` ## Middlewares available @@ -44,11 +36,7 @@ In order to test a int32_publisher example: ```bash . $IDF_PATH/export.sh cd examples/int32_publisher -<<<<<<< HEAD # Set target board [esp32|esp32s2|esp32s3|esp32c3|esp32c6|esp32p4] -======= -# Set target board [esp32|esp32s2|esp32s3|esp32c3|esp32c6] ->>>>>>> d749ff1 (Multiple CI and README.md Improvements (#324)) idf.py set-target esp32 idf.py menuconfig # Set your micro-ROS configuration and WiFi credentials under micro-ROS Settings From 3e9819492400d6aad6403d6f435af0e19d0fcecd Mon Sep 17 00:00:00 2001 From: Aarav Gupta Date: Thu, 21 May 2026 16:52:30 +0530 Subject: [PATCH 5/5] Update git clone branch from 'rolling' to 'jazzy' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a734c3f..7b196c6f 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ It's possible to build this example application using the official Espressif [do ```bash docker run --name micro-ros-espidf-component -it espressif/idf:release-v5.4 bash -git clone -b rolling https://github.com/micro-ROS/micro_ros_espidf_component.git +git clone -b jazzy https://github.com/micro-ROS/micro_ros_espidf_component.git cd micro_ros_espidf_component/ # Install dependencies