diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 11f5d2fe..31e93553 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: micro_ros_build: runs-on: ubuntu-latest container: - image: ubuntu:jammy + image: ubuntu:24.04 strategy: fail-fast: false steps: @@ -32,8 +32,6 @@ jobs: - name: Dependencies run: | apt update - apt install -y python3-pip - pip3 install colcon-common-extensions rosdep update --rosdistro ${{ env.ROS_DISTRO }} rosdep install --rosdistro ${{ env.ROS_DISTRO }} -y --from-paths src --ignore-src -y @@ -51,60 +49,57 @@ jobs: name: micro_ros_build_${{ inputs.ci_target_ref }} path: install - # Skiped due to libfastcdr version 1 distributed en ROS 2 Rolling - # micro_ros_agent: - # runs-on: ubuntu-latest - # container: - # image: ubuntu:jammy - # strategy: - # fail-fast: false - # needs: micro_ros_build - - # steps: - # - uses: actions/checkout@v4 - # with: - # path: src/micro_ros_setup - # ref: ${{ inputs.ci_target_ref }} - - # - uses: ros-tooling/setup-ros@0.7.7 - # with: - # use-ros2-testing: false - # required-ros-distributions: ${{ env.ROS_DISTRO }} - - # - name: dependencies - # run: | - # apt update - # apt install -y python3-pip - # pip3 install colcon-common-extensions - # apt install -y ros-${{ env.ROS_DISTRO }}-rmw-fastrtps-cpp - # rosdep update --rosdistro ${{ env.ROS_DISTRO }} - # rosdep install --rosdistro ${{ env.ROS_DISTRO }} -y --from-paths src --ignore-src -y - - # - uses: actions/download-artifact@v1 - # with: - # name: micro_ros_build_${{ inputs.ci_target_ref }} - # path: install - - # # Workaround https://github.com/actions/upload-artifact/issues/38 - # - run: | - # chmod +x -R install - - # - name: build - # run: | - # . /opt/ros/${{ env.ROS_DISTRO }}/setup.sh - # . install/local_setup.sh - # ros2 run micro_ros_setup create_agent_ws.sh - # ros2 run micro_ros_setup build_agent.sh - - # - name: installation - # run: | - # (test -f install/micro_ros_agent/lib/micro_ros_agent/micro_ros_agent) && true || false + micro_ros_agent: + runs-on: ubuntu-latest + container: + image: ubuntu:24.04 + strategy: + fail-fast: false + needs: micro_ros_build + + steps: + - uses: actions/checkout@v4 + with: + path: src/micro_ros_setup + ref: ${{ inputs.ci_target_ref }} + + - uses: ros-tooling/setup-ros@0.7.7 + with: + use-ros2-testing: false + required-ros-distributions: ${{ env.ROS_DISTRO }} + + - name: dependencies + run: | + apt update + apt install -y ros-${{ env.ROS_DISTRO }}-rmw-fastrtps-cpp + rosdep update --rosdistro ${{ env.ROS_DISTRO }} + rosdep install --rosdistro ${{ env.ROS_DISTRO }} -y --from-paths src --ignore-src -y + + - uses: actions/download-artifact@v1 + with: + name: micro_ros_build_${{ inputs.ci_target_ref }} + path: install + + # Workaround https://github.com/actions/upload-artifact/issues/38 + - run: | + chmod +x -R install + + - name: build + run: | + . /opt/ros/${{ env.ROS_DISTRO }}/setup.sh + . install/local_setup.sh + ros2 run micro_ros_setup create_agent_ws.sh + ros2 run micro_ros_setup build_agent.sh + + - name: installation + run: | + (test -f install/micro_ros_agent/lib/micro_ros_agent/micro_ros_agent) && true || false micro_ros_client: runs-on: ubuntu-latest needs: micro_ros_build container: - image: ubuntu:jammy + image: ubuntu:24.04 strategy: fail-fast: false matrix: @@ -204,10 +199,6 @@ jobs: configuration: weather_publisher binary: 'firmware/bin/weather_publisher' - - rtos: mbed - platform: disco_l475vg_iot01a - binary: 'firmware/micro_ros_mbed/cmake_build/DISCO_L475VG_IOT01A/develop/GCC_ARM/micro_ros_mbed.bin' - steps: - uses: actions/checkout@v4 with: @@ -223,9 +214,6 @@ jobs: run: | apt update apt upgrade -y - apt-get update - apt install -y python3-pip - pip3 install colcon-common-extensions cmake rosdep update --rosdistro ${{ env.ROS_DISTRO }} rosdep install --rosdistro ${{ env.ROS_DISTRO }} -y --from-paths src --ignore-src -y diff --git a/README.md b/README.md index c2139c56..9c59be6a 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,6 @@ This package provides tools and utils to crosscompile micro-ROS with just the co | RTOS | Platform | Version | Example | Recommended Alternative | | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| [Azure RTOS](https://azure.microsoft.com/es-es/services/rtos/) / [FreeRTOS](https://www.freertos.org/) / Bare metal | [Renesas RA6M5](https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra6m5-200mhz-arm-cortex-m33-trustzone-highest-integration-ethernet-and-can-fde) | Renesas e2 studio | `renesas_ra ra6m5` | **[micro-ROS component for Renesas e2 studio and RA6M5](https://github.com/micro-ROS/micro_ros_renesas2estudio_component)** | | [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F446RE](https://www.st.com/en/evaluation-tools/nucleo-f446re.html) 1 | STM32CubeMX latest | `freertos nucleo_f446re` | **[micro-ROS utils for STM32CubeMX and STM32CubeIDE](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils)** | | [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F446ZE](https://www.st.com/en/evaluation-tools/nucleo-f446ze.html) 1 | STM32CubeMX latest | `freertos nucleo_f446ze` | **[micro-ROS utils for STM32CubeMX and STM32CubeIDE](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils)** | | [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F746ZG](https://www.st.com/en/evaluation-tools/nucleo-f746zg.html) 1 | STM32CubeMX latest | `freertos nucleo_f746zg` | **[micro-ROS utils for STM32CubeMX and STM32CubeIDE](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils)** | @@ -42,7 +41,6 @@ This package provides tools and utils to crosscompile micro-ROS with just the co | [Zephyr](https://www.zephyrproject.org/) | [ST B-L475E-IOT01A](https://docs.zephyrproject.org/latest/boards/arm/disco_l475_iot1/doc/index.html) | v2.6.0 | `zephyr discovery_l475_iot1` | **[micro-ROS module for Zephyr RTOS](https://github.com/micro-ROS/micro_ros_zephyr_module)** | | [Zephyr](https://www.zephyrproject.org/) | [ST Nucleo H743ZI](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) 1 | v2.6.0 | `zephyr nucleo_h743zi` | **[micro-ROS module for Zephyr RTOS](https://github.com/micro-ROS/micro_ros_zephyr_module)** | | [Zephyr](https://www.zephyrproject.org/) | [Zephyr emulator](https://docs.zephyrproject.org/2.3.0/boards/posix/native_posix/doc/index.html) | v2.6.0 | `zephyr host` | **[micro-ROS module for Zephyr RTOS](https://github.com/micro-ROS/micro_ros_zephyr_module)** | -| [Mbed](https://os.mbed.com/) | [ST B-L475E-IOT01A](https://os.mbed.com/platforms/ST-Discovery-L475E-IOT01A/) | v6.6 | `mbed disco_l475vg_iot01a` | **[micro-ROS module for Mbed RTOS](https://github.com/micro-ROS/micro_ros_mbed)** | | - | Static library (.a) and headers (.h) 3 | - | `generate_lib` | | | Linux | *Host 2* | Ubuntu 18.04/20.04 | `host` | | | Android | [AOSP](https://source.android.com) 1 | Latest | `android generic` | | @@ -162,17 +160,17 @@ Please note that each RTOS has its configuration approach that you might use for In summary, the supported configurations for transports are: -| | FreeRTOS | Zephyr | Mbed | -| ----------------------------- | :---------------: | :----------------: | :---: | -| Olimex STM32-E407 | UART, Network | USB, UART | - | -| ST B-L475E-IOT01A | - | USB, UART, Network | UART | -| Crazyflie 2.1 | Custom Radio Link | - | - | -| Espressif ESP32 | UART, WiFI UDP | - | - | -| ST Nucleo F446RE 1 | UART | UART | - | -| ST Nucleo F446ZE 1 | UART | - | - | -| ST Nucleo H743ZI 1 | - | UART | - | -| ST Nucleo F746ZG 1 | UART | UART | - | -| ST Nucleo F767ZI 1 | UART | - | - | +| | FreeRTOS | Zephyr | +| ----------------------------- | :---------------: | :----------------: | +| Olimex STM32-E407 | UART, Network | USB, UART | +| ST B-L475E-IOT01A | - | USB, UART, Network | +| Crazyflie 2.1 | Custom Radio Link | - | +| Espressif ESP32 | UART, WiFI UDP | - | +| ST Nucleo F446RE 1 | UART | UART | +| ST Nucleo F446ZE 1 | UART | - | +| ST Nucleo H743ZI 1 | - | UART | +| ST Nucleo F746ZG 1 | UART | UART | +| ST Nucleo F767ZI 1 | UART | - | *1 Community supported, may have lack of official support* diff --git a/config/freertos/esp32/create.sh b/config/freertos/esp32/create.sh index 59fa3966..19c420c6 100755 --- a/config/freertos/esp32/create.sh +++ b/config/freertos/esp32/create.sh @@ -19,14 +19,14 @@ pushd $FW_TARGETDIR >/dev/null echo "Error: python3-pip package must be installed before continuing..." exit 1 fi - pip3 install virtualenv + pip3 install virtualenv --break-system-packages python3 esp-idf/tools/idf_tools.py install-python-env eval $(python3 $FW_TARGETDIR/toolchain/esp-idf/tools/idf_tools.py export --prefer-system) . $IDF_PATH/export.sh - pip3 install catkin_pkg lark-parser colcon-common-extensions + pip3 install catkin_pkg lark-parser colcon-common-extensions --break-system-packages popd >/dev/null diff --git a/config/mbed/dev_ros2_packages.txt b/config/mbed/dev_ros2_packages.txt deleted file mode 100644 index b8e217e7..00000000 --- a/config/mbed/dev_ros2_packages.txt +++ /dev/null @@ -1,2 +0,0 @@ -keep: - none \ No newline at end of file diff --git a/config/mbed/dev_uros_packages.repos b/config/mbed/dev_uros_packages.repos deleted file mode 100644 index 56f46b6f..00000000 --- a/config/mbed/dev_uros_packages.repos +++ /dev/null @@ -1 +0,0 @@ -repositories: diff --git a/config/mbed/generic/board.repos b/config/mbed/generic/board.repos deleted file mode 100644 index bf60b337..00000000 --- a/config/mbed/generic/board.repos +++ /dev/null @@ -1,5 +0,0 @@ -repositories: - micro_ros_mbed: - type: git - url: https://github.com/micro-ROS/micro_ros_mbed - version: rolling diff --git a/config/mbed/generic/build.sh b/config/mbed/generic/build.sh deleted file mode 100755 index 72c3bc60..00000000 --- a/config/mbed/generic/build.sh +++ /dev/null @@ -1,11 +0,0 @@ -. $PREFIX/config/utils.sh - -export PATH=~/.local/bin:"$PATH" - -pushd $FW_TARGETDIR >/dev/null - - pushd micro_ros_mbed >/dev/null - mbed-tools compile -m $PLATFORM -t GCC_ARM - popd >/dev/null - -popd >/dev/null diff --git a/config/mbed/generic/client_uros_packages.repos b/config/mbed/generic/client_uros_packages.repos deleted file mode 100644 index 56f46b6f..00000000 --- a/config/mbed/generic/client_uros_packages.repos +++ /dev/null @@ -1 +0,0 @@ -repositories: diff --git a/config/mbed/generic/create.sh b/config/mbed/generic/create.sh deleted file mode 100755 index ffcf9b00..00000000 --- a/config/mbed/generic/create.sh +++ /dev/null @@ -1,31 +0,0 @@ -CMAKE_VERSION_NUMBER=$(cmake --version | grep "[0-9]*\.[0-9]*\.[0-9]*" | cut -d ' ' -f 3) -CMAKE_VERSION_MAJOR_NUMBER=$(echo $CMAKE_VERSION_NUMBER | cut -d '.' -f 1) -CMAKE_VERSION_MINOR_NUMBER=$(echo $CMAKE_VERSION_NUMBER | cut -d '.' -f 2) -CMAKE_VERSION_PATCH_NUMBER=$(echo $CMAKE_VERSION_NUMBER | cut -d '.' -f 3) - -if ! (( $CMAKE_VERSION_MAJOR_NUMBER > 3 || \ - $CMAKE_VERSION_MAJOR_NUMBER == 3 && $CMAKE_VERSION_MINOR_NUMBER > 19 || \ - $CMAKE_VERSION_MAJOR_NUMBER == 3 && $CMAKE_VERSION_MINOR_NUMBER == 19 && $CMAKE_VERSION_PATCH_NUMBER >= 0 )); then - echo "Error: installed CMake version must be equal or greater than 3.19.0." - echo "Your current version is $CMAKE_VERSION_NUMBER." - echo "Please if not installed follow the instructions: https://apt.kitware.com/" - exit 1 -fi - -export PATH=~/.local/bin:"$PATH" - -pushd $FW_TARGETDIR >/dev/null - - pip3 install mbed-tools - - # Import repos - vcs import --input $PREFIX/config/$RTOS/generic/board.repos - - pushd micro_ros_mbed >/dev/null - echo https://github.com/ARMmbed/mbed-os/\#mbed-os-6.10.0 > mbed-os.lib - mbed-tools deploy - popd >/dev/null - - # TODO (pablogs): Avoid current approach and rely on the standalone module - # rm -rf dev_ws mcu_ws -popd >/dev/null diff --git a/config/mbed/generic/flash.sh b/config/mbed/generic/flash.sh deleted file mode 100755 index 70be36d8..00000000 --- a/config/mbed/generic/flash.sh +++ /dev/null @@ -1,11 +0,0 @@ -. $PREFIX/config/utils.sh - -export PATH=~/.local/bin:"$PATH" - -pushd $FW_TARGETDIR >/dev/null - - pushd micro_ros_mbed >/dev/null - mbed-tools compile -m DISCO_L475VG_IOT01A -t GCC_ARM -f - popd >/dev/null - -popd >/dev/null diff --git a/config/mbed/generic/package.xml b/config/mbed/generic/package.xml deleted file mode 100644 index 86063ec0..00000000 --- a/config/mbed/generic/package.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - firmware - 0.0.0 - Micro-ROS dependecies for Mbed RTOS - Pablo Garrido - APL2 - - gcc-arm-none-eabi - ninja-build - gperf - wget - xz-utils - gcc-multilib - g++-multilib - openocd - - diff --git a/config/mbed/generic/supported_platforms b/config/mbed/generic/supported_platforms deleted file mode 100644 index 96510e93..00000000 --- a/config/mbed/generic/supported_platforms +++ /dev/null @@ -1 +0,0 @@ -disco_l475vg_iot01a diff --git a/config/mbed/list_apps.sh b/config/mbed/list_apps.sh deleted file mode 100644 index 944298a0..00000000 --- a/config/mbed/list_apps.sh +++ /dev/null @@ -1,7 +0,0 @@ -function print_available_apps { - -} - -function check_available_app { - -} \ No newline at end of file diff --git a/config/renesas_ra/dev_ros2_packages.txt b/config/renesas_ra/dev_ros2_packages.txt deleted file mode 100644 index 23fb6a5c..00000000 --- a/config/renesas_ra/dev_ros2_packages.txt +++ /dev/null @@ -1,2 +0,0 @@ -keep: - None diff --git a/config/renesas_ra/dev_uros_packages.repos b/config/renesas_ra/dev_uros_packages.repos deleted file mode 100644 index 56f46b6f..00000000 --- a/config/renesas_ra/dev_uros_packages.repos +++ /dev/null @@ -1 +0,0 @@ -repositories: diff --git a/config/renesas_ra/list_apps.sh b/config/renesas_ra/list_apps.sh deleted file mode 100644 index e460c69d..00000000 --- a/config/renesas_ra/list_apps.sh +++ /dev/null @@ -1,24 +0,0 @@ -function print_available_apps { - echo "Available apps for Renesas RA and $PLATFORM:" - - UROS_APPS=$FW_TARGETDIR/micro_ros_renesas_demos - - pushd $UROS_APPS >/dev/null - for app in $(ls -d */ | cut -f1 -d'/'); do - echo "+-- $app" - done - popd >/dev/null -} - -function check_available_app { - - UROS_APPS=$FW_TARGETDIR/micro_ros_renesas_demos - - pushd $UROS_APPS >/dev/null - if [ ! -d $1 ]; then - echo "App $1 for Renesas RA not available" - print_available_apps - exit 1 - fi - popd >/dev/null -} \ No newline at end of file diff --git a/config/renesas_ra/ra6m5/board.repos b/config/renesas_ra/ra6m5/board.repos deleted file mode 100644 index a08eb50d..00000000 --- a/config/renesas_ra/ra6m5/board.repos +++ /dev/null @@ -1,5 +0,0 @@ -repositories: - micro_ros_renesas_demos: - type: git - url: https://github.com/micro-ROS/micro_ros_renesas_demos - version: rolling diff --git a/config/renesas_ra/ra6m5/build.sh b/config/renesas_ra/ra6m5/build.sh deleted file mode 100755 index 4a0bfdf2..00000000 --- a/config/renesas_ra/ra6m5/build.sh +++ /dev/null @@ -1,18 +0,0 @@ -export UROS_APP=$(head -n1 $FW_TARGETDIR/APP | tail -n1) -export UROS_APP_FOLDER="$FW_TARGETDIR/micro_ros_renesas_demos/$UROS_APP" - -if [ -d "$UROS_APP_FOLDER" ]; then - echo "Selected app: $UROS_APP" -else - echo "App not found: $UROS_APP" - print_available_apps - exit 1 -fi - -pushd $UROS_APP_FOLDER - git submodule init - git submodule update - - print "Use Renesas e2studio to build and flash the project in $UROS_APP_FOLDER" - -popd \ No newline at end of file diff --git a/config/renesas_ra/ra6m5/client-colcon.meta b/config/renesas_ra/ra6m5/client-colcon.meta deleted file mode 100644 index e69de29b..00000000 diff --git a/config/renesas_ra/ra6m5/client_uros_packages.repos b/config/renesas_ra/ra6m5/client_uros_packages.repos deleted file mode 100644 index 56f46b6f..00000000 --- a/config/renesas_ra/ra6m5/client_uros_packages.repos +++ /dev/null @@ -1 +0,0 @@ -repositories: diff --git a/config/renesas_ra/ra6m5/configure.sh b/config/renesas_ra/ra6m5/configure.sh deleted file mode 100755 index 69715ea6..00000000 --- a/config/renesas_ra/ra6m5/configure.sh +++ /dev/null @@ -1 +0,0 @@ -echo $CONFIG_NAME > $FW_TARGETDIR/APP diff --git a/config/renesas_ra/ra6m5/create.sh b/config/renesas_ra/ra6m5/create.sh deleted file mode 100755 index d8098f2b..00000000 --- a/config/renesas_ra/ra6m5/create.sh +++ /dev/null @@ -1,14 +0,0 @@ -pushd $FW_TARGETDIR >/dev/null - # # Install toolchain - # mkdir toolchain - - # # Install toolchain - # echo "Downloading ARM compiler, this may take a while" - # curl -fsSLOk https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 - # tar --strip-components=1 -xvjf gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 -C toolchain > /dev/null - # rm gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 - - # Import repos - vcs import --input $PREFIX/config/$RTOS/$PLATFORM/board.repos - -popd >/dev/null \ No newline at end of file diff --git a/config/renesas_ra/ra6m5/flash.sh b/config/renesas_ra/ra6m5/flash.sh deleted file mode 100755 index a4b389d1..00000000 --- a/config/renesas_ra/ra6m5/flash.sh +++ /dev/null @@ -1,6 +0,0 @@ -export UROS_APP=$(head -n1 $FW_TARGETDIR/APP | tail -n1) -export UROS_APP_FOLDER="$FW_TARGETDIR/micro_ros_renesas_demos/$UROS_APP" - -pushd $UROS_APP_FOLDER - print "Use Renesas e2studio to build and flash the project in $UROS_APP_FOLDER" -popd \ No newline at end of file diff --git a/config/zephyr/generic/create.sh b/config/zephyr/generic/create.sh index 82e72c6d..d7671035 100755 --- a/config/zephyr/generic/create.sh +++ b/config/zephyr/generic/create.sh @@ -18,6 +18,9 @@ export PATH=~/.local/bin:"$PATH" export ZEPHYR_VERSION="v0.12.4" export ARCH=$(uname -m) +# Install west +pip3 install --user -U west --break-system-packages + pushd $FW_TARGETDIR >/dev/null west init zephyrproject @@ -28,7 +31,7 @@ pushd $FW_TARGETDIR >/dev/null west update popd >/dev/null - pip3 install -r zephyrproject/zephyr/scripts/requirements.txt --ignore-installed + pip3 install -r zephyrproject/zephyr/scripts/requirements.txt --ignore-installed --break-system-packages if [ "$PLATFORM" = "host" ]; then if [ "$ARCH" = "aarch64" ]; then @@ -69,6 +72,6 @@ pushd $FW_TARGETDIR >/dev/null touch mcu_ws/ros2/ros2_tracing/lttngpy/COLCON_IGNORE # Upgrade sphinx - pip install --force-reinstall Sphinx==4.2.0 + pip install --force-reinstall Sphinx==4.2.0 --break-system-packages popd >/dev/null diff --git a/config/zephyr/generic/package.xml b/config/zephyr/generic/package.xml index 94694da6..fa5c301c 100644 --- a/config/zephyr/generic/package.xml +++ b/config/zephyr/generic/package.xml @@ -16,6 +16,4 @@ g++-multilib openocd - python3-west-pip - diff --git a/scripts/component b/scripts/component index ced3b0c9..291b1048 100755 --- a/scripts/component +++ b/scripts/component @@ -7,11 +7,6 @@ import os MAX_CHARACTERS = 80 COMPONENTS = [ - { - "name": "renesas_e2_studio", - "description": "micro-ROS component for Renesas e2 studio and RA6M5: this package enables the integration of micro-ROS in Renesas e2 studio for RA6M5 and RA6T2 MCUs.", - "url" : "https://github.com/micro-ROS/micro_ros_renesas2estudio_component" - }, { "name": "esp_idf", "description": "micro-ROS component for ESP-IDF: this package enables the integration of micro-ROS in any Espressif ESP32 IDF project.",