Skip to content

Commit db94e2f

Browse files
committed
Multiple CI and README.md Improvements
Also removed CI compatibility and mentions of ESP-IDF v4.4 as it's been declared EOL by Espressif. -
1 parent c95cddc commit db94e2f

3 files changed

Lines changed: 35 additions & 146 deletions

File tree

.github/workflows/ci.yml

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,51 +2,44 @@ name: CI
22

33
on:
44
pull_request:
5+
push:
56
branches:
6-
- '**'
7+
- humble
8+
- jazzy
9+
- kilted
10+
- rolling
11+
workflow_call:
12+
inputs:
13+
branch:
14+
description: 'Branch to checkout'
15+
required: false
16+
type: string
17+
default: 'rolling'
18+
workflow_dispatch:
719

820
jobs:
9-
1021
micro_ros_idf:
1122
runs-on: ubuntu-latest
1223
strategy:
1324
fail-fast: false
1425
matrix:
15-
idf_target: [ esp32, esp32s2, esp32s3, esp32c3, esp32c6]
16-
idf_version: [ "espressif/idf:release-v5.2" ]
17-
exclude:
18-
# Skip IDF v4 + ESP32C6 combination
19-
- idf_target: esp32c6
20-
idf_version: espressif/idf:release-v4.4
26+
idf_target: [esp32, esp32s2, esp32s3, esp32c3, esp32c6]
27+
idf_version: [v5.2, v5.3, v5.4]
2128

2229
container:
23-
image: ${{ matrix.idf_version }}
30+
image: 'espressif/idf:release-${{ matrix.idf_version }}'
2431

2532
steps:
26-
- uses: actions/checkout@v2
33+
- uses: actions/checkout@v6
2734
with:
2835
path: micro_ros_espidf_component
36+
ref: ${{ inputs.branch || github.ref }}
2937

3038
- name: Dependencies
3139
shell: bash
32-
run: |
33-
apt update
34-
export DEBIAN_FRONTEND=noninteractive
35-
apt install -y git python3-pip
36-
. $IDF_PATH/export.sh
37-
pip3 install catkin_pkg lark-parser colcon-common-extensions
38-
# This line avoids the error when using Python < 3.7 https://importlib-resources.readthedocs.io/en/latest/
39-
pip3 install importlib-resources
40-
# this installs the modules also for global python interpreter, needed for IDF v5
41-
/usr/bin/pip3 install catkin_pkg lark-parser colcon-common-extensions importlib-resources
42-
43-
# This line can be removed when https://github.com/colcon/colcon-python-setup-py/issues/56 is solved
44-
- name: Patch setuptools
45-
shell: bash
46-
if: matrix.idf_version == 'espressif/idf:release-v4.4'
4740
run: |
4841
. $IDF_PATH/export.sh
49-
pip3 install setuptools==68.1.2
42+
pip install catkin_pkg colcon-common-extensions lark
5043
5144
- name: Build sample - int32_publisher
5245
shell: bash
@@ -86,7 +79,7 @@ jobs:
8679
8780
- name: Build sample - int32_publisher_custom_transport_usbcdc
8881
shell: bash
89-
if: (matrix.idf_target == 'esp32s2' || matrix.idf_target == 'esp32s3') && matrix.idf_version == 'espressif/idf:release-v5.2'
82+
if: matrix.idf_target == 'esp32s2' || matrix.idf_target == 'esp32s3'
9083
run: |
9184
. $IDF_PATH/export.sh
9285
cd micro_ros_espidf_component/examples/int32_publisher_custom_transport_usbcdc

.github/workflows/nightly.yml

Lines changed: 6 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -1,117 +1,16 @@
11
name: Nightly
22

33
on:
4-
workflow_dispatch:
5-
inputs:
6-
name:
7-
description: "Manual trigger"
84
schedule:
9-
- cron: '0 4 * * *'
5+
- cron: '0 4 * * *'
6+
workflow_dispatch:
107

