diff --git a/.github/workflows/generate_api_reference.yml b/.github/workflows/generate_api_reference.yml index f55aa4c86..2f666340d 100644 --- a/.github/workflows/generate_api_reference.yml +++ b/.github/workflows/generate_api_reference.yml @@ -10,7 +10,7 @@ on: jobs: generate_rmw_api_reference: runs-on: ubuntu-latest - container: ros:foxy + container: ros:iron steps: - uses: actions/checkout@v3 - run: git config --global --add safe.directory "$GITHUB_WORKSPACE" @@ -28,10 +28,10 @@ jobs: unzip doxybook2-linux-amd64-v1.3.3.zip -d doxybook2 mkdir -p ros2_ws/src; cd ros2_ws - git clone -b foxy https://github.com/eProsima/Micro-CDR src/Micro-CDR - git clone -b foxy https://github.com/eProsima/Micro-XRCE-DDS-Client src/Micro-XRCE-DDS-Client - git clone -b foxy https://github.com/micro-ROS/rosidl_typesupport_microxrcedds src/rosidl_typesupport_microxrcedds - git clone -b foxy https://github.com/micro-ROS/rmw-microxrcedds src/rmw-microxrcedds + git clone -b ros2 https://github.com/eProsima/Micro-CDR src/Micro-CDR + git clone -b ros2 https://github.com/eProsima/Micro-XRCE-DDS-Client src/Micro-XRCE-DDS-Client + git clone -b iron https://github.com/micro-ROS/rosidl_typesupport_microxrcedds src/rosidl_typesupport_microxrcedds + git clone -b iron https://github.com/micro-ROS/rmw-microxrcedds src/rmw-microxrcedds source /opt/ros/$ROS_DISTRO/setup.bash colcon build --packages-up-to rmw_microxrcedds --cmake-args -DBUILD_DOCUMENTATION=ON @@ -50,7 +50,7 @@ jobs: generate_utils_api_reference: runs-on: ubuntu-latest - container: ros:foxy + container: ros:iron steps: - uses: actions/checkout@v3 - run: git config --global --add safe.directory "$GITHUB_WORKSPACE" @@ -61,14 +61,14 @@ jobs: shell: bash run: | apt update - apt install -y doxygen wget git unzip cmake ros-foxy-osrf-testing-tools-cpp + apt install -y doxygen wget git unzip cmake ros-iron-osrf-testing-tools-cpp pushd / wget https://github.com/matusnovak/doxybook2/releases/download/v1.3.3/doxybook2-linux-amd64-v1.3.3.zip unzip doxybook2-linux-amd64-v1.3.3.zip -d doxybook2 mkdir -p ros2_ws/src; cd ros2_ws - git clone -b humble https://github.com/micro-ROS/micro_ros_utilities src/micro_ros_utilities + git clone -b iron https://github.com/micro-ROS/micro_ros_utilities src/micro_ros_utilities source /opt/ros/$ROS_DISTRO/setup.bash colcon build --packages-up-to micro_ros_utilities --cmake-args -DBUILD_DOCUMENTATION=ON diff --git a/_docs/concepts/build_system/external_build_systems/index.md b/_docs/concepts/build_system/external_build_systems/index.md index e0a4e9829..6dad01c45 100644 --- a/_docs/concepts/build_system/external_build_systems/index.md +++ b/_docs/concepts/build_system/external_build_systems/index.md @@ -27,4 +27,4 @@ Along with this support package, there are [detailed instructions](https://githu The [micro-ROS for STM32CubeMX](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils) package is a set of utilities which enables the seamless configuration, set-up and integration of micro-ROS into an STM32 controller based project. As such, it allows micro-ROS to be virtually supported by the full set of boards offered by STMicroelectronics. -Its usage is based on Dockers, via a prepared [Dockerfile](https://github.com/micro-ROS/docker/blob/foxy/micro-ROS-static-library-builder/Dockerfile) which eases micro-ROS library generation outside of a ROS 2 environment. +Its usage is based on Dockers, via a prepared [Dockerfile](https://github.com/micro-ROS/docker/blob/humble/micro-ROS-static-library-builder/Dockerfile) which eases micro-ROS library generation outside of a ROS 2 environment. diff --git a/_docs/concepts/client_library/execution_management/index.md b/_docs/concepts/client_library/execution_management/index.md index 619d5130b..a376db71e 100644 --- a/_docs/concepts/client_library/execution_management/index.md +++ b/_docs/concepts/client_library/execution_management/index.md @@ -75,7 +75,7 @@ Our approach is to provide a real-time-capable Executor for the rcl+rclc layer ( As the first step, we propose the rclc Executor for the rcl-layer in C programming language with several new features to support real-time and deterministic execution: It supports 1.) user-defined static sequential execution, 2) conditional execution semantics, 3) multi-threaded execution with scheduling configuration, and 4) logical execution semantics (LET). Sequential execution refers to the runtime behavior, that all callbacks are executed in a pre-defined order independent of the arrival time of messages. Conditional execution is available with a trigger condition which enables typical processing patterns in robotics (which are analyzed in detail in section [Analysis of processing patterns](#analysis-of-processing-patterns). Configuration of scheduling parameters for multi-threaded application accomplishes prioritized execution. The logical execution time concept (LET) provides data synchronization for fixed periodic task scheduling of embedded applications. -Beyond the advanced execution management mechanisms for micro-ROS, we also contributed to improving and extending the Executor concept in rclcpp for standard ROS 2: the callback group-level Executor. It is not a new Executor but rather a refinement of the ROS 2 Executor API allowing to prioritize a group of callbacks which is not possible with the ROS 2 default Executor in its current Humble release. +Beyond the advanced execution management mechanisms for micro-ROS, we also contributed to improving and extending the Executor concept in rclcpp for standard ROS 2: the callback group-level Executor. It is not a new Executor but rather a refinement of the ROS 2 Executor API allowing to prioritize a group of callbacks which is not possible with the ROS 2 default Executor in its current Iron release. ## Analysis of rclcpp standard Executor @@ -581,7 +581,7 @@ The slides can be downloaded [here](https://ec2a4d36-bac8-4759-b25e-bb1f794177f4 - Multi-threaded executor with assignment of scheduling policies of underlying operating system. [[Pull Request](https://github.com/ros2/rclc/pull/87), pre-print [SLD2021](#SLD2021)]. ### Download -The rclc Executor can be downloaded from the [ros2/rclc repository](https://github.com/ros2/rclc). It is available for the ROS 2 versions Foxy, Galactic, Humble and Rolling. The repository provides several packages including the [rclc Executor](https://github.com/ros2/rclc/tree/master/rclc) and an [rclc_examples package](https://github.com/ros2/rclc/tree/master/rclc_examples) with several application examples. +The rclc Executor can be downloaded from the [ros2/rclc repository](https://github.com/ros2/rclc). It is available for the ROS 2 versions Humble, Iron and Rolling. The repository provides several packages including the [rclc Executor](https://github.com/ros2/rclc/tree/master/rclc) and an [rclc_examples package](https://github.com/ros2/rclc/tree/master/rclc_examples) with several application examples. ## Callback-group-level Executor diff --git a/_docs/concepts/client_library/features/index.md b/_docs/concepts/client_library/features/index.md index 7da9dd644..104aead20 100644 --- a/_docs/concepts/client_library/features/index.md +++ b/_docs/concepts/client_library/features/index.md @@ -13,4 +13,4 @@ The micro-ROS Client Library, formed by standard [ROS 2 Client Support Library ( * Lifecycle * Parameters -Most features are already available in the Foxy release. Please see our [Feature Overview page](/docs/overview/features/) for details on the status. To learn developing your own application nodes with rcl + rclc, please head to the corresponding [programming tutorial](/docs/tutorials/programming_rcl_rclc/). +Most features are already available in the Humble release. Please see our [Feature Overview page](/docs/overview/features/) for details on the status. To learn developing your own application nodes with rcl + rclc, please head to the corresponding [programming tutorial](/docs/tutorials/programming_rcl_rclc/). diff --git a/_docs/concepts/fiware_interoperability/index.md b/_docs/concepts/fiware_interoperability/index.md index 47810978a..9edd8eb31 100644 --- a/_docs/concepts/fiware_interoperability/index.md +++ b/_docs/concepts/fiware_interoperability/index.md @@ -31,7 +31,7 @@ To accomplish this, two different approaches can be taken: * Relying on an integration platform that uses a common types language representation, and defines a conversion library from/to the generic type to the specific type of each middleware. While the first approach might result in a more lightweight tool, it has several flaws, for instance a more difficult maintenance and the incapability of communicating with any other middleware, rather than ROS2 or micro-ROS. -On the other hand, using an integration service platform, such as [SOSS](https://github.com/eProsima/soss_v2), enables automatically the possibility of communicating with a wide (and growing) set of middlewares, if their System Handle implementation is available. +On the other hand, using an integration service platform, such as [SOSS](https://github.com/eProsima/Integration-Service), enables automatically the possibility of communicating with a wide (and growing) set of middlewares, if their System Handle implementation is available. ## SOSS: System-Of-Systems-Synthesizer @@ -63,7 +63,7 @@ For this reason, if a type defined in the topics section of the configuration fi This is something important to notice when connecting to ROS2, because in ROS2 most of the types have a / in their names. To deal with this issue, using SOSS [remapping](https://soss.docs.eprosima.com/en/latest/yaml_config.html?highlight=remap#remapping) capabilities come in handy. -Of course, given that micro-ROS applications act as a bridge between microcontrollers and the ROS 2 dataspace (using the micro-ROS Agent), FIROS2 should also take care of communicating FIWARE's Context Broker with ROS 2, leveraging the existing [ROS 2 System Handle](https://github.com/eProsima/soss_v2/tree/feature/xtypes-dds/packages/ros2), which comes natively included into the SOSS package. +Of course, given that micro-ROS applications act as a bridge between microcontrollers and the ROS 2 dataspace (using the micro-ROS Agent), FIROS2 should also take care of communicating FIWARE's Context Broker with ROS 2, leveraging the existing [ROS 2 System Handle](https://github.com/eProsima/Integration-Service), which comes natively included into the SOSS package. This is exactly the situation reflected in the use case that is explained below. @@ -79,7 +79,7 @@ This is exactly the situation reflected in the use case that is explained below. * Clone the SOSS project into the source subfolder. ```bash - $ git clone https://github.com/osrf/soss_v2.git src/soss --branch feature/xtypes-dds + $ git clone https://github.com/eProsima/Integration-Service.git src/soss --branch feature/xtypes-dds ``` * Clone the SOSS-FIWARE project into the source subfolder. diff --git a/_docs/overview/docker_ci_status/index.md b/_docs/overview/docker_ci_status/index.md index 45f67c64f..90d2597d8 100644 --- a/_docs/overview/docker_ci_status/index.md +++ b/_docs/overview/docker_ci_status/index.md @@ -14,14 +14,14 @@ permalink: /docs/overview/docker_ci_status/ | Repository | Description | CI | Issues / Pull Requests | Documentation | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -| [micro-ros-setup](https://github.com/micro-ROS/micro_ros_setup) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro_ros_setup/tree/galactic) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro_ros_setup/tree/foxy) | Micro-ROS tool to build and flash Micro-ROS to every supported platform | [![GitHub Actions status](https://github.com/micro-ROS/micro_ros_setup/actions/workflows/nightly.yml/badge.svg)](https://github.com/micro-ROS/micro_ros_setup/actions/workflows/nightly.yml) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_setup.svg)](https://github.com/micro-ROS/micro_ros_setup/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_setup.svg)](https://github.com/micro-ROS//micro_ros_setup/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_setup/blob/galactic/README.md) | -| [micro-ros-espidf-component](https://github.com/micro-ROS/micro_ros_espidf_component) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro_ros_espidf_component/tree/galactic) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro_ros_espidf_component/tree/foxy) | Component to used Micro-ROS in ESP IDF build system | [![GitHub Actions status](https://github.com/micro-ROS/micro_ros_espidf_component/actions/workflows/nightly.yml/badge.svg)](https://github.com/micro-ROS/micro_ros_espidf_component/actions/workflows/nightly.yml) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_espidf_component.svg)](https://github.com/micro-ROS/micro_ros_espidf_component/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_espidf_component.svg)](https://github.com/micro-ROS/micro_ros_espidf_component/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_espidf_component/blob/galactic/README.md) | -| [micro-ros-arduino](https://github.com/micro-ROS/micro_ros_arduino) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro_ros_arduino/tree/galactic) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro_ros_arduino/tree/foxy) | Micro-ROS precompiled libraries to directly interface with the Arduino IDE | [![Github Actions status](https://github.com/micro-ROS/micro_ros_arduino/workflows/CI/badge.svg)](https://github.com/micro-ROS/micro_ros_arduino/actions) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_arduino.svg)](https://github.com/micro-ROS/micro_ros_arduino/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_arduino.svg)](https://github.com/micro-ROS/micro_ros_arduino/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_arduino/blob/galactic/README.md) | -| [micro-ros-zephyr-module](https://github.com/micro-ROS/micro_ros_zephyr_module) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro_ros_zephyr_module/tree/galactic) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro_ros_zephyr_module/tree/foxy) | Integration of micro-ROS within Zephyr West build system | [![Github Actions status](https://github.com/micro-ROS/micro_ros_zephyr_module/actions/workflows/nightly.yml/badge.svg)](https://github.com/micro-ROS/micro_ros_zephyr_module/actions/workflows/nightly.yml) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_zephyr_module.svg)](https://github.com/micro-ROS/micro_ros_zephyr_module/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_zephyr_module.svg)](https://github.com/micro-ROS/micro_ros_zephyr_module/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_zephyr_module/blob/galactic/README.md) | -| [micro_ros_raspberrypi_pico_sdk](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/tree/galactic) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/tree/foxy) | Integration of micro-ROS within Raspberry PI Pico SDK | [![Github Actions status](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/workflows/CI/badge.svg)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/actions) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_raspberrypi_pico_sdk.svg)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_raspberrypi_pico_sdk.svg)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/blob/galactic/README.md) | -| [micro_ros_mbed](https://github.com/micro-ROS/micro_ros_mbed) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro_ros_mbed/tree/galactic) | Integration of micro-ROS within Mbed RTOS | [![Github Actions status](https://github.com/micro-ROS/micro_ros_mbed/workflows/CI/badge.svg)](https://github.com/micro-ROS/micro_ros_mbed/actions) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_mbed.svg)](https://github.com/micro-ROS/micro_ros_mbed/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_mbed.svg)](https://github.com/micro-ROS/micro_ros_mbed/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_mbed/blob/galactic/README.md) | -| [micro_ros_nuttx_app](https://github.com/micro-ROS/micro_ros_nuttx_app) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro_ros_nuttx_app/tree/galactic) | Integration of micro-ROS within Nuttx 10 | [![Github Actions status](https://github.com/micro-ROS/micro_ros_nuttx_app/workflows/CI/badge.svg)](https://github.com/micro-ROS/micro_ros_nuttx_app/actions) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_nuttx_app.svg)](https://github.com/micro-ROS/micro_ros_nuttx_app/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_nuttx_app.svg)](https://github.com/micro-ROS/micro_ros_nuttx_app/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_nuttx_app/blob/galactic/README.md) | -| [micro_ros_stm32cubemx_utils](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/tree/galactic) | Integration of micro-ROS within STM32CubeMX and STM32CubeIDE | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_stm32cubemx_utils.svg)](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_stm32cubemx_utils.svg)](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/blob/galactic/README.md) | +| [micro-ros-setup](https://github.com/micro-ROS/micro_ros_setup) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro_ros_setup/tree/iron) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/micro_ros_setup/tree/humble) | Micro-ROS tool to build and flash Micro-ROS to every supported platform | [![GitHub Actions status](https://github.com/micro-ROS/micro_ros_setup/actions/workflows/nightly.yml/badge.svg)](https://github.com/micro-ROS/micro_ros_setup/actions/workflows/nightly.yml) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_setup.svg)](https://github.com/micro-ROS/micro_ros_setup/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_setup.svg)](https://github.com/micro-ROS//micro_ros_setup/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_setup/blob/iron/README.md) | +| [micro-ros-espidf-component](https://github.com/micro-ROS/micro_ros_espidf_component) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro_ros_espidf_component/tree/iron) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/micro_ros_espidf_component/tree/humble) | Component to used Micro-ROS in ESP IDF build system | [![GitHub Actions status](https://github.com/micro-ROS/micro_ros_espidf_component/actions/workflows/nightly.yml/badge.svg)](https://github.com/micro-ROS/micro_ros_espidf_component/actions/workflows/nightly.yml) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_espidf_component.svg)](https://github.com/micro-ROS/micro_ros_espidf_component/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_espidf_component.svg)](https://github.com/micro-ROS/micro_ros_espidf_component/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_espidf_component/blob/iron/README.md) | +| [micro-ros-arduino](https://github.com/micro-ROS/micro_ros_arduino) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro_ros_arduino/tree/iron) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/micro_ros_arduino/tree/humble) | Micro-ROS precompiled libraries to directly interface with the Arduino IDE | [![Github Actions status](https://github.com/micro-ROS/micro_ros_arduino/workflows/CI/badge.svg)](https://github.com/micro-ROS/micro_ros_arduino/actions) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_arduino.svg)](https://github.com/micro-ROS/micro_ros_arduino/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_arduino.svg)](https://github.com/micro-ROS/micro_ros_arduino/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_arduino/blob/iron/README.md) | +| [micro-ros-zephyr-module](https://github.com/micro-ROS/micro_ros_zephyr_module) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro_ros_zephyr_module/tree/iron) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/micro_ros_zephyr_module/tree/humble) | Integration of micro-ROS within Zephyr West build system | [![Github Actions status](https://github.com/micro-ROS/micro_ros_zephyr_module/actions/workflows/nightly.yml/badge.svg)](https://github.com/micro-ROS/micro_ros_zephyr_module/actions/workflows/nightly.yml) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_zephyr_module.svg)](https://github.com/micro-ROS/micro_ros_zephyr_module/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_zephyr_module.svg)](https://github.com/micro-ROS/micro_ros_zephyr_module/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_zephyr_module/blob/iron/README.md) | +| [micro_ros_raspberrypi_pico_sdk](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/tree/iron) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/tree/humble) | Integration of micro-ROS within Raspberry PI Pico SDK | [![Github Actions status](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/workflows/CI/badge.svg)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/actions) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_raspberrypi_pico_sdk.svg)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_raspberrypi_pico_sdk.svg)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk/blob/iron/README.md) | +| [micro_ros_mbed](https://github.com/micro-ROS/micro_ros_mbed) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro_ros_mbed/tree/iron) | Integration of micro-ROS within Mbed RTOS | [![Github Actions status](https://github.com/micro-ROS/micro_ros_mbed/workflows/CI/badge.svg)](https://github.com/micro-ROS/micro_ros_mbed/actions) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_mbed.svg)](https://github.com/micro-ROS/micro_ros_mbed/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_mbed.svg)](https://github.com/micro-ROS/micro_ros_mbed/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_mbed/blob/iron/README.md) | +| [micro_ros_nuttx_app](https://github.com/micro-ROS/micro_ros_nuttx_app) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro_ros_nuttx_app/tree/iron) | Integration of micro-ROS within Nuttx 10 | [![Github Actions status](https://github.com/micro-ROS/micro_ros_nuttx_app/workflows/CI/badge.svg)](https://github.com/micro-ROS/micro_ros_nuttx_app/actions) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_nuttx_app.svg)](https://github.com/micro-ROS/micro_ros_nuttx_app/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_nuttx_app.svg)](https://github.com/micro-ROS/micro_ros_nuttx_app/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_nuttx_app/blob/iron/README.md) | +| [micro_ros_stm32cubemx_utils](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/tree/iron) | Integration of micro-ROS within STM32CubeMX and STM32CubeIDE | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_stm32cubemx_utils.svg)](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_stm32cubemx_utils.svg)](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/blob/iron/README.md) | | [NuttX fork](https://github.com/micro-ROS/NuttX) | NuttX fork to use with micro-ROS. Current status is **discontinued** | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/NuttX.svg)](https://github.com/micro-ROS/NuttX/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/NuttX.svg)](https://github.com/micro-ROS/NuttX/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/NuttX/blob/master/README.md) | @@ -31,39 +31,39 @@ Most repositories can be found in GitHub's micro-ROS organization at [github.com | Repository | Description | CI | Issues / Pull Requests | Documentation | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------- | -| [Micro XRCE-DDS Client](https://github.com/eProsima/Micro-XRCE-DDS-Client) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/eProsima/Micro-XRCE-DDS-Client/tree/foxy) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/eProsima/Micro-XRCE-DDS-Client/tree/foxy) | Client C99 library of eProsima's open-source implementation of DDS-XRCE | [![Build status](https://img.shields.io/jenkins/build?jobUrl=http%3A%2F%2Fjenkins.eprosima.com%3A8080%2Fview%2FMicro%2520XRCE%2Fjob%2FMicro-XRCE-DDS-Client%2520Github%2F)](http://jenkins.eprosima.com:8080/view/Micro%20XRCE/job/Micro-XRCE-DDS-Client%20Github/) | [![](https://img.shields.io/github/issues/eProsima/Micro-XRCE-DDS-Client.svg)](https://github.com/eProsima/Micro-XRCE-DDS-Client/issues) [![](https://img.shields.io/github/issues-pr/eProsima/Micro-XRCE-DDS-Client.svg)](https://github.com/eProsima/Micro-XRCE-DDS-Client/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://micro-xrce-dds.docs.eprosima.com/en/latest/client.html) | -| [Micro XRCE-DDS Agent](https://github.com/eProsima/Micro-XRCE-DDS-Agent) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/eProsima/Micro-XRCE-DDS-Agent/tree/foxy) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/eProsima/Micro-XRCE-DDS-Agent/tree/foxy) | Agent (bridge to DDS) C++11 library of eProsima's open-source implementation of DDS-XRCE | [![Build status](https://img.shields.io/jenkins/build?jobUrl=http%3A%2F%2Fjenkins.eprosima.com%3A8080%2Fview%2FMicro%2520XRCE%2Fjob%2FMicro-XRCE-DDS-Agent%2520Github%2F)](http://jenkins.eprosima.com:8080/view/Micro%20XRCE/job/Micro-XRCE-DDS-Agent%20Github/) | [![](https://img.shields.io/github/issues/eProsima/Micro-XRCE-DDS-Agent.svg)](https://github.com/eProsima/Micro-XRCE-DDS-Agent/issues) [![](https://img.shields.io/github/issues-pr/eProsima/Micro-XRCE-DDS-Agent.svg)](https://github.com/eProsima/Micro-XRCE-DDS-Agent/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://micro-xrce-dds.docs.eprosima.com/en/latest/agent.html) | -| [rmw-microxrcedds](https://github.com/micro-ROS/rmw-microxrcedds) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/rmw-microxrcedds/tree/galactic) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/rmw-microxrcedds/tree/foxy) | ROS 2 RMW adapter for Micro-XRCE-DDS Client library | [![Build status](https://img.shields.io/github/workflow/status/micro-ROS/rmw-microxrcedds/CI%20RMW_MicroXRCEDDS)](https://github.com/micro-ROS/rmw-microxrcedds/actions?query=workflow%3A%22CI+RMW_MicroXRCEDDS%22) | [![](https://img.shields.io/github/issues/micro-ROS/rmw-microxrcedds.svg)](https://github.com/micro-ROS/rmw-microxrcedds/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/rmw-microxrcedds.svg)](https://github.com/micro-ROS/rmw-microxrcedds/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/rmw-microxrcedds/blob/foxy/README.md) | -| [rosidl-typesupport-microxrcedds](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/tree/galactic) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/tree/foxy) | ROS 2 type support for Micro-XRCE-DDS Client library | [![Build status](https://img.shields.io/github/workflow/status/micro-ROS/rosidl_typesupport_microxrcedds/CI%20TypeSupport_MicroXRCEDDS)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/actions?query=workflow%3A%22CI+TypeSupport_MicroXRCEDDS%22) | [![](https://img.shields.io/github/issues/micro-ROS/rosidl_typesupport_microxrcedds.svg)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/rosidl_typesupport_microxrcedds.svg)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/blob/master/README.md) | -| [micro-ROS-Agent](https://github.com/micro-ROS/micro-ROS-Agent) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro-ROS-Agent/tree/galactic) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro-ROS-Agent/tree/foxy) | Agent (bridge) to ROS 2 | [![](https://img.shields.io/github/workflow/status/micro-ROS/micro-ROS-Agent/CI%20micro-ROS%20Agent)](https://github.com/micro-ROS/micro-ROS-Agent/actions?query=workflow%3A%22CI+micro-ROS+Agent%22) | [![](https://img.shields.io/github/issues/micro-ROS/micro-ROS-Agent.svg)](https://github.com/micro-ROS/micro-ROS-Agent/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro-ROS-Agent.svg)](https://github.com/micro-ROS/micro-ROS-Agent/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS-Agent/blob/master/README.md) | -| [micro-ros-msgs](https://github.com/micro-ROS/micro_ros_msgs) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro_ros_msgs/tree/galactic) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro_ros_msgs/tree/foxy) | Specific ROS 2 messages used within micro-ROS architecture | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_msgs.svg)](https://github.com/micro-ROS/micro_ros_msgs/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_msgs.svg)](https://github.com/micro-ROS/micro_ros_msgs/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_msgs/blob/main/README.md) | -| [micro_ros_utilities](https://github.com/micro-ROS/micro_ros_utilities) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro_ros_utilities/tree/foxy) | micro-ROS utilities for embedded applications | [![Build status](https://github.com/micro-ROS/micro_ros_utilities/actions/workflows/ci.yml/badge.svg)](https://github.com/micro-ROS/micro_ros_utilities/actions/workflows/ci.yml) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_utilities.svg)](https://github.com/micro-ROS/micro_ros_utilities/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_utilities.svg)](https://github.com/micro-ROS/micro_ros_utilities/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_utilities/blob/main/README.md) | -| [system_modes](https://github.com/micro-ROS/system_modes) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/system_modes/releases) [![](https://img.shields.io/badge/ROS-eloquent-brightgreen)](https://github.com/micro-ROS/system_modes/releases) | Extension for `rclcpp` | [![Build Status](https://img.shields.io/github/workflow/status/micro-ROS/system_modes/Test%20system%20modes)](https://github.com/micro-ROS/system_modes/actions?query=workflow%3A%22Test+system+modes%22) | [![](https://img.shields.io/github/issues/micro-ROS/system_modes.svg)](https://github.com/micro-ROS/system_modes/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/system_modes.svg)](https://github.com/micro-ROS/system_modes/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/system_modes/blob/master/README.md) | -| [rclc](https://github.com/ros2/rclc) [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/ros2/rclc/tree/dashing) [![](https://img.shields.io/badge/ROS-eloquent-brightgreen)](https://github.com/ros2/rclc/tree/master) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/ros2/rclc/tree/master) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/ros2/rclc/tree/galactic) | Set of convenience functions and additional concepts, such as executor, to extend the capabilities of ROS 2 `rcl` in C | [![Build Status](https://img.shields.io/github/workflow/status/ros2/rclc/CI%20RCLC)](https://github.com/ros2/rclc/actions?query=workflow%3A%22CI+RCLC%22) | [![](https://img.shields.io/github/issues/ros2/rclc.svg)](https://github.com/ros2/rclc/issues) [![](https://img.shields.io/github/issues-pr/ros2/rclc.svg)](https://github.com/ros2/rclc/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/ros2/rclc/blob/master/README.md) | +| [Micro XRCE-DDS Client](https://github.com/eProsima/Micro-XRCE-DDS-Client) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/eProsima/Micro-XRCE-DDS-Client/tree/ros2) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/eProsima/Micro-XRCE-DDS-Client/tree/ros2) | Client C99 library of eProsima's open-source implementation of DDS-XRCE | [![Build status](https://img.shields.io/jenkins/build?jobUrl=http%3A%2F%2Fjenkins.eprosima.com%3A8080%2Fview%2FMicro%2520XRCE%2Fjob%2FMicro-XRCE-DDS-Client%2520Github%2F)](http://jenkins.eprosima.com:8080/view/Micro%20XRCE/job/Micro-XRCE-DDS-Client%20Github/) | [![](https://img.shields.io/github/issues/eProsima/Micro-XRCE-DDS-Client.svg)](https://github.com/eProsima/Micro-XRCE-DDS-Client/issues) [![](https://img.shields.io/github/issues-pr/eProsima/Micro-XRCE-DDS-Client.svg)](https://github.com/eProsima/Micro-XRCE-DDS-Client/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://micro-xrce-dds.docs.eprosima.com/en/latest/client.html) | +| [Micro XRCE-DDS Agent](https://github.com/eProsima/Micro-XRCE-DDS-Agent) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/eProsima/Micro-XRCE-DDS-Agent/tree/ros2) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/eProsima/Micro-XRCE-DDS-Agent/tree/ros2) | Agent (bridge to DDS) C++11 library of eProsima's open-source implementation of DDS-XRCE | [![Build status](https://img.shields.io/jenkins/build?jobUrl=http%3A%2F%2Fjenkins.eprosima.com%3A8080%2Fview%2FMicro%2520XRCE%2Fjob%2FMicro-XRCE-DDS-Agent%2520Github%2F)](http://jenkins.eprosima.com:8080/view/Micro%20XRCE/job/Micro-XRCE-DDS-Agent%20Github/) | [![](https://img.shields.io/github/issues/eProsima/Micro-XRCE-DDS-Agent.svg)](https://github.com/eProsima/Micro-XRCE-DDS-Agent/issues) [![](https://img.shields.io/github/issues-pr/eProsima/Micro-XRCE-DDS-Agent.svg)](https://github.com/eProsima/Micro-XRCE-DDS-Agent/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://micro-xrce-dds.docs.eprosima.com/en/latest/agent.html) | +| [rmw-microxrcedds](https://github.com/micro-ROS/rmw-microxrcedds) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/rmw-microxrcedds/tree/iron) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/rmw-microxrcedds/tree/humble) | ROS 2 RMW adapter for Micro-XRCE-DDS Client library | [![Build status](https://img.shields.io/github/actions/workflow/status/micro-ROS/rmw-microxrcedds/ci.yml)](https://github.com/micro-ROS/rmw-microxrcedds/actions?query=workflow%3A%22CI+rmw_microxrcedds_c%22) | [![](https://img.shields.io/github/issues/micro-ROS/rmw-microxrcedds.svg)](https://github.com/micro-ROS/rmw-microxrcedds/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/rmw-microxrcedds.svg)](https://github.com/micro-ROS/rmw-microxrcedds/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/rmw-microxrcedds/blob/humble/README.md) | +| [rosidl-typesupport-microxrcedds](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/tree/iron) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/tree/humble) | ROS 2 type support for Micro-XRCE-DDS Client library | [![Build status](https://img.shields.io/github/actions/workflow/status/micro-ROS/rosidl_typesupport_microxrcedds/ci.yml)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/actions?query=workflow%3A%22CI+rosidl_typesupport_microxrcedds%22) | [![](https://img.shields.io/github/issues/micro-ROS/rosidl_typesupport_microxrcedds.svg)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/rosidl_typesupport_microxrcedds.svg)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/blob/master/README.md) | +| [micro-ROS-Agent](https://github.com/micro-ROS/micro-ROS-Agent) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro-ROS-Agent/tree/iron) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/micro-ROS-Agent/tree/humble) | Agent (bridge) to ROS 2 | [![](https://img.shields.io/github/actions/workflow/status/micro-ROS/micro-ROS-Agent/ci.yml)](https://github.com/micro-ROS/micro-ROS-Agent/actions?query=workflow%3A%22CI+micro-ROS+Agent%22) | [![](https://img.shields.io/github/issues/micro-ROS/micro-ROS-Agent.svg)](https://github.com/micro-ROS/micro-ROS-Agent/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro-ROS-Agent.svg)](https://github.com/micro-ROS/micro-ROS-Agent/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS-Agent/blob/master/README.md) | +| [micro-ros-msgs](https://github.com/micro-ROS/micro_ros_msgs) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro_ros_msgs/tree/iron) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/micro_ros_msgs/tree/humble) | Specific ROS 2 messages used within micro-ROS architecture | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_msgs.svg)](https://github.com/micro-ROS/micro_ros_msgs/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_msgs.svg)](https://github.com/micro-ROS/micro_ros_msgs/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_msgs/blob/main/README.md) | +| [micro_ros_utilities](https://github.com/micro-ROS/micro_ros_utilities) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro_ros_utilities/tree/humble) | micro-ROS utilities for embedded applications | [![Build status](https://github.com/micro-ROS/micro_ros_utilities/actions/workflows/ci.yml/badge.svg)](https://github.com/micro-ROS/micro_ros_utilities/actions/workflows/ci.yml) | [![](https://img.shields.io/github/issues/micro-ROS/micro_ros_utilities.svg)](https://github.com/micro-ROS/micro_ros_utilities/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro_ros_utilities.svg)](https://github.com/micro-ROS/micro_ros_utilities/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro_ros_utilities/blob/main/README.md) | +| [system_modes](https://github.com/micro-ROS/system_modes) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/system_modes/releases) [![](https://img.shields.io/badge/ROS-eloquent-brightgreen)](https://github.com/micro-ROS/system_modes/releases) | Extension for `rclcpp` | [![Build Status](https://img.shields.io/github/actions/workflow/status/micro-ROS/micro-ROS/system_modes/ci.yml)](https://github.com/micro-ROS/system_modes/actions?query=workflow%3A%22Test+system+modes%22) | [![](https://img.shields.io/github/issues/micro-ROS/system_modes.svg)](https://github.com/micro-ROS/system_modes/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/system_modes.svg)](https://github.com/micro-ROS/system_modes/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/system_modes/blob/master/README.md) | +| [rclc](https://github.com/ros2/rclc) [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/ros2/rclc/tree/dashing) [![](https://img.shields.io/badge/ROS-eloquent-brightgreen)](https://github.com/ros2/rclc/tree/master) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/ros2/rclc/tree/master) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/ros2/rclc/tree/iron) | Set of convenience functions and additional concepts, such as executor, to extend the capabilities of ROS 2 `rcl` in C | [![Build Status](https://img.shields.io/github/actions/workflow/status/micro-ROS/ros2/rclc/ci.yml)](https://github.com/ros2/rclc/actions?query=workflow%3A%22CI+RCLC%22) | [![](https://img.shields.io/github/issues/ros2/rclc.svg)](https://github.com/ros2/rclc/issues) [![](https://img.shields.io/github/issues-pr/ros2/rclc.svg)](https://github.com/ros2/rclc/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/ros2/rclc/blob/master/README.md) | ## Example Application Repositories Status | Name | Description | CI | Issues / Pull Requests | Documentation | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------- | -| [micro-ROS-demos](https://github.com/micro-ROS/micro-ROS-demos) [![](https://img.shields.io/badge/ROS-galactic-brightgreen)](https://github.com/micro-ROS/micro-ROS-demos/tree/galactic) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro-ROS-demos/tree/foxy) | Collection of generic demos, using publishers, subscribers, custom messages, services and graph introspection | [![Build status](https://img.shields.io/github/workflow/status/micro-ROS/micro-ROS-demos/CI)](https://github.com/micro-ROS/micro-ROS-demos/actions?query=workflow%3ACI) | [![](https://img.shields.io/github/issues/micro-ROS/micro-ROS-demos.svg)](https://github.com/micro-ROS/micro-ROS-demos/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro-ROS-demos.svg)](https://github.com/micro-ROS/micro-ROS-demos/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS-demos/blob/foxy/README.md) | -| [freertos_apps](https://github.com/micro-ROS/freertos_apps) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/freertos_apps/tree/foxy) | Demo applications for FreeRTOS | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/freertos_apps.svg)](https://github.com/micro-ROS/freertos_apps/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/freertos_apps.svg)](https://github.com/micro-ROS/freertos_apps/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/freertos_apps/blob/foxy/README.md) | -| [zephyr_apps](https://github.com/micro-ROS/zephyr_apps) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/zephyr_apps/tree/foxy) | Demo applications for Zephyr | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/zephyr_apps.svg)](https://github.com/micro-ROS/zephyr_apps/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/zephyr_apps.svg)](https://github.com/micro-ROS/zephyr_apps/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/zephyr_apps/blob/foxy/README.md) | -| [raspbian_apps](https://github.com/micro-ROS/raspbian_apps) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/raspbian_apps/tree/foxy) | Demo applications for Raspbian | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/raspbian_apps.svg)](https://github.com/micro-ROS/raspbian_apps/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/raspbian_apps.svg)](https://github.com/micro-ROS/raspbian_apps/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/raspbian_apps/blob/foxy/README.md) | -| [nuttx_apps](https://github.com/micro-ROS/nuttx_apps) [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/micro-ROS/nuttx_apps/tree/dashing) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/nuttx_apps/tree/foxy) | Demo applications for NuttX (**discontinued**) | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/nuttx_apps.svg)](https://github.com/micro-ROS/nuttx_apps/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/nuttx_apps.svg)](https://github.com/micro-ROS/nuttx_apps/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/nuttx_apps/blob/foxy/README.md) | +| [micro-ROS-demos](https://github.com/micro-ROS/micro-ROS-demos) [![](https://img.shields.io/badge/ROS-iron-brightgreen)](https://github.com/micro-ROS/micro-ROS-demos/tree/iron) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/micro-ROS-demos/tree/humble) | Collection of generic demos, using publishers, subscribers, custom messages, services and graph introspection | [![Build status](https://img.shields.io/github/actions/workflow/status/micro-ROS/micro-ROS/micro-ROS-demos/ci.yml)](https://github.com/micro-ROS/micro-ROS-demos/actions?query=workflow%3ACI) | [![](https://img.shields.io/github/issues/micro-ROS/micro-ROS-demos.svg)](https://github.com/micro-ROS/micro-ROS-demos/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro-ROS-demos.svg)](https://github.com/micro-ROS/micro-ROS-demos/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS-demos/blob/humble/README.md) | +| [freertos_apps](https://github.com/micro-ROS/freertos_apps) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/freertos_apps/tree/humble) | Demo applications for FreeRTOS | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/freertos_apps.svg)](https://github.com/micro-ROS/freertos_apps/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/freertos_apps.svg)](https://github.com/micro-ROS/freertos_apps/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/freertos_apps/blob/humble/README.md) | +| [zephyr_apps](https://github.com/micro-ROS/zephyr_apps) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/zephyr_apps/tree/humble) | Demo applications for Zephyr | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/zephyr_apps.svg)](https://github.com/micro-ROS/zephyr_apps/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/zephyr_apps.svg)](https://github.com/micro-ROS/zephyr_apps/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/zephyr_apps/blob/humble/README.md) | +| [raspbian_apps](https://github.com/micro-ROS/raspbian_apps) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/raspbian_apps/tree/humble) | Demo applications for Raspbian | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/raspbian_apps.svg)](https://github.com/micro-ROS/raspbian_apps/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/raspbian_apps.svg)](https://github.com/micro-ROS/raspbian_apps/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/raspbian_apps/blob/humble/README.md) | +| [nuttx_apps](https://github.com/micro-ROS/nuttx_apps) [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/micro-ROS/nuttx_apps/tree/dashing) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/nuttx_apps/tree/humble) | Demo applications for NuttX (**discontinued**) | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/nuttx_apps.svg)](https://github.com/micro-ROS/nuttx_apps/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/nuttx_apps.svg)](https://github.com/micro-ROS/nuttx_apps/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/nuttx_apps/blob/humble/README.md) | | [Kobuki demo](https://github.com/micro-ROS/micro-ROS_kobuki_demo) | Kobuki (Turtlebot 2) controller demo application using micro-ROS in an Olimex board over NuttX | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/micro-ROS_kobuki_demo.svg)](https://github.com/micro-ROS/micro-ROS_kobuki_demo/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro-ROS_kobuki_demo.svg)](https://github.com/micro-ROS/micro-ROS_kobuki_demo/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS_kobuki_demo/blob/master/README.md) | -| [Crazyflie demo](https://github.com/micro-ROS/micro-ROS_crazyflie_demo) [![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/micro-ROS_crazyflie_demo/tree/foxy) | Crazyflie drone demo application using micro-ROS over FreeRTOS | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/micro-ROS_crazyflie_demo.svg)](https://github.com/micro-ROS/micro-ROS_crazyflie_demo/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro-ROS_crazyflie_demo.svg)](https://github.com/micro-ROS/micro-ROS_crazyflie_demo/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS_crazyflie_demo/blob/foxy/README.md) | +| [Crazyflie demo](https://github.com/micro-ROS/micro-ROS_crazyflie_demo) [![](https://img.shields.io/badge/ROS-humble-brightgreen)](https://github.com/micro-ROS/micro-ROS_crazyflie_demo/tree/humble) | Crazyflie drone demo application using micro-ROS over FreeRTOS | [![](https://img.shields.io/badge/-unavailable-lightgrey)]() | [![](https://img.shields.io/github/issues/micro-ROS/micro-ROS_crazyflie_demo.svg)](https://github.com/micro-ROS/micro-ROS_crazyflie_demo/issues) [![](https://img.shields.io/github/issues-pr/micro-ROS/micro-ROS_crazyflie_demo.svg)](https://github.com/micro-ROS/micro-ROS_crazyflie_demo/pulls) | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS_crazyflie_demo/blob/humble/README.md) | ## Docker Images Status -| Image | Description | Status | -| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| base | Base image with a ROS 2 Foxy installation + micro-ROS specific build system tools. Used as base of any other micro-ROS image | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/base.svg?logo=docker)](https://hub.docker.com/r/microros/base/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/base.svg?logo=docker)](https://hub.docker.com/r/microros/base/)[![Compare Images](https://images.microbadger.com/badges/image/microros/base.svg)](https://microbadger.com/images/microros/base) | -| micro-ros-agent | Image containing a pre-compiled micro-ROS-Agent, ready to use as a standalone application | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-agent.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-agent/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-agent.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-agent/)[![Compare Images](https://images.microbadger.com/badges/image/microros/micro-ros-agent.svg)](https://microbadger.com/images/microros/micro-ros-agent) | -| micro-ros-demos | Contains pre-compiled micro-ROS demo applications, ready to use to get a taste of micro-ROS capabilities | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-demos.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-demos/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-demos.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-demos/)[![Compare Images](https://images.microbadger.com/badges/image/microros/micro-ros-demos.svg)](https://microbadger.com/images/microros/micro-ros-demos) | -| micro-ros-olimex-nuttx | Contains a ready to flash example for Olimex STM32 E407 | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-olimex-nuttx.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-olimex-nuttx/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-olimex-nuttx.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-olimex-nuttx/)[![Compare Images](https://images.microbadger.com/badges/image/microros/micro-ros-olimex-nuttx.svg)](https://microbadger.com/images/microros/micro-ros-olimex-nuttx) | -| micro_ros_static_library_builder | Allows to use a pre-compiled micro-ROS library to develop applications using Arduino IDE | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro_ros_static_library_builder.svg?logo=docker)](https://hub.docker.com/r/microros/micro_ros_static_library_builder/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro_ros_static_library_builder.svg?logo=docker)](https://hub.docker.com/r/microros/micro_ros_static_library_builder/)[![Compare Images](https://images.microbadger.com/badges/image/microros/micro_ros_static_library_builder.svg)](https://microbadger.com/images/microros/micro_ros_static_library_builder) | -| esp-idf-microros | Allows to use micro-ROS as a component of the ESP-IDF build system | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/esp-idf-microros.svg?logo=docker)](https://hub.docker.com/r/microros/esp-idf-microros/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/esp-idf-microros.svg?logo=docker)](https://hub.docker.com/r/microros/esp-idf-microros/)[![Compare Images](https://images.microbadger.com/badges/image/microros/esp-idf-microros.svg)](https://microbadger.com/images/microros/esp-idf-microros) | +| Image | Description | Status | +| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| base | Base image with a ROS 2 Humble installation + micro-ROS specific build system tools. Used as base of any other micro-ROS image | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/base.svg?logo=docker)](https://hub.docker.com/r/microros/base/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/base.svg?logo=docker)](https://hub.docker.com/r/microros/base/) | +| micro-ros-agent | Image containing a pre-compiled micro-ROS-Agent, ready to use as a standalone application | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-agent.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-agent/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-agent.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-agent/) | +| micro-ros-demos | Contains pre-compiled micro-ROS demo applications, ready to use to get a taste of micro-ROS capabilities | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-demos.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-demos/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-demos.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-demos/) | +| micro-ros-olimex-nuttx | Contains a ready to flash example for Olimex STM32 E407 | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-olimex-nuttx.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-olimex-nuttx/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-olimex-nuttx.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-olimex-nuttx/) | +| micro_ros_static_library_builder | Allows to use a pre-compiled micro-ROS library to develop applications using Arduino IDE | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro_ros_static_library_builder.svg?logo=docker)](https://hub.docker.com/r/microros/micro_ros_static_library_builder/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro_ros_static_library_builder.svg?logo=docker)](https://hub.docker.com/r/microros/micro_ros_static_library_builder/) | +| esp-idf-microros | Allows to use micro-ROS as a component of the ESP-IDF build system | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/esp-idf-microros.svg?logo=docker)](https://hub.docker.com/r/microros/esp-idf-microros/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/esp-idf-microros.svg?logo=docker)](https://hub.docker.com/r/microros/esp-idf-microros/) | ## Webpage Source Code Repository Status @@ -76,21 +76,16 @@ Most repositories can be found in GitHub's micro-ROS organization at [github.com Bloom release status of packages in repository [github.com/ros2/rclc/](https://github.com/ros2/rclc) for different architectures and releases. -| Package | Release | amd64 | arm64 | armhf | -| :------------------------------------------------------------------------ | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [rclc](https://github.com/ros2/rclc/tree/master/rclc) | Dashing | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Dpr__rclc__ubuntu_bionic_amd64)](https://build.ros2.org/job/Dpr__rclc__ubuntu_bionic_amd64/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Dbin_ubv8_uBv8__rclc__ubuntu_bionic_arm64__binary)](https://build.ros2.org/job/Dbin_ubv8_uBv8__rclc__ubuntu_bionic_arm64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Dbin_ubhf_uBhf__rclc__ubuntu_bionic_armhf__binary)](https://build.ros2.org/job/Dbin_ubhf_uBhf__rclc__ubuntu_bionic_armhf__binary/) | -| | Eloquent | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Epr__rclc__ubuntu_bionic_amd64)](https://build.ros2.org/job/Epr__rclc__ubuntu_bionic_amd64/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ebin_ubv8_uBv8__rclc__ubuntu_bionic_arm64__binary)](https://build.ros2.org/job/Ebin_ubv8_uBv8__rclc__ubuntu_bionic_arm64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ebin_ubhf_uBhf__rclc__ubuntu_bionic_armhf__binary)](https://build.ros2.org/job/Ebin_ubhf_uBhf__rclc__ubuntu_bionic_armhf__binary/) | -| | Foxy | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Fpr__rclc__ubuntu_focal_amd64)](https://build.ros2.org/job/Fpr__rclc__ubuntu_focal_amd64/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Fbin_ubv8_uFv8__rclc__ubuntu_focal_arm64__binary)](https://build.ros2.org/job/Fbin_ubv8_uFv8__rclc__ubuntu_focal_arm64__binary/) | | -| | Galactic | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rpr__rclc__ubuntu_focal_amd64)](https://build.ros2.org/job/Gpr__rclc__ubuntu_focal_amd64/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_ufv8_uFv8__rclc__ubuntu_focal_arm64__binary)](https://build.ros2.org/job/Gbin_ufv8_uFv8__rclc__ubuntu_focal_arm64__binary/) | | -| | Rolling | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rpr__rclc__ubuntu_focal_amd64)](https://build.ros2.org/job/Rpr__rclc__ubuntu_focal_amd64/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_ufv8_uFv8__rclc__ubuntu_focal_arm64__binary)](https://build.ros2.org/job/Rbin_ufv8_uFv8__rclc__ubuntu_focal_arm64__binary/) | | -| | | | | | -| [rclc_examples](https://github.com/ros2/rclc/tree/master/rclc_examples) | Dashing | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Dbin_uB64__rclc_examples__ubuntu_bionic_amd64__binary)](https://build.ros2.org/job/Dbin_uB64__rclc_examples__ubuntu_bionic_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Dbin_ubv8_uBv8__rclc_examples__ubuntu_bionic_arm64__binary&build=8)](https://build.ros2.org/job/Dbin_ubv8_uBv8__rclc_examples__ubuntu_bionic_arm64__binary/8/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Dbin_ubhf_uBhf__rclc_examples__ubuntu_bionic_armhf__binary)](https://build.ros2.org/job/Dbin_ubhf_uBhf__rclc_examples__ubuntu_bionic_armhf__binary/) | -| | Eloquent | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ebin_uB64__rclc_examples__ubuntu_bionic_amd64__binary)](https://build.ros2.org/job/Ebin_uB64__rclc_examples__ubuntu_bionic_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ebin_ubv8_uBv8__rclc_examples__ubuntu_bionic_arm64__binary&build=8)](https://build.ros2.org/job/Ebin_ubv8_uBv8__rclc_examples__ubuntu_bionic_arm64__binary/8/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ebin_ubhf_uBhf__rclc_examples__ubuntu_bionic_armhf__binary)](https://build.ros2.org/job/Ebin_ubhf_uBhf__rclc_examples__ubuntu_bionic_armhf__binary/) | -| | Foxy | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Fbin_uF64__rclc_examples__ubuntu_focal_amd64__binary)](https://build.ros2.org/job/Fbin_uF64__rclc_examples__ubuntu_focal_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Fbin_ubv8_uFv8__rclc_examples__ubuntu_focal_arm64__binary)](https://build.ros2.org/job/Fbin_ubv8_uFv8__rclc_examples__ubuntu_focal_arm64__binary/) | | -| | Galactic | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Gbin_uF64__rclc_examples__ubuntu_focal_amd64__binary)](https://build.ros2.org/job/Gbin_uF64__rclc_examples__ubuntu_focal_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Gbin_ufv8_uFv8__rclc_examples__ubuntu_focal_arm64__binary)](https://build.ros2.org/job/Gbin_ufv8_uFv8__rclc_examples__ubuntu_focal_arm64__binary/) | | -| | Rolling | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uF64__rclc_examples__ubuntu_focal_amd64__binary)](https://build.ros2.org/job/Rbin_uF64__rclc_examples__ubuntu_focal_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_ufv8_uFv8__rclc_examples__ubuntu_focal_arm64__binary)](https://build.ros2.org/job/Rbin_ufv8_uFv8__rclc_examples__ubuntu_focal_arm64__binary/) | | -| | | | | | -| [rclc_lifecycle](https://github.com/ros2/rclc/tree/master/rclc_lifecycle) | Dashing | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Dbin_uB64__rclc_lifecycle__ubuntu_bionic_amd64__binary)](https://build.ros2.org/job/Dbin_uB64__rclc_lifecycle__ubuntu_bionic_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Dbin_ubv8_uBv8__rclc_lifecycle__ubuntu_bionic_arm64__binary)](https://build.ros2.org/job/Dbin_ubv8_uBv8__rclc_lifecycle__ubuntu_bionic_arm64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Dbin_ubhf_uBhf__rclc_lifecycle__ubuntu_bionic_armhf__binary)](https://build.ros2.org/job/Dbin_ubhf_uBhf__rclc_lifecycle__ubuntu_bionic_armhf__binary/) | -| | Eloquent | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ebin_uB64__rclc_lifecycle__ubuntu_bionic_amd64__binary)](https://build.ros2.org/job/Ebin_uB64__rclc_lifecycle__ubuntu_bionic_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ebin_ubv8_uBv8__rclc_lifecycle__ubuntu_bionic_arm64__binary)](https://build.ros2.org/job/Ebin_ubv8_uBv8__rclc_lifecycle__ubuntu_bionic_arm64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ebin_ubhf_uBhf__rclc_lifecycle__ubuntu_bionic_armhf__binary)](https://build.ros2.org/job/Ebin_ubhf_uBhf__rclc_lifecycle__ubuntu_bionic_armhf__binary/) | -| | Foxy | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Fbin_uF64__rclc_lifecycle__ubuntu_focal_amd64__binary)](https://build.ros2.org/job/Fbin_uF64__rclc_lifecycle__ubuntu_focal_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Fbin_ubv8_uFv8__rclc_lifecycle__ubuntu_focal_arm64__binary)](https://build.ros2.org/job/Fbin_ubv8_uFv8__rclc_lifecycle__ubuntu_focal_arm64__binary/) | | -| | Rolling | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uF64__rclc_lifecycle__ubuntu_focal_amd64__binary)](https://build.ros2.org/job/Rbin_uF64__rclc_lifecycle__ubuntu_focal_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_ufv8_uFv8__rclc_lifecycle__ubuntu_focal_arm64__binary)](https://build.ros2.org/job/Rbin_ufv8_uFv8__rclc_lifecycle__ubuntu_focal_arm64__binary/) | | +| Package | Release | amd64 | arm64 | armhf | +| :------------------------------------------------------------------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [rclc](https://github.com/ros2/rclc/tree/rolling/rclc) | Humble | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hpr__rclc__ubuntu_jammy_amd64)](https://build.ros2.org/job/Hpr__rclc__ubuntu_jammy_amd64/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_ubv8_uFv8__rclc__ubuntu_jammy_arm64__binary)](https://build.ros2.org/job/Hbin_ubv8_uFv8__rclc__ubuntu_jammy_arm64__binary/) | | +| | Iron | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ipr__rclc__ubuntu_jammy_amd64)](https://build.ros2.org/job/Ipr__rclc__ubuntu_jammy_amd64/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_ufv8_uFv8__rclc__ubuntu_jammy_arm64__binary)](https://build.ros2.org/job/Ibin_ufv8_uFv8__rclc__ubuntu_jammy_arm64__binary/) | | +| | Rolling | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rpr__rclc__ubuntu_jammy_amd64)](https://build.ros2.org/job/Rpr__rclc__ubuntu_jammy_amd64/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_ufv8_uFv8__rclc__ubuntu_jammy_arm64__binary)](https://build.ros2.org/job/Rbin_ufv8_uFv8__rclc__ubuntu_jammy_arm64__binary/) | | +| | | | | | +| [rclc_examples](https://github.com/ros2/rclc/tree/rolling/rclc_examples) | Humble | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uF64__rclc_examples__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uF64__rclc_examples__ubuntu_jammy_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_ubv8_uFv8__rclc_examples__ubuntu_jammy_arm64__binary)](https://build.ros2.org/job/Hbin_ubv8_uFv8__rclc_examples__ubuntu_jammy_arm64__binary/) | | +| | Iron | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uF64__rclc_examples__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uF64__rclc_examples__ubuntu_jammy_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_ufv8_uFv8__rclc_examples__ubuntu_jammy_arm64__binary)](https://build.ros2.org/job/Ibin_ufv8_uFv8__rclc_examples__ubuntu_jammy_arm64__binary/) | | +| | Rolling | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uF64__rclc_examples__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Rbin_uF64__rclc_examples__ubuntu_jammy_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_ufv8_uFv8__rclc_examples__ubuntu_jammy_arm64__binary)](https://build.ros2.org/job/Rbin_ufv8_uFv8__rclc_examples__ubuntu_jammy_arm64__binary/) | | +| | | | | | +| [rclc_lifecycle](https://github.com/ros2/rclc/tree/rolling/rclc_lifecycle) | Humble | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_uB64__rclc_lifecycle__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Hbin_uB64__rclc_lifecycle__ubuntu_jammy_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_ubv8_uBv8__rclc_lifecycle__ubuntu_jammy_arm64__binary)](https://build.ros2.org/job/Hbin_ubv8_uBv8__rclc_lifecycle__ubuntu_jammy_arm64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Hbin_ubhf_uBhf__rclc_lifecycle__ubuntu_jammy_armhf__binary)](https://build.ros2.org/job/Hbin_ubhf_uBhf__rclc_lifecycle__ubuntu_jammy_armhf__binary/) | +| | Iron | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_uF64__rclc_lifecycle__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Ibin_uF64__rclc_lifecycle__ubuntu_jammy_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Ibin_ubv8_uFv8__rclc_lifecycle__ubuntu_jammy_arm64__binary)](https://build.ros2.org/job/Hbin_ubv8_uFv8__rclc_lifecycle__ubuntu_jammy_arm64__binary/) | | +| | Rolling | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_uF64__rclc_lifecycle__ubuntu_jammy_amd64__binary)](https://build.ros2.org/job/Rbin_uF64__rclc_lifecycle__ubuntu_jammy_amd64__binary/) | [![Build Status](https://build.ros2.org/buildStatus/icon?job=Rbin_ufv8_uFv8__rclc_lifecycle__ubuntu_jammy_arm64__binary)](https://build.ros2.org/job/Rbin_ufv8_uFv8__rclc_lifecycle__ubuntu_jammy_arm64__binary/) | | diff --git a/_docs/overview/ext_tools/index.md b/_docs/overview/ext_tools/index.md index 030575152..807e134a5 100644 --- a/_docs/overview/ext_tools/index.md +++ b/_docs/overview/ext_tools/index.md @@ -41,7 +41,7 @@ The modules that exist up to date for integrating into external build systems ar
- Vulcanexus is an all-in-one ROS 2 tool set for easy and customized robotics development. It offers natively integrated solutions for ROS 2 networks in terms of performance improvement, simulation, cloud/edge communication, and microcontroller integration. The latter relies on micro-ROS. Vulcanexus is free and open source, and available as a Docker image for Galactic and Humble. All components enjoy continuous updates so users benefit from the latest features at all times. + Vulcanexus is an all-in-one ROS 2 tool set for easy and customized robotics development. It offers natively integrated solutions for ROS 2 networks in terms of performance improvement, simulation, cloud/edge communication, and microcontroller integration. The latter relies on micro-ROS. Vulcanexus is free and open source, and available as a Docker image for Humble and Iron. All components enjoy continuous updates so users benefit from the latest features at all times.
@@ -121,11 +121,11 @@ The modules that exist up to date for integrating into external build systems ar
The STM32CubeMX is a graphical tool by ST for configuring STM32 microcontrollers and microprocessors. It enables to optimally program and manipulate the software thanks to a set of utilities that help setting up pinouts, peripherals, and middleware stacks. - micro-ROS for STM32CubeMX is based on a Dockerfile and allows micro-ROS to be virtually supported by the full set of boards offered by STMicroelectronics, in turn enabling the seamless integration of micro-ROS into any STM32 controller based project. + micro-ROS for STM32CubeMX is based on a Dockerfile and allows micro-ROS to be virtually supported by the full set of boards offered by STMicroelectronics, in turn enabling the seamless integration of micro-ROS into any STM32 controller based project.
Resources:
diff --git a/_docs/overview/license/index.md b/_docs/overview/license/index.md index d9d609139..4fd84bf1d 100644 --- a/_docs/overview/license/index.md +++ b/_docs/overview/license/index.md @@ -28,4 +28,4 @@ We are aware of the following important license specifics in the RTOS supported * GPL-licensed build scripts in Zepyhr: The third-party licenses are given directly [in the source tree](https://github.com/zephyrproject-rtos/zephyr/), but [docs.zephyrproject.org/latest/LICENSING.html](https://docs.zephyrproject.org/latest/LICENSING.html) states explicitly that few build scripts are used under GPL v2. * GPL-licensed build tool files in ESP-IDF: The Espressif IoT Development Framework used for the ESP32 includes files menuconfig (Kconfig) and several other build tooling files licensed under GPL v2 or v3. -* Static library for Arduino IDE: The [micro_ros_arduino repository](https://github.com/micro-ROS/micro_ros_arduino) provides a static library `libmicroros.a` of the micro-ROS stack for use with the Arduino IDE. In detail, multiple versions of this library are provided, built for different microcontroller families using suitable cross-compiler configurations. The list of repositories included in the library can be found in the [`built_packages`](https://github.com/micro-ROS/micro_ros_arduino/blob/galactic/built_packages) file in the root of the repository. \ No newline at end of file +* Static library for Arduino IDE: The [micro_ros_arduino repository](https://github.com/micro-ROS/micro_ros_arduino) provides a static library `libmicroros.a` of the micro-ROS stack for use with the Arduino IDE. In detail, multiple versions of this library are provided, built for different microcontroller families using suitable cross-compiler configurations. The list of repositories included in the library can be found in the [`built_packages`](https://github.com/micro-ROS/micro_ros_arduino/blob/iron/built_packages) file in the root of the repository. \ No newline at end of file diff --git a/_docs/overview/users_and_clients/index.md b/_docs/overview/users_and_clients/index.md index 238292502..bc9009644 100644 --- a/_docs/overview/users_and_clients/index.md +++ b/_docs/overview/users_and_clients/index.md @@ -60,7 +60,7 @@ users: text: Dronecode is a nonprofit hosted under the Linux Foundation, dedicated to fostering open-source components and their communities. Working with top developers, end-users, and adopting vendors to create opportunities for collaboration. title: Dronecode url: www.dronecode.org - - path: https://www.wyca-robotics.fr/wp-content/uploads/2021/04/LogoAvecRoue.png + - path: https://global-uploads.webflow.com/642fc874fdfc5b6e86529427/643002c6f56ab31a4f8ee213_white.svg text: WYCA Robotics is a French company with more than 5 years of edge technology mastering in Robotics, AI and autonomous navigation. They developed Elodie, the first multi-purpose self-driving level 5 indoor vehicle for handling the users' mobiliy challenges. title: Wyca Robotics url: www.wyca-robotics.com @@ -86,7 +86,7 @@ collaborators: text: Espressif Systems is a public multinational, fabless semiconductor company focused on developing cutting-edge Wi-Fi-and-Bluetooth, low-power, AIoT solutions. They have created the popular ESP8266, ESP32, ESP32-S and ESP32-C series of chips, modules and development boards, and offer several open-source frameworks for building AIoT applications, among which the Espressif's IoT Development Framework ESP-IDF. title: Espressif url: www.espressif.com - - path: http://hydrasystem.pl/img/hydra_system_black.png + - path: https://hydrasystem.pl/images/hydra_system_on_white.png text: Hydra System provides a multi-component solution, designed specifically for precise localisation of agricultural machines with work efficiency in mind Hydra System is composed of navigation module for agricultural machine (Hydra Box), specialised software (Hydra Nav) and an optional base station module (Hydra Base). title: Hydra System url: www.hydrasystem.pl/index.en_GB.html diff --git a/_docs/tutorials/advanced/handling_type_memory/index.md b/_docs/tutorials/advanced/handling_type_memory/index.md index 6235057b1..6aa34083d 100644 --- a/_docs/tutorials/advanced/handling_type_memory/index.md +++ b/_docs/tutorials/advanced/handling_type_memory/index.md @@ -9,15 +9,15 @@ This page aims to explain how to handle messages and types memory in micro-ROS. First of all, since the micro-ROS user is in an embedded C99 environment, it is important to be aware of what messages and ROS 2 types are being used in order to handle memory correctly. -The micro-ROS type memory handling has changed in the latest micro-ROS Galactic distribution, two approaches are presented in this tutorial: micro-ROS Foxy and micro-ROS Galactic and beyond: +Two approaches are presented in this tutorial: manual memory allocation, and automated approach using the [`micro_ros_utilities`](https://github.com/micro-ROS/micro_ros_utilities) package: -- [micro-ROS Foxy](#micro-ros-foxy) +- [Manual allocation](#manual-allocation) - [Sequence types in micro-ROS](#sequence-types-in-micro-ros) - [Compound types in micro-ROS](#compound-types-in-micro-ros) - [Sequences of compound types](#sequences-of-compound-types) -- [micro-ROS Galactic and beyond](#micro-ros-galactic-and-beyond) +- [micro-ROS utilities](#micro-ros-utilities) -# micro-ROS Foxy +# Manual allocation By watching the `.msg` or `.srv` of the types used in a micro-ROS application, you can determine the type of each member. Currently, the following types are supported: - Basic type @@ -204,9 +204,9 @@ for(int32_t i = 0; i < 3; i++){ } ``` -# micro-ROS Galactic and beyond +# micro-ROS utilities -Due to the inclusion of [`rosidl_typesupport_introspection_c`](https://github.com/ros2/rosidl/tree/master/rosidl_typesupport_introspection_c) in micro-ROS Galactic distribution, an automated memory handling for micro-ROS types is available. The tools related to this feature are available in the package [`micro_ros_utilities`](https://github.com/micro-ROS/micro_ros_utilities). +Due to the inclusion of [`rosidl_typesupport_introspection_c`](https://github.com/ros2/rosidl/tree/rolling/rosidl_typesupport_introspection_c), an automated memory handling for micro-ROS types is available. The tools related to this feature are available in the package [`micro_ros_utilities`](https://github.com/micro-ROS/micro_ros_utilities). The documentation of the package [`micro_ros_utilities`](https://github.com/micro-ROS/micro_ros_utilities) is available [here](https://micro.ros.org/docs/api/utils/). diff --git a/_docs/tutorials/advanced/microxrcedds_rmw_configuration/index.md b/_docs/tutorials/advanced/microxrcedds_rmw_configuration/index.md index 4a524d1c2..39115bc7b 100644 --- a/_docs/tutorials/advanced/microxrcedds_rmw_configuration/index.md +++ b/_docs/tutorials/advanced/microxrcedds_rmw_configuration/index.md @@ -63,7 +63,7 @@ The rmw-microxrcedds uses a static-memory message queue where to to keep the sub The size of this message queue could be set by the `RMW_UXRCE_MAX_HISTORY`. It is worth noting that all the aforementioned CMake flags shall be set in a `.meta` for each platform supported in [micro_ros_setup](https://github.com/micro-ROS/micro_ros_setup). -For example, in the [ping-pong application](https://micro-ros.github.io//docs/tutorials/core/first_application_linux/) the host [configuration file](https://github.com/micro-ROS/micro_ros_setup/blob/foxy/config/host/generic/client-host-colcon.meta) can be optimized with the following modifications: +For example, in the [ping-pong application](https://micro-ros.github.io//docs/tutorials/core/first_application_linux/) the host [configuration file](https://github.com/micro-ROS/micro_ros_setup/blob/humble/config/host/generic/client-host-colcon.meta) can be optimized with the following modifications: ``` { @@ -88,9 +88,9 @@ For example, in the [ping-pong application](https://micro-ros.github.io//docs/tu ## Run-time configuration There are some build time parameters related to Client-to-Agent connection (such as **CONFIG_RMW_DEFAULT_UDP_PORT**, **CONFIG_RMW_DEFAULT_UDP_IP** and **CONFIG_RMW_DEFAULT_SERIAL_DEVICE**) that can be configured either at build time or at run-time. -This means that you can set them in the [configuration file](https://github.com/micro-ROS/micro_ros_setup/blob/foxy/config/host/generic/client-host-colcon.meta) mentioned above and that micro-ROS provides a user configuration API for setting some RMW and middleware parameters at run-time. +This means that you can set them in the [configuration file](https://github.com/micro-ROS/micro_ros_setup/blob/humble/config/host/generic/client-host-colcon.meta) mentioned above and that micro-ROS provides a user configuration API for setting some RMW and middleware parameters at run-time. -The following example code shows the [API](https://github.com/micro-ROS/rmw_microxrcedds/blob/humble/rmw_microxrcedds_c/include/rmw_microros/init_options.h) calls needed to set the agent's IP address, port or serial device: +The following example code shows the [API](https://github.com/micro-ROS/rmw_microxrcedds/blob/iron/rmw_microxrcedds_c/include/rmw_microros/init_options.h) calls needed to set the agent's IP address, port or serial device: ```c #include diff --git a/_docs/tutorials/advanced/overview/index.md b/_docs/tutorials/advanced/overview/index.md index 2f870d918..2e9280f1c 100644 --- a/_docs/tutorials/advanced/overview/index.md +++ b/_docs/tutorials/advanced/overview/index.md @@ -30,7 +30,3 @@ This chapter provides a number of advanced tutorials for those users who already * [**Benchmarking with the Shadow-Builder**](../benchmarking/) This tutorial aims at describing a specific benchmarking tooling called the *Shadow Builder*. More specifically, it explains how to create a plugin from A to Z and how to instrument the code. - -* [**Getting started with ROS 2 tracing**](../tracing/) - - Tracing is a method for recording run-time data which is already well integrated with operating systems. This tutorial aims to introduce our ongoing effort to instrument ROS 2 and provide trace analysis tools. diff --git a/_docs/tutorials/core/first_application_linux/index.md b/_docs/tutorials/core/first_application_linux/index.md index 24ec6976c..9f6481934 100644 --- a/_docs/tutorials/core/first_application_linux/index.md +++ b/_docs/tutorials/core/first_application_linux/index.md @@ -3,7 +3,7 @@ title: First micro-ROS Application on Linux permalink: /docs/tutorials/core/first_application_linux/ --- - + In this tutorial, you’ll learn the use of micro-ROS with Linux by testing a Ping Pong application. In the follow-up tutorial [*First micro-ROS application on an RTOS*](/docs/tutorials/core/first_application_rtos/), @@ -39,13 +39,13 @@ export_executable() In this tutorial, we will focus on the out-of-the-box `ping_pong` application located at `src/uros/micro-ROS-demos/rclc/ping_pong`. You can check the complete content of this app -[here](https://github.com/micro-ROS/micro-ROS-demos/tree/foxy/rclc/ping_pong). +[here](https://github.com/micro-ROS/micro-ROS-demos/tree/humble/rclc/ping_pong). {% include first_application_common/pingpong_logic.md %} The contents of the host app specific files can be found here: -[main.c](https://github.com/micro-ROS/micro-ROS-demos/blob/foxy/rclc/ping_pong/main.c) and -[CMakeLists.txt](https://github.com/micro-ROS/micro-ROS-demos/blob/foxy/rclc/ping_pong/CMakeLists.txt). +[main.c](https://github.com/micro-ROS/micro-ROS-demos/blob/humble/rclc/ping_pong/main.c) and +[CMakeLists.txt](https://github.com/micro-ROS/micro-ROS-demos/blob/humble/rclc/ping_pong/CMakeLists.txt). A thorough review of these files is illustrative of how to create a micro-ROS app in this RTOS. ## Building the firmware diff --git a/_docs/tutorials/core/first_application_rtos/freertos.md b/_docs/tutorials/core/first_application_rtos/freertos.md index 3c4ef4841..c91d99763 100644 --- a/_docs/tutorials/core/first_application_rtos/freertos.md +++ b/_docs/tutorials/core/first_application_rtos/freertos.md @@ -5,7 +5,7 @@ redirect_from: - /docs/tutorials/advanced/freertos/freertos_getting_started/ --- - + In this tutorial, you'll learn the use of micro-ROS with FreeRTOS by testing a Ping Pong application. {% include first_application_common/target_hardware.md %} @@ -47,13 +47,13 @@ ros2 run micro_ros_setup configure_firmware.sh ping_pong --transport serial ``` You can check the complete content of the `ping_pong` app -[here](https://github.com/micro-ROS/freertos_apps/tree/foxy/apps/ping_pong). +[here](https://github.com/micro-ROS/freertos_apps/tree/humble/apps/ping_pong). {% include first_application_common/pingpong_logic.md %} The contents of the FreeRTOS app specific files can be found here: -[app.c](https://github.com/micro-ROS/freertos_apps/blob/foxy/apps/ping_pong/app.c) and -[app-colcon.meta](https://github.com/micro-ROS/freertos_apps/blob/foxy/apps/ping_pong/app-colcon.meta). +[app.c](https://github.com/micro-ROS/freertos_apps/blob/humble/apps/ping_pong/app.c) and +[app-colcon.meta](https://github.com/micro-ROS/freertos_apps/blob/humble/apps/ping_pong/app-colcon.meta). A thorough review of these files is illustrative of how to create a micro-ROS app in this RTOS. {% include first_application_common/build_and_flash.md %} diff --git a/_docs/tutorials/core/first_application_rtos/nuttx.md b/_docs/tutorials/core/first_application_rtos/nuttx.md index 75974904d..aecc63945 100644 --- a/_docs/tutorials/core/first_application_rtos/nuttx.md +++ b/_docs/tutorials/core/first_application_rtos/nuttx.md @@ -5,7 +5,7 @@ redirect_from: - /docs/tutorials/advanced/nuttx/nuttx_getting_started/ --- - + In this tutorial, you'll learn the use of micro-ROS with NuttX by testing a Ping Pong application. {% include first_application_common/target_hardware.md %} @@ -23,7 +23,7 @@ Once the command is executed, a folder named `firmware` must be present in your This step is in charge, among other things, of downloading a set of micro-ROS apps for the specific platform you are addressing. -In the case of NuttX, these are located [here](https://github.com/micro-ROS/nuttx_apps/tree/foxy/examples). +In the case of NuttX, these are located [here](https://github.com/micro-ROS/nuttx_apps/tree/humble/examples). Each app is represented by a folder containing the following files: * `app.c`: This file contains the logic of the application. @@ -42,7 +42,7 @@ ros2 run micro_ros_setup configure_firmware.sh [APP] [OPTIONS] ``` In this tutorial, we will use a Serial transport and focus on the out-of-the-box `uros_pingpong` -application located [here](https://github.com/micro-ROS/nuttx_apps/tree/foxy/examples/uros_pingpong). +application located [here](https://github.com/micro-ROS/nuttx_apps/tree/humble/examples/uros_pingpong). To execute this application with the chosen transport, run the configuration command above by specifying the `[APP]` parameter as below: ```bash @@ -119,15 +119,15 @@ Now we have two options to configure our micro-ROS transport: ``` You can check the complete content of the `uros_pingpong` app -[here](https://github.com/micro-ROS/nuttx_apps/tree/foxy/examples/uros_pingpong). +[here](https://github.com/micro-ROS/nuttx_apps/tree/humble/examples/uros_pingpong). {% include first_application_common/pingpong_logic.md %} The contents of the FreeRTOS app specific files can be found here: -[app.c](https://github.com/micro-ROS/nuttx_apps/blob/foxy/examples/uros_pingpong/app.c), -[Kconfig](https://github.com/micro-ROS/nuttx_apps/blob/foxy/examples/uros_pingpong/Kconfig), -[Make.defs](https://github.com/micro-ROS/nuttx_apps/blob/foxy/examples/uros_pingpong/Make.defs) and -[Makefile](https://github.com/micro-ROS/nuttx_apps/blob/foxy/examples/uros_pingpong/Makefile). +[app.c](https://github.com/micro-ROS/nuttx_apps/blob/humble/examples/uros_pingpong/app.c), +[Kconfig](https://github.com/micro-ROS/nuttx_apps/blob/humble/examples/uros_pingpong/Kconfig), +[Make.defs](https://github.com/micro-ROS/nuttx_apps/blob/humble/examples/uros_pingpong/Make.defs) and +[Makefile](https://github.com/micro-ROS/nuttx_apps/blob/humble/examples/uros_pingpong/Makefile). A thorough review of these files is illustrative of how to create a micro-ROS app in this RTOS. {% include first_application_common/build_and_flash.md %} diff --git a/_docs/tutorials/core/first_application_rtos/zephyr.md b/_docs/tutorials/core/first_application_rtos/zephyr.md index 7090fab94..acb53ea8b 100644 --- a/_docs/tutorials/core/first_application_rtos/zephyr.md +++ b/_docs/tutorials/core/first_application_rtos/zephyr.md @@ -5,7 +5,7 @@ redirect_from: - /docs/tutorials/advanced/zephyr/zephyr_getting_started/ --- - + In this tutorial, you'll learn the use of micro-ROS with Zephyr by testing a Ping Pong application. {% include first_application_common/target_hardware.md %} @@ -31,15 +31,15 @@ run the configuration command above by specifying the `[APP]` and `[OPTIONS]` pa ros2 run micro_ros_setup configure_firmware.sh ping_pong --transport serial-usb ``` You can check the complete content of the `ping_pong` app -[here](https://github.com/micro-ROS/zephyr_apps/tree/foxy/apps/ping_pong). +[here](https://github.com/micro-ROS/zephyr_apps/tree/humble/apps/ping_pong). {% include first_application_common/pingpong_logic.md %} The contents of the Zephyr app specific files can be found here: -[main.c](https://github.com/micro-ROS/zephyr_apps/blob/foxy/apps/ping_pong/src/main.c), -[app-colcon.meta](https://github.com/micro-ROS/zephyr_apps/blob/foxy/apps/ping_pong/app-colcon.meta), -[CMakeLists.txt](https://github.com/micro-ROS/zephyr_apps/blob/foxy/apps/ping_pong/CMakeLists.txt) -and [serial-usb.conf](https://github.com/micro-ROS/zephyr_apps/blob/foxy/apps/ping_pong/serial-usb.conf). +[main.c](https://github.com/micro-ROS/zephyr_apps/blob/humble/apps/ping_pong/src/main.c), +[app-colcon.meta](https://github.com/micro-ROS/zephyr_apps/blob/humble/apps/ping_pong/app-colcon.meta), +[CMakeLists.txt](https://github.com/micro-ROS/zephyr_apps/blob/humble/apps/ping_pong/CMakeLists.txt) +and [serial-usb.conf](https://github.com/micro-ROS/zephyr_apps/blob/humble/apps/ping_pong/serial-usb.conf). A thorough review of these files is illustrative of how to create a micro-ROS app in this RTOS. {% include first_application_common/build_and_flash.md %} diff --git a/_docs/tutorials/core/zephyr_emulator/index.md b/_docs/tutorials/core/zephyr_emulator/index.md index 9cd7dd4d9..b44221635 100644 --- a/_docs/tutorials/core/zephyr_emulator/index.md +++ b/_docs/tutorials/core/zephyr_emulator/index.md @@ -3,7 +3,7 @@ title: Zephyr Emulator permalink: /docs/tutorials/core/zephyr_emulator/ --- - + In this tutorial, you'll learn the use of micro-ROS with a **[Zephyr RTOS](https://www.zephyrproject.org/)** emulator (also known as [Native POSIX](https://docs.zephyrproject.org/latest/boards/posix/native_posix/doc/index.html)) @@ -35,15 +35,15 @@ ros2 run micro_ros_setup configure_firmware.sh ping_pong --transport udp --ip 12 ``` You can check the complete content of the `ping_pong` app -[here](https://github.com/micro-ROS/zephyr_apps/tree/foxy/apps/ping_pong). +[here](https://github.com/micro-ROS/zephyr_apps/tree/humble/apps/ping_pong). {% include first_application_common/pingpong_logic.md %} The contents of the Zephyr app specific files can be found here: -[main.c](https://github.com/micro-ROS/zephyr_apps/blob/foxy/apps/ping_pong/src/main.c), -[app-colcon.meta](https://github.com/micro-ROS/zephyr_apps/blob/foxy/apps/ping_pong/app-colcon.meta), -[CMakeLists.txt](https://github.com/micro-ROS/zephyr_apps/blob/foxy/apps/ping_pong/CMakeLists.txt) -and [host-udp.conf](https://github.com/micro-ROS/zephyr_apps/blob/foxy/apps/ping_pong/host-udp.conf). +[main.c](https://github.com/micro-ROS/zephyr_apps/blob/humble/apps/ping_pong/src/main.c), +[app-colcon.meta](https://github.com/micro-ROS/zephyr_apps/blob/humble/apps/ping_pong/app-colcon.meta), +[CMakeLists.txt](https://github.com/micro-ROS/zephyr_apps/blob/humble/apps/ping_pong/CMakeLists.txt) +and [host-udp.conf](https://github.com/micro-ROS/zephyr_apps/blob/humble/apps/ping_pong/host-udp.conf). A thorough review of these files is illustrative of how to create a micro-ROS app in this RTOS. ## Building the firmware diff --git a/_docs/tutorials/old/6lowpan/index.md b/_docs/tutorials/old/6lowpan/index.md index b6a84143c..653e4ccca 100644 --- a/_docs/tutorials/old/6lowpan/index.md +++ b/_docs/tutorials/old/6lowpan/index.md @@ -26,7 +26,7 @@ In order to implement the steps highlighted in this guide, you need the followin - micro-ROS-bridge-RPI. **Important!** -You can find a guide of how to setup the micro-ROS-bridge_RPI at its [repository](https://github.com/micro-ROS/micro-ROS-bridge_RPI/blob/new_bridge_tools/Readme.md). +You can find a guide of how to setup the micro-ROS-bridge_RPI at its [repository](https://github.com/micro-ROS/micro-ROS-bridge_RPI/blob/new_bridge_tools/README.md). In the micro-ROS-bridge-RPI guide, you can find everything that you need to set-up this device base. ## Configure the board diff --git a/_docs/tutorials/programming_rcl_rclc/executor/executor.md b/_docs/tutorials/programming_rcl_rclc/executor/executor.md index 9bab34fae..0df3fcf63 100644 --- a/_docs/tutorials/programming_rcl_rclc/executor/executor.md +++ b/_docs/tutorials/programming_rcl_rclc/executor/executor.md @@ -3,7 +3,7 @@ title: Executor and timers permalink: /docs/tutorials/programming_rcl_rclc/executor/ --- - + - [Timers](#timers) - [Initialization](#initialization) @@ -53,7 +53,7 @@ void timer_callback(rcl_timer_t * timer, int64_t last_call_time) } ``` -During the callback the timer can be canceled or have its period and/or callback modified using the passed pointer. Check [rcl/timer.h](https://github.com/ros2/rcl/blob/galactic/rcl/include/rcl/timer.h) for details. +During the callback the timer can be canceled or have its period and/or callback modified using the passed pointer. Check [rcl/timer.h](https://github.com/ros2/rcl/blob/iron/rcl/include/rcl/timer.h) for details. ### Cleaning Up @@ -821,6 +821,6 @@ The following code will setup the executor accordingly: The custom structs `pub_trigger_object_t` are used to save the pointer of the handles. The timers `my_string_timer` and `my_int_timer` for the publishing executor; and, likewise, the subscriptions `my_string_sub` and `my_int_sub` for the subscribing executor. The configuration is done also with the `rclc_executor_set_trigger` by passing the trigger function and the trigger object, e.g. `pub_trigger` and `comm_obj_pub` for the `executor_pub`, respectivly. -The complete source code of this example can be found in the file [rclc-examples/example_executor_trigger.c](https://github.com/ros2/rclc/blob/humble/rclc_examples/src/example_executor_trigger.c). +The complete source code of this example can be found in the file [rclc-examples/example_executor_trigger.c](https://github.com/ros2/rclc/blob/iron/rclc_examples/src/example_executor_trigger.c). diff --git a/_docs/tutorials/programming_rcl_rclc/micro-ROS/micro-ROS.md b/_docs/tutorials/programming_rcl_rclc/micro-ROS/micro-ROS.md index be38b6634..1136ee6d4 100644 --- a/_docs/tutorials/programming_rcl_rclc/micro-ROS/micro-ROS.md +++ b/_docs/tutorials/programming_rcl_rclc/micro-ROS/micro-ROS.md @@ -5,7 +5,7 @@ permalink: /docs/tutorials/programming_rcl_rclc/micro-ROS/ - + - [Allocators](#allocators) - [Custom allocator](#custom-allocator) @@ -124,7 +124,7 @@ Custom methods prototypes and examples: ## Time sync micro-ROS Clients can synchronize their epoch time with the connected Agent, this can be very useful when working in embedded environments that do not provide any time synchronization mechanism. -This utility is based on the NTP protocol, taking into account delays caused by the transport layer. An usage example can be found on [`micro-ROS-demos/rclc/epoch_synchronization`](https://github.com/micro-ROS/micro-ROS-demos/blob/galactic/rclc/epoch_synchronization/main.c). +This utility is based on the NTP protocol, taking into account delays caused by the transport layer. An usage example can be found on [`micro-ROS-demos/rclc/epoch_synchronization`](https://github.com/micro-ROS/micro-ROS-demos/blob/iron/rclc/epoch_synchronization/main.c). ```c // Sync timeout @@ -142,7 +142,7 @@ if (rmw_uros_epoch_synchronized()) ``` ## Ping agent -The Client can test the connection with the Agent with the ping utility. This functionality can be used even when the micro-ROS context has not yet been initialized, which is useful to test the connection before trying to connect to the Agent. An example can be found on [`micro-ROS-demos/rclc/ping_uros_agent`](https://github.com/micro-ROS/micro-ROS-demos/blob/galactic/rclc/ping_uros_agent/main.c). +The Client can test the connection with the Agent with the ping utility. This functionality can be used even when the micro-ROS context has not yet been initialized, which is useful to test the connection before trying to connect to the Agent. An example can be found on [`micro-ROS-demos/rclc/ping_uros_agent`](https://github.com/micro-ROS/micro-ROS-demos/blob/iron/rclc/ping_uros_agent/main.c). ```c // Timeout for each attempt @@ -170,7 +170,7 @@ else ## Continous serialization -This utility allows the client to serialize and send data up to a customized size. The user can set the topic lenght and then serialize the data within the publish process. An example can be found on [`micro-ROS-demos/rclc/ping_uros_agent`](https://github.com/micro-ROS/micro-ROS-demos/blob/galactic/rclc/ping_uros_agent/main.c), where fragments from an image are requested and serialized on the spot. +This utility allows the client to serialize and send data up to a customized size. The user can set the topic lenght and then serialize the data within the publish process. An example can be found on [`micro-ROS-demos/rclc/ping_uros_agent`](https://github.com/micro-ROS/micro-ROS-demos/blob/iron/rclc/ping_uros_agent/main.c), where fragments from an image are requested and serialized on the spot. The user needs to define two callbacks, then set them on the `rmw`. It is recommended to clean the callbacks after the publication, to avoid interferences with other topics on the same process: diff --git a/_docs/tutorials/programming_rcl_rclc/node/node.md b/_docs/tutorials/programming_rcl_rclc/node/node.md index b092fee6a..11ab86e93 100644 --- a/_docs/tutorials/programming_rcl_rclc/node/node.md +++ b/_docs/tutorials/programming_rcl_rclc/node/node.md @@ -3,9 +3,9 @@ title: Nodes permalink: /docs/tutorials/programming_rcl_rclc/node/ --- - + -ROS 2 nodes are the main participants on ROS 2 ecosystem. They will communicate between each other using publishers, subscriptions, services, etc. Further information about ROS 2 nodes can be found [here](https://docs.ros.org/en/galactic/Tutorials/Understanding-ROS2-Nodes.html) +ROS 2 nodes are the main participants on ROS 2 ecosystem. They will communicate between each other using publishers, subscriptions, services, etc. Further information about ROS 2 nodes can be found [here](https://docs.ros.org/en/iron/Tutorials/Understanding-ROS2-Nodes.html) - [Initialization](#initialization) @@ -45,37 +45,7 @@ ROS 2 nodes are the main participants on ROS 2 ecosystem. They will communicate - Create a node with custom options: - The configuration of the node will also be applied to its future elements (Publishers, subscribers, services, ...).The API used to customize the node options differs between ROS2 distributions: - - Foxy: The `rcl_node_options_t` is used to configure the node - - ```c - // Initialize allocator and support objects - ... - - // Create node object - rcl_node_t node; - const char * node_name = "test_node"; - - // Node namespace (Can remain empty "") - const char * namespace = "test_namespace"; - - // Get default node options and modify them - rcl_node_options_t node_ops = rcl_node_get_default_options(); - - // Set node ROS domain ID to 10 - node_ops.domain_id = (size_t)(10); - - // Init node with custom options - rc = rclc_node_init_with_options(&node, node_name, namespace, &support, &node_ops); - - if (rc != RCL_RET_OK) { - ... // Handle error - return -1; - } - ``` - - Galactic and beyond: In this case, the node options are configured on the `rclc_support_t` object with a custom API + The configuration of the node will also be applied to its future elements (Publishers, subscribers, services, ...). The node options are configured on the `rclc_support_t` object with a custom API: ```c // Initialize micro-ROS allocator diff --git a/_docs/tutorials/programming_rcl_rclc/parameters/parameters.md b/_docs/tutorials/programming_rcl_rclc/parameters/parameters.md index d8bd36cd1..3a25a1b6f 100644 --- a/_docs/tutorials/programming_rcl_rclc/parameters/parameters.md +++ b/_docs/tutorials/programming_rcl_rclc/parameters/parameters.md @@ -3,31 +3,21 @@ title: Parameter server permalink: /docs/tutorials/programming_rcl_rclc/parameters/ --- - + ROS 2 parameters allow the user to create variables on a node and manipulate/read them with different ROS 2 commands. Further information about ROS 2 parameters can be found [here](https://docs.ros.org/en/rolling/Tutorials/Parameters/Understanding-ROS2-Parameters.html) Ready to use code examples related to this tutorial can be found in [`rclc/rclc_examples/src/example_parameter_server.c`](https://github.com/ros2/rclc/blob/master/rclc_examples/src/example_parameter_server.c). -micro-ROS parameters implementation has been upgraded in the latest micro-ROS Humble distribution, two approaches are presented in this tutorial: micro-ROS Foxy/Galactic and micro-ROS Humble and beyond: - -- [General implementation](#general-implementation) - - [Initialization](#initialization) - - [Memory requirements](#memory-requirements) - - [Add a parameter](#add-a-parameter) - - [Cleaning up](#cleaning-up) -- [micro-ROS Foxy/Galactic](#micro-ros-foxygalactic) - - [Initialization options](#initialization-options) - - [Callback](#callback) -- [micro-ROS Humble](#micro-ros-humble) - - [Initialization options](#initialization-options-1) - - [Callback](#callback-1) - - [Add a parameter](#add-a-parameter-1) - - [Delete a parameter](#delete-a-parameter) - - [Parameters description](#parameters-description) - -## General implementation -### Initialization +- [Initialization](#initialization) +- [Memory requirements](#memory-requirements) +- [Add a parameter](#add-a-parameter) +- [Delete a parameter](#delete-a-parameter) +- [Parameters description](#parameters-description) +- [Callback](#callback) +- [Cleaning up](#cleaning-up) + +## Initialization - Default initialization: ```c @@ -43,7 +33,47 @@ micro-ROS parameters implementation has been upgraded in the latest micro-ROS Hu } ``` -### Memory requirements +- Initialization with custom options: + + The following options can be configured: + - notify_changed_over_dds: Publish parameter events to other ROS 2 nodes as well. + - max_params: Maximum number of parameters allowed on the `rclc_parameter_server_t` object. + - allow_undeclared_parameters: Allows creation of parameters from external parameter clients. A new parameter will be created if a `set` operation is requested on a non-existing parameter. + - low_mem_mode: Reduces the memory used by the parameter server, functionality constrains are applied. + + ```c + // Parameter server object + rclc_parameter_server_t param_server; + + // Initialize parameter server options + const rclc_parameter_options_t options = { + .notify_changed_over_dds = true, + .max_params = 4, + .allow_undeclared_parameters = true, + .low_mem_mode = false; }; + + // Initialize parameter server with configured options + rcl_ret_t rc = rclc_parameter_server_init_with_option(¶m_server, &node, &options); + + if (RCL_RET_OK != rc) { + ... // Handle error + return -1; + } + ``` + +- Low memory mode: + + This mode ports the parameter functionality to memory constrained devices. The following constrains are applied: + - Request size limited to one parameter on Set, Get, Get types and Describe services. + - List parameter request has no prefixes enabled nor depth. + - Parameter description strings not allowed, `rclc_add_parameter_description` is disabled. + + Memory benchmark results on `STM32F4` for 7 parameters with `RCLC_PARAMETER_MAX_STRING_LENGTH = 50` and `notify_changed_over_dds = true`: + - Full mode: 11736 B + - Low memory mode: 4160 B + + +## Memory requirements The parameter server uses five services and an optional publisher. These need to be taken into account on the `rmw-microxrcedds` package memory configuration: @@ -76,7 +106,7 @@ rc = rclc_executor_init( *Humble: the variable is `RCLC_PARAMETER_EXECUTOR_HANDLES_NUMBER` has been renamed to `RCLC_EXECUTOR_PARAMETER_SERVER_HANDLES`.* -### Add a parameter +## Add a parameter The micro-ROS parameter server supports the following parameter types: @@ -130,140 +160,57 @@ The micro-ROS parameter server supports the following parameter types: rc = rclc_parameter_get_double(¶m_server, parameter_name, ¶m_value); ``` -*Max name size is controlled by the compile-time option `RCLC_PARAMETER_MAX_STRING_LENGTH`, default value is 50.* - -### Cleaning up +Parameters can also be created by external clients if the `allow_undeclared_parameters` flag is set. +The client just needs to set a value on a non-existing parameter. Then this parameter will be created if the server has still capacity and the callback allows the operation. -To destroy an initialized parameter server: +*Max name size is controlled by the compile-time option `RCLC_PARAMETER_MAX_STRING_LENGTH`, default value is 50.* +## Delete a parameter +Parameters can be deleted by both, the parameter server and external clients: ```c -// Delete parameter server -rclc_parameter_server_fini(¶m_server, &node); +rclc_delete_parameter(¶m_server, "param2"); ``` -This will delete any automatically created infrastructure on the agent (if possible) and deallocate used memory on the parameter server side. - -## micro-ROS Foxy/Galactic - -### Initialization options - - - Custom options: +*For external delete requests, the server callback will be executed, allowing the node to reject the operation.* - The following options can be configured: - - notify_changed_over_dds: Publish parameter events to other ROS 2 nodes as well. - - max_params: Maximum number of parameters allowed on the `rclc_parameter_server_t` object. +## Parameters description +- Parameter description + Adds a description of a parameter and its constrains, which will be returned on a describe parameter requests: ```c - // Parameter server object - rclc_parameter_server_t param_server; - - // Initialize parameter server options - const rclc_parameter_options_t options = { - .notify_changed_over_dds = true, - .max_params = 4 }; - - // Initialize parameter server with configured options - rcl_ret_t rc = rclc_parameter_server_init_with_option(¶m_server, &node, &options); - - if (RCL_RET_OK != rc) { - ... // Handle error - return -1; - } + rclc_add_parameter_description(¶m_server, "param2", "Second parameter", "Only even numbers"); ``` -### Callback - -When adding the parameter server to the executor, a callback could be configured. -This callback would then be executed after a parameter value is modified. - -A pointer to the changed parameter is passed as first and only argument. Example: -```c -void on_parameter_changed(Parameter * param) -{ - if (param == NULL) { - printf("Callback error, parameter is NULL\n"); - return; - } - - // Get parameter name - printf("Parameter %s modified.", param->name.data); - - // Get parameter type - switch (param->value.type) - { - // Get parameter value acording type - case RCLC_PARAMETER_BOOL: - printf(" New value: %d (bool)", param->value.bool_value); - break; - case RCLC_PARAMETER_INT: - printf(" New value: %ld (int)", param->value.integer_value); - break; - case RCLC_PARAMETER_DOUBLE: - printf(" New value: %f (double)", param->value.double_value); - break; - default: - break; - } - - printf("\n"); -} -``` -Once the parameter server and the executor are initialized, the parameter server must be added to the executor in order to accept parameter commands from ROS 2: -```c -// Add parameter server to executor including defined callback -rc = rclc_executor_add_parameter_server(&executor, ¶m_server, on_parameter_changed); -``` - -Note that this callback is optional as its just an event information for the user. To use the parameter server without a callback: -```c -// Add parameter server to executor without callback -rc = rclc_executor_add_parameter_server(&executor, ¶m_server, NULL); -``` + *The maximum string size is controlled by the compilation time option `RCLC_PARAMETER_MAX_STRING_LENGTH`, default value is 50.* -## micro-ROS Humble +- Parameter constraints + Informative numeric constraints can be added to int and double parameters, returning this values on describe parameter requests: + - `from_value`: Start value for valid values, inclusive. + - `to_value`: End value for valid values, inclusive. + - `step`: Size of valid steps between the from and to bound. -### Initialization options + ```c + int64_t int_from = 0; + int64_t int_to = 20; + uint64_t int_step = 2; + rclc_add_parameter_constraint_integer(¶m_server, "param2", int_from, int_to, int_step); -- Custom options: + double double_from = -0.5; + double double_to = 0.5; + double double_step = 0.01; + rclc_add_parameter_constraint_double(¶m_server, "param3", double_from, double_to, double_step); + ``` - The following options can be configured: - - notify_changed_over_dds: Publish parameter events to other ROS 2 nodes as well. - - max_params: Maximum number of parameters allowed on the `rclc_parameter_server_t` object. - - allow_undeclared_parameters: Allows creation of parameters from external parameter clients. A new parameter will be created if a `set` operation is requested on a non-existing parameter. - - low_mem_mode: Reduces the memory used by the parameter server, functionality constrains are applied. + *This constrains will not be applied by the parameter server, leaving values filtering to the user callback.* +- Read-only parameters: + The new API offers a read-only flag. This flag blocks parameter changes from external clients, but allows changes on the server side: ```c - // Parameter server object - rclc_parameter_server_t param_server; - - // Initialize parameter server options - const rclc_parameter_options_t options = { - .notify_changed_over_dds = true, - .max_params = 4, - .allow_undeclared_parameters = true, - .low_mem_mode = false; }; - - // Initialize parameter server with configured options - rcl_ret_t rc = rclc_parameter_server_init_with_option(¶m_server, &node, &options); - - if (RCL_RET_OK != rc) { - ... // Handle error - return -1; - } + bool read_only = true; + rclc_set_parameter_read_only(¶m_server, "param3", read_only); ``` -- Low memory mode: - - This mode ports the parameter functionality to memory constrained devices. The following constrains are applied: - - Request size limited to one parameter on Set, Get, Get types and Describe services. - - List parameter request has no prefixes enabled nor depth. - - Parameter description strings not allowed, `rclc_add_parameter_description` is disabled. - - Memory benchmark results on `STM32F4` for 7 parameters with `RCLC_PARAMETER_MAX_STRING_LENGTH = 50` and `notify_changed_over_dds = true`: - - Full mode: 11736 B - - Low memory mode: 4160 B - -### Callback +## Callback When adding the parameter server to the executor, a callback could to be configured. This callback would then be executed on the following events: - Parameter value change: Internal and external parameter set on existing parameters. @@ -346,51 +293,14 @@ Configuration of the callback context: rc = rclc_executor_add_parameter_server_with_context(&executor, ¶m_server, on_parameter_changed, &context); ``` -### Add a parameter -Parameters can also be created by external clients if the `allow_undeclared_parameters` flag is set. -The client just needs to set a value on a non-existing parameter. Then this parameter will be created if the server has still capacity and the callback allows the operation. +## Cleaning up + +To destroy an initialized parameter server: -### Delete a parameter -Parameters can be deleted by both, the parameter server and external clients: ```c -rclc_delete_parameter(¶m_server, "param2"); +// Delete parameter server +rclc_parameter_server_fini(¶m_server, &node); ``` -*For external delete requests, the server callback will be executed, allowing the node to reject the operation.* - -### Parameters description - -- Parameter description - Adds a description of a parameter and its constrains, which will be returned on a describe parameter requests: - ```c - rclc_add_parameter_description(¶m_server, "param2", "Second parameter", "Only even numbers"); - ``` - - *The maximum string size is controlled by the compilation time option `RCLC_PARAMETER_MAX_STRING_LENGTH`, default value is 50.* - -- Parameter constraints - Informative numeric constraints can be added to int and double parameters, returning this values on describe parameter requests: - - `from_value`: Start value for valid values, inclusive. - - `to_value`: End value for valid values, inclusive. - - `step`: Size of valid steps between the from and to bound. - - ```c - int64_t int_from = 0; - int64_t int_to = 20; - uint64_t int_step = 2; - rclc_add_parameter_constraint_integer(¶m_server, "param2", int_from, int_to, int_step); - - double double_from = -0.5; - double double_to = 0.5; - double double_step = 0.01; - rclc_add_parameter_constraint_double(¶m_server, "param3", double_from, double_to, double_step); - ``` - - *This constrains will not be applied by the parameter server, leaving values filtering to the user callback.* +This will delete any automatically created infrastructure on the agent (if possible) and deallocate used memory on the parameter server side. -- Read-only parameters: - The new API offers a read-only flag. This flag blocks parameter changes from external clients, but allows changes on the server side: - ```c - bool read_only = true; - rclc_set_parameter_read_only(¶m_server, "param3", read_only); - ``` diff --git a/_docs/tutorials/programming_rcl_rclc/pub_sub/pub_sub.md b/_docs/tutorials/programming_rcl_rclc/pub_sub/pub_sub.md index ba0552336..833e9bc84 100644 --- a/_docs/tutorials/programming_rcl_rclc/pub_sub/pub_sub.md +++ b/_docs/tutorials/programming_rcl_rclc/pub_sub/pub_sub.md @@ -3,11 +3,11 @@ title: Publishers and subscribers permalink: /docs/tutorials/programming_rcl_rclc/pub_sub/ --- - + -ROS 2 publishers and subscribers are the basic communication mechanism between nodes using topics. Further information about ROS 2 publish–subscribe pattern can be found [here](https://docs.ros.org/en/foxy/Tutorials/Topics/Understanding-ROS2-Topics.html). +ROS 2 publishers and subscribers are the basic communication mechanism between nodes using topics. Further information about ROS 2 publish–subscribe pattern can be found [here](https://docs.ros.org/en/humble/Tutorials/Topics/Understanding-ROS2-Topics.html). -Ready to use code related to this concepts can be found in [`micro-ROS-demos/rclc/int32_publisher`](https://github.com/micro-ROS/micro-ROS-demos/blob/foxy/rclc/int32_publisher/main.c) and [`micro-ROS-demos/rclc/int32_subscriber`](https://github.com/micro-ROS/micro-ROS-demos/blob/foxy/rclc/int32_subscriber/main.c) folders. Fragments of code from this examples are used on this tutorial. +Ready to use code related to this concepts can be found in [`micro-ROS-demos/rclc/int32_publisher`](https://github.com/micro-ROS/micro-ROS-demos/blob/humble/rclc/int32_publisher/main.c) and [`micro-ROS-demos/rclc/int32_subscriber`](https://github.com/micro-ROS/micro-ROS-demos/blob/humble/rclc/int32_subscriber/main.c) folders. Fragments of code from this examples are used on this tutorial. - [Publisher](#publisher) - [Initialization](#initialization) diff --git a/_docs/tutorials/programming_rcl_rclc/qos/QoS.md b/_docs/tutorials/programming_rcl_rclc/qos/QoS.md index d5404d289..54875932e 100644 --- a/_docs/tutorials/programming_rcl_rclc/qos/QoS.md +++ b/_docs/tutorials/programming_rcl_rclc/qos/QoS.md @@ -3,7 +3,7 @@ title: Quality of service permalink: /docs/tutorials/programming_rcl_rclc/qos/ --- - + - [Reliable QoS](#reliable-qos) - [Best Effort](#best-effort) diff --git a/_docs/tutorials/programming_rcl_rclc/service/services.md b/_docs/tutorials/programming_rcl_rclc/service/services.md index f117354b9..065aad38b 100644 --- a/_docs/tutorials/programming_rcl_rclc/service/services.md +++ b/_docs/tutorials/programming_rcl_rclc/service/services.md @@ -3,11 +3,11 @@ title: Services permalink: /docs/tutorials/programming_rcl_rclc/service/ --- - + ROS 2 services are another communication mechanism between nodes. Services implement a client-server paradigm based on ROS 2 messages and types. Further information about ROS 2 services can be found [here](https://index.ros.org/doc/ros2/Tutorials/Services/Understanding-ROS2-Services/) -Ready to use code related to this concepts can be found in [`micro-ROS-demos/rclc/addtwoints_server`](https://github.com/micro-ROS/micro-ROS-demos/blob/foxy/rclc/addtwoints_server/main.c) and [`micro-ROS-demos/rclc/addtwoints_client`](https://github.com/micro-ROS/micro-ROS-demos/blob/foxy/rclc/addtwoints_client/main.c) folders. Fragments of code from this examples are used on this tutorial. +Ready to use code related to this concepts can be found in [`micro-ROS-demos/rclc/addtwoints_server`](https://github.com/micro-ROS/micro-ROS-demos/blob/humble/rclc/addtwoints_server/main.c) and [`micro-ROS-demos/rclc/addtwoints_client`](https://github.com/micro-ROS/micro-ROS-demos/blob/humble/rclc/addtwoints_client/main.c) folders. Fragments of code from this examples are used on this tutorial. - [Service server](#service-server) - [Initialization](#initialization) diff --git a/_includes/first_application_common/build_system.md b/_includes/first_application_common/build_system.md index 89317698b..60428b2d4 100644 --- a/_includes/first_application_common/build_system.md +++ b/_includes/first_application_common/build_system.md @@ -1,14 +1,14 @@ ## Installing ROS 2 and the micro-ROS build system -First of all, install **ROS 2 Foxy FitzRoy** on your Ubuntu 20.04 LTS computer. +First of all, install **ROS 2 Humble Hawksbill** on your Ubuntu 22.04 LTS computer. To do so from binaries, via Debian packages, follow the instructions detailed -[here](https://index.ros.org/doc/ros2/Installation/Foxy/Linux-Install-Debians/). +[here](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html). -***TIP:** Alternatively, you can use a docker container with a fresh ROS 2 Foxy installation. The one that serves +***TIP:** Alternatively, you can use a docker container with a fresh ROS 2 Humble installation. The one that serves the purpose is the container run by the command:* ```bash -docker run -it --net=host -v /dev:/dev --privileged ros:foxy +docker run -it --net=host -v /dev:/dev --privileged ros:humble ``` Once you have a ROS 2 installation in the computer, follow these steps to install the micro-ROS build system: diff --git a/_includes/thumper_demo b/_includes/thumper_demo index 72cebac26..03a246461 160000 --- a/_includes/thumper_demo +++ b/_includes/thumper_demo @@ -1 +1 @@ -Subproject commit 72cebac26e5ba951225d8e9d3d3cf2ffe436515a +Subproject commit 03a246461262071ed39931171ee60111d49092be diff --git a/_posts/2020-10-05-moveit.md b/_posts/2020-10-05-moveit.md index 08068be5e..5dacb7fef 100644 --- a/_posts/2020-10-05-moveit.md +++ b/_posts/2020-10-05-moveit.md @@ -9,7 +9,7 @@ We designed the demo in such a way that the MoveIt 2 manipulation and planificat With this demo we bring micro-ROS to a whole different level: thanks to MoveIt’s kinematic planification talent, an app running on a microcontroller is enabled to be integrated into complex algorithms and ROS 2 workflows. This allows all robots in micro-ROS’ ecosystem to perform actual ‘stunts’ of all types. -To run micro-ROS, we employ a [STM32L4 Development IoT kit](https://www.st.com/en/evaluation-tools/b-l475e-iot01a.ht) in combination with [Zephyr](https://zephyrproject.org/). The board offers several general-purpose I/O pins and peripherals to communicate its 32-bits microcontroller with the external world. It also includes many sensors. For this demo, we make use of a 6-DoF Inertial Measurement Unit (LSM6DSL), composed of an accelerometer and a gyroscope, and a 3-DoF magnetometer (LIS3MDL). The fusion of the measurements fetched by these sensors outputs the pose, or [quaternion attitude](https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation), of the board, providing its relative orientation with respect to a fixed reference frame. +To run micro-ROS, we employ a [STM32L4 Development IoT kit](https://www.st.com/en/evaluation-tools/b-l475e-iot01a.html) in combination with [Zephyr](https://zephyrproject.org/). The board offers several general-purpose I/O pins and peripherals to communicate its 32-bits microcontroller with the external world. It also includes many sensors. For this demo, we make use of a 6-DoF Inertial Measurement Unit (LSM6DSL), composed of an accelerometer and a gyroscope, and a 3-DoF magnetometer (LIS3MDL). The fusion of the measurements fetched by these sensors outputs the pose, or [quaternion attitude](https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation), of the board, providing its relative orientation with respect to a fixed reference frame. The pose data is then forwarded to the ROS world, where it is consumed by both Rviz and MoveIt. The former uses it directly to represent the position and orientation of the board in its graphical interface, while MoveIt uses it to calculate the movement that the virtual arm has to perform to "touch" it, according to its kinematic algorithms for motion planning. The resulting movement is then integrated into Rviz and represented by means of its [virtual Panda robotic arm](https://github.com/ros-planning/panda_moveit_config), a standard tool employed by MoveIt in tutorials and graphic interfaces. Find the full video of the demo below: diff --git a/index.html b/index.html index f5a9036fe..0968c0621 100644 --- a/index.html +++ b/index.html @@ -129,8 +129,8 @@