118
jobs:
129
micro_ros_idf:
13-
runs-on: ubuntu-latest
1410
strategy:
1511
fail-fast: false
1612
matrix:
17-
branch: [rolling, jazzy, humble]
18-
idf_target: [ esp32, esp32s2, esp32c3, esp32s3, esp32c6]
19-
idf_version: [ "espressif/idf:release-v4.4", "espressif/idf:release-v5.2" ]
20-
exclude:
21-
# Skip IDF v4 + ESP32C6 combination
22-
- idf_target: esp32c6
23-
idf_version: espressif/idf:release-v4.4
24-
# Skip IDF v4 for rolling and kilted
25-
- branch: rolling
26-
idf_version: espressif/idf:release-v4.4
27-
- branch: kilted
28-
idf_version: espressif/idf:release-v4.4
29-
30-
31-
container:
32-
image: ${{ matrix.idf_version }}
33-
34-
steps:
35-
- uses: actions/checkout@v2
36-
with:
37-
path: micro_ros_espidf_component
38-
ref: ${{ matrix.branch }}
39-
40-
- name: Dependencies
41-
shell: bash
42-
run: |
43-
apt update
44-
export DEBIAN_FRONTEND=noninteractive
45-
apt install -y git python3-pip
46-
. $IDF_PATH/export.sh
47-
pip3 install catkin_pkg lark-parser empy==3.3.4 colcon-common-extensions
48-
# This line avoids the error when using Python < 3.7 https://importlib-resources.readthedocs.io/en/latest/
49-
pip3 install importlib-resources
50-
# this installs the modules also for global python interpreter, needed for IDF v5
51-
/usr/bin/pip3 install catkin_pkg lark-parser empy==3.3.4 colcon-common-extensions importlib-resources
52-
53-
# This line can be removed when https://github.com/colcon/colcon-python-setup-py/issues/56 is solved
54-
- name: Patch setuptools
55-
shell: bash
56-
if: matrix.idf_version == 'espressif/idf:release-v4.4'
57-
run: |
58-
. $IDF_PATH/export.sh
59-
pip3 install setuptools==68.1.2
60-
61-
- name: Build sample - int32_publisher
62-
shell: bash
63-
run: |
64-
. $IDF_PATH/export.sh
65-
cd micro_ros_espidf_component/examples/int32_publisher
66-
idf.py set-target ${{ matrix.idf_target }}
67-
idf.py build
68-
69-
- name: Build sample - low_consumption
70-
shell: bash
71-
if: matrix.idf_target != 'esp32c3' && matrix.idf_target != 'esp32s3' && matrix.idf_target != 'esp32c6'
72-
run: |
73-
. $IDF_PATH/export.sh
74-
cd micro_ros_espidf_component/examples/low_consumption
75-
idf.py set-target ${{ matrix.idf_target }}
76-
idf.py build
77-
78-
- name: Build sample - handle_static_types
79-
shell: bash
80-
run: |
81-
. $IDF_PATH/export.sh
82-
cd micro_ros_espidf_component/examples/handle_static_types
83-
idf.py set-target ${{ matrix.idf_target }}
84-
idf.py build
85-
86-
- name: Build sample - int32_publisher_custom_transport
87-
shell: bash
88-
run: |
89-
. $IDF_PATH/export.sh
90-
cd micro_ros_espidf_component
91-
make -f libmicroros.mk clean
92-
sed -i 's/DRMW_UXRCE_TRANSPORT=udp/DRMW_UXRCE_TRANSPORT=custom/' colcon.meta
93-
cd examples/int32_publisher_custom_transport
94-
idf.py set-target ${{ matrix.idf_target }}
95-
idf.py build
96-
97-
- name: Build sample - multithread_publisher
98-
shell: bash
99-
run: |
100-
. $IDF_PATH/export.sh
101-
cd micro_ros_espidf_component
102-
make -f libmicroros.mk clean
103-
sed -i 's/DRMW_UXRCE_TRANSPORT=udp/DRMW_UXRCE_TRANSPORT=custom/' colcon.meta
104-
cd examples/multithread_publisher
105-
idf.py set-target ${{ matrix.idf_target }}
106-
idf.py build
107-
108-
- name: EmbeddedRTPS
109-
if: ${{ matrix.branch == 'humble' }}
110-
shell: bash
111-
run: |
112-
. $IDF_PATH/export.sh
113-
cd micro_ros_espidf_component
114-
make -f libmicroros.mk clean
115-
cd examples/int32_publisher_embeddedrtps
116-
idf.py set-target ${{ matrix.idf_target }}
117-
idf.py build
13+
branch: [humble, jazzy, kilted, rolling]
14+
uses: ./.github/workflows/ci.yml
15+
with:
16+
branch: ${{ matrix.branch }}

README.md

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,26 @@
33

44
# micro-ROS component for ESP-IDF
55

6-
This component has been tested in ESP-IDF v5.2 with ESP32, ESP32-S2, ESP32-S3, ESP32-C3 and ESP32-C6.
7-
8-
_Note: ESP-IDF v4.4 is supported only in ROS 2 Humble and Jazzy due to Python version incompatibilities._
6+
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.
97

108
## Dependencies
119

1210
This component needs `colcon` and other Python 3 packages inside the IDF virtual environment in order to build micro-ROS packages:
1311

1412
```bash
1513
. $IDF_PATH/export.sh
16-
pip3 install catkin_pkg lark-parser colcon-common-extensions
14+
pip3 install catkin_pkg colcon-common-extensions lark
1715
```
1816

1917
## Middlewares available
2018

2119
This package support the usage of micro-ROS on top of two different middlewares:
20+
2221
- [eProsima Micro XRCE-DDS](https://micro-xrce-dds.docs.eprosima.com/en/latest/): the default micro-ROS middleware.
2322
- [embeddedRTPS](https://github.com/embedded-software-laboratory/embeddedRTPS): an experimental implementation of a RTPS middleware compatible with ROS 2.
2423

2524
In order to select it, use `idf.py menuconfig` and go to `micro-ROS Settings > micro-ROS middleware`
25+
2626
## Usage
2727

2828
You can clone this repo directly in the `components` folder of your project.
@@ -36,7 +36,7 @@ In order to test a int32_publisher example:
3636
```bash
3737
. $IDF_PATH/export.sh
3838
cd examples/int32_publisher
39-
# Set target board [esp32|esp32s2|esp32s3|esp32c3]
39+
# Set target board [esp32|esp32s2|esp32s3|esp32c3|esp32c6]
4040
idf.py set-target esp32
4141
idf.py menuconfig
4242
# Set your micro-ROS configuration and WiFi credentials under micro-ROS Settings
@@ -63,19 +63,16 @@ docker run -it --rm --net=host microros/micro-ros-agent:rolling udp4 --port 8888
6363
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:
6464

6565
```bash
66-
docker pull espressif/idf:release-v5.2
67-
# Run ESP-IDF container
68-
docker run --name micro-ros-espidf-component-test -it espressif/idf:release-v5.2 bash
66+
docker run --name micro-ros-espidf-component -it espressif/idf:release-v5.4 bash
6967

70-
git clone https://github.com/micro-ROS/micro_ros_espidf_component.git
68+
git clone -b rolling https://github.com/micro-ROS/micro_ros_espidf_component.git
7169
cd micro_ros_espidf_component/
7270

7371
# Install dependencies
74-
pip3 install catkin_pkg lark-parser colcon-common-extensions
72+
pip install catkin_pkg colcon-common-extensions lark
7573

76-
$IDF_PATH/export.sh
7774
cd examples/int32_publisher
78-
# Set target board [esp32|esp32s2|esp32s3|esp32c3]
75+
# Set target board [esp32|esp32s2|esp32s3|esp32c3|esp32c6]
7976
idf.py set-target esp32
8077
idf.py menuconfig
8178
# Set your micro-ROS configuration and WiFi credentials under micro-ROS Settings

0 commit comments

Comments
 (0)