diff --git a/_data/docs.yml b/_data/docs.yml index 5638332d..85f4d623 100644 --- a/_data/docs.yml +++ b/_data/docs.yml @@ -3,13 +3,12 @@ - overview/features - overview/hardware - overview/rtos - - overview/transports + - overview/ext_tools - overview/comparison - overview/ROS_2_feature_comparison - overview/docker_ci_status - overview/users_and_clients - - title: Client Library docs: - concepts/client_library/introduction @@ -45,24 +44,31 @@ docs: - concepts/fiware_interoperability -- title: Core Tutorials +- title: First Steps Tutorials docs: - tutorials/core/overview - tutorials/core/first_application_linux - tutorials/core/first_application_rtos - tutorials/core/programming_rcl_rclc - - tutorials/core/microxrcedds_rmw_configuration - - tutorials/core/create_new_type - - tutorials/core/create_dds_entities_by_ref + - tutorials/core/zephyr_emulator - title: Advanced Tutorials docs: + - tutorials/advanced/microxrcedds_rmw_configuration + - tutorials/advanced/create_new_type + - tutorials/advanced/create_dds_entities_by_ref - tutorials/advanced/create_custom_transports - tutorials/advanced/create_custom_static_library - tutorials/advanced/benchmarking - tutorials/advanced/tracing - - tutorials/advanced/zephyr_emulator - - tutorials/advanced/microros_nuttx_bsp + +- title: Unmaintained Tutorials + docs: + - tutorials/old/microros_nuttx_bsp + - tutorials/old/nsh + - tutorials/old/6lowpan + - tutorials/old/debugging + - tutorials/old/add_microros_config - title: Demos docs: @@ -76,11 +82,3 @@ - tutorials/demos/thumper_demo - tutorials/demos/combined_demos - tutorials/demos/moveit2_demo - -- title: Nuttx-specific Tutorials - docs: - - tutorials/advanced/nuttx/nsh - - tutorials/advanced/nuttx/6lowpan - - tutorials/advanced/nuttx/debugging - - tutorials/advanced/nuttx/add_microros_config - diff --git a/_docs/concepts/build_system/external_build_systems/index.md b/_docs/concepts/build_system/external_build_systems/index.md index 3e576676..6983faee 100644 --- a/_docs/concepts/build_system/external_build_systems/index.md +++ b/_docs/concepts/build_system/external_build_systems/index.md @@ -22,3 +22,9 @@ The procedure for configuring the built micro-ROS library is based in `colcon.me The [micro-ROS for Arduino](https://github.com/micro-ROS/micro_ros_arduino) support package is a special port of micro-ROS provided as a set of precompiled libraries for specific platforms. The main reason for this approach is that Arduino does not allow the build of a complex library such as micro-ROS, so by using this approach a ready-to-use solution is provided to the Arduino users. Along with this support package, there are [detailed instructions](https://github.com/micro-ROS/micro_ros_arduino#how-to-build-the-precompiled-library) for rebuilding the micro-ROS for Arduino libraries for users that need to tune the default configuration. + +## micro-ROS for STM32CubeMX + +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/micro_ros_stm32cubemx_utils/blob/foxy/microros_component/Dockerfile) which eases micro-ROS library generation outside of a ROS 2 environment. diff --git a/_docs/concepts/middleware/Micro_XRCE-DDS/index.md b/_docs/concepts/middleware/Micro_XRCE-DDS/index.md index 3094252e..2d2988c6 100644 --- a/_docs/concepts/middleware/Micro_XRCE-DDS/index.md +++ b/_docs/concepts/middleware/Micro_XRCE-DDS/index.md @@ -44,7 +44,7 @@ These definitions allow to create a version of the library according to the appl For incorporating the desired configuration, it is necessary to run the `cmake` command every time the definitions change. For more information on how to configure micro-ROS by opportunely tuning parameters either in the Micro XRCE-DDS library -orin its rmw implementation [`rmw_microxrcedds`](https://github.com/micro-ROS/rmw-microxrcedds), consult this [tutorial](/docs/tutorials/core/microxrcedds_rmw_configuration/) and the `rmw_microxrcedds` [README](https://github.com/micro-ROS/rmw-microxrcedds#rmw-micro-xrce-dds-implementation). +orin its rmw implementation [`rmw_microxrcedds`](https://github.com/micro-ROS/rmw-microxrcedds), consult this [tutorial](/docs/tutorials/advanced/microxrcedds_rmw_configuration/) and the `rmw_microxrcedds` [README](https://github.com/micro-ROS/rmw-microxrcedds#rmw-micro-xrce-dds-implementation). ### Multi-Transport Support @@ -76,7 +76,7 @@ Additionally, using references will also reduce the memory consumption of the Cl This is because the reference approach allows avoiding to build the parts of the code where XMLs are stored. Notice that this mechanism is inherited by micro-ROS which, as a consequence, will be able to leverage the same full set of QoS as ROS 2. -For a comprehensive review on how to use custom QoS in micro-ROS, please visit this [dedicated page](/docs/tutorials/core/create_dds_entities_by_ref/) in the tutorials section. +For a comprehensive review on how to use custom QoS in micro-ROS, please visit this [dedicated page](/docs/tutorials/advanced/create_dds_entities_by_ref/) in the tutorials section. ## Other links @@ -87,5 +87,5 @@ For a comprehensive review on how to use custom QoS in micro-ROS, please visit t * [XRCE Agent on GitHub](https://github.com/eProsima/Micro-XRCE-DDS-Agent) * [rmw_microxrcedds on GitHub](https://github.com/micro-ROS/rmw-microxrcedds) * [Micro XRCE-DDS memory profiling](/docs/concepts/middleware/memo_prof/) -* [Middleware optimization tutorial](/docs/tutorials/core/microxrcedds_rmw_configuration/). -* [How to use custom QoS in micro-ROS](/docs/tutorials/core/create_dds_entities_by_ref/) +* [Middleware optimization tutorial](/docs/tutorials/advanced/microxrcedds_rmw_configuration/). +* [How to use custom QoS in micro-ROS](/docs/tutorials/advanced/create_dds_entities_by_ref/) diff --git a/_docs/overview/ROS_2_feature_comparison/index.md b/_docs/overview/ROS_2_feature_comparison/index.md index 5adea33c..dd975a9e 100644 --- a/_docs/overview/ROS_2_feature_comparison/index.md +++ b/_docs/overview/ROS_2_feature_comparison/index.md @@ -45,7 +45,7 @@ ROS 2 Feature | | Availability in micro-ROS -- | -- | -- Transport and serialization over DDS-XRCE and DDS| ✓+ | Available transports: UDP, serial (UART) and custom as enabled by [Micro XRCE-DDS](https://github.com/eProsima/Micro-XRCE-DDS). Serialization between Client and Agent provided by [Micro-CDR](https://github.com/eProsima/Micro-CDR) and between Agent to standard DDS by [Fast-CDR](https://github.com/eProsima/Fast-CDR). Support for multiple DDS implementations, chosen at runtime | | Support via the Micro XRCE-DDS Agent is possible in principle, but at compile-time only. -Quality of service settings for handling non-ideal networks | ✓+ | For communication over the DDS-XRCE wire protocol, two QoS semantics, reliable and best-effort, are provided and can be set at compile-time. As for communication with the ROS 2 dataspace, micro-ROS entities can benefit from the whole set of QoS allowed by DDS when created [by Reference](https://micro-ros.github.io/docs/tutorials/core/create_dds_entities_by_ref/). +Quality of service settings for handling non-ideal networks | ✓+ | For communication over the DDS-XRCE wire protocol, two QoS semantics, reliable and best-effort, are provided and can be set at compile-time. As for communication with the ROS 2 dataspace, micro-ROS entities can benefit from the whole set of QoS allowed by DDS when created [by Reference](/docs/tutorials/advanced/create_dds_entities_by_ref/). DDS-Security support | ✓- | Security is not yet supported in the communication process between the Client and the Agent. However, the micro-ROS Agent can benefit from Fast DDS security capabilities during the creation of DDS entities. *Roadmap: Implementation of security mechanisms in Micro XRCE-DDS are planned for future releases.* IDL | ✓+ | micro-ROS supports the same IDL types as ROS 2. Generation of C code from IDLs as handled by the Client is performed by the [Micro-XRCE-DDS-Gen](https://github.com/eProsima/Micro-XRCE-DDS-Gen) library, whereas generation of the C++ types handled by the Agent is handled by [Fast-DDS-Gen](https://github.com/eProsima/Fast-DDS-Gen). Logging | | *Could be available as part of the standard logging mechanism in principle but not supported by Micro-XRCE-DDS due to dynamic message size. To be checked ...* diff --git a/_docs/overview/ext_tools/index.md b/_docs/overview/ext_tools/index.md new file mode 100644 index 00000000..26da8ada --- /dev/null +++ b/_docs/overview/ext_tools/index.md @@ -0,0 +1,129 @@ +--- +title: Integration into External Tools +permalink: /docs/overview/ext_tools/ +--- + + + +micro-ROS aims to **bring ROS 2 to microcontrollers** to allow having first-class ROS 2 entities in the embedded world. + +One of the approaches offered by micro-ROS to build an application for embedded platforms consists in a [ROS-specific build system](https://github.com/micro-ROS/micro_ros_setup) comprising modules which integrate the software for cross-compiling said apps on the supported plaforms, both hardware and firmware-wise. A different approach consists in generating standalone modules and components allowing to integrate micro-ROS into external or custom development frameworks, made possible by a [tool dedicated to compiling micro-ROS as a standalone library](../../tutorials/advanced/create_custom_static_library). + +The configuration of the generated micro-ROS libraries is based on a `colcon.meta` file. + +The modules that exist up to date for integrating into external build systems are the following: + +### **micro-ROS component for the ESP-IDF** + +
+
+
+ ESP-IDF is the official development framework for the ESP32, ESP32-S and ESP32-C Series SoCs. + To date, it has been tested in ESP-IDF v4.1 and v4.2 with ESP32 and ESP32-S2. + The micro-ROS component for the ESP-IDF allows the user to integrate the micro-ROS API and utilities in an already created ESP-IDF project just by cloning or copying a folder. + The current ports support Serial (UART), + WiFi, and Ethernet. +
Resources: + +
+
+ +
+ +
+
+ +### **micro-ROS module for the Zephyr build system** + +
+
+
+ Zephyr is a scalable RTOS built with security in mind, and based on a small-footprint kernel designed for use on resource-constrained systems. + The Zephyr kernel supports multiple hardware architectures, including ARM Cortex-M, Intel x86, ARC, Nios II, Tensilica Xtensa, and RISC-V, and can count with large number of supported boards. + The micro-ROS module for Zephyr allows to integrate the micro-ROS API and utilities in an existing Zephyr-based project just by cloning or copying a folder. +
Resources: + +
+
+ +
+ +
+
+ +### **micro-ROS for Arduino** + +
+
+
+ Arduino is an open-source platform based on an I/O board and a development environment that implements the Processing/Wiring language, intended to enable users to easily generate interactive projects. A CLI is also offered, which aims to be an all-in-one solution providing the tools needed to use any Arduino compatible platform from the command line. + The micro-ROS for Arduino support package is a special bare-metal port of micro-ROS provided as a set of precompiled libraries for specific platforms. +
Resources: + +
+
+ +
+ +
+
+ +### **micro-ROS for STM32CubeMX** + + +
+
+
+ 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. +
Resources: + +
+
+ +
+ +
+
+ +{% include logos_disclaimer.md %} diff --git a/_docs/overview/hardware/index.md b/_docs/overview/hardware/index.md index 9a8fcfa7..f716da51 100644 --- a/_docs/overview/hardware/index.md +++ b/_docs/overview/hardware/index.md @@ -5,7 +5,7 @@ permalink: /docs/overview/hardware/ Micro-ROS aims to **bring ROS 2 to a wide set of microcontrollers** to allow having first-class ROS 2 entities in the embedded world. -The main targets of micro-ROS are mid-range 32-bits microcontroller families. Usually, the minimum requirements for running micro-ROS in an embedded platform are memory constraints. Since memory usage in micro-ROS is a complex matter we provide a [complete article](https://micro-ros.github.io/docs/concepts/benchmarking/memo_prof/) describing it and a tutorial on [how to tune the memory consuption](https://micro-ros.github.io/docs/tutorials/core/microxrcedds_rmw_configuration/) in the micro-ROS middleware. +The main targets of micro-ROS are mid-range 32-bits microcontroller families. Usually, the minimum requirements for running micro-ROS in an embedded platform are memory constraints. Since memory usage in micro-ROS is a complex matter we provide a [complete article](/docs/concepts/benchmarking/benchmarking/) describing it and a tutorial on [how to tune the memory consuption](../../tutorials/advanced/microxrcedds_rmw_configuration/) in the micro-ROS middleware. -In general micro-ROS will need MCUs that have tens of kilobytes of RAM memory and communication peripherals that enable the micro-ROS [Client to Agent communication](https://micro-ros.github.io//docs/overview/features/). +In general micro-ROS will need MCUs that have tens of kilobytes of RAM memory and communication peripherals that enable the micro-ROS [Client to Agent communication](../features/). -The micro-ROS hardware support is divided into three categories: -- reference micro-ROS board, -- tier 2 boards and, -- community supported boards. +The micro-ROS hardware support is divided into two categories: +- Officially supported boards +- Community supported boards *In order to check the most recent hardware support visit the [micro_ros_setup repo](https://github.com/micro-ROS/micro_ros_setup)*. -## Reference micro-ROS board +## Officially supported boards -The micro-ROS reference boards are the ones officially supported for all RTOSes and with complete support for all available transports. - -
-
-

Olimex LTD STM32-E407

-
- Key features: -
    -
  • MCU: STM32F407ZGT6 Cortex-M4F
  • -
  • RAM: 196 kB
  • -
  • Flash: 1 MB
  • -
  • Peripherals: USB OTG, Ethernet, SD Card slot, SPI, CAN, I2C...
  • -
- - Resources: - -
-
- -
- -
-
- -## Tier 2 micro-ROS boards - -The micro-ROS Tier 2 boards are officially supported for one or more RTOSes and transports. +The officially supported boards are those which have been carried out or tested officially, and to which LTS is guaranteed.

Espressif ESP32 DevKitC

- Key features: + ✔ Key features:
  • MCU: ultra-low power dual-core Xtensa LX6
  • RAM: 520 kB
  • Flash: 4 MB
  • Peripherals: Ethernet MAC, Wi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR, BLE, SPI, I2C, I2S, UART, SDIO, CAN, GPIO, ADC/DAC, PWM
- Resources: + 🌎 Resources: + + ⚙ Supported platforms: + + 🔌 Supported transports: + UART, WiFi UDP, Ethernet UDP
@@ -99,70 +75,92 @@ The micro-ROS Tier 2 boards are officially supported for one or more RTOSes and
+
-

Teensy 3.2

+

Arduino Portenta H7

- Key features: + ✔ Key features:
    -
  • MCU: ARM Cortex-M4 MK20DX256VLH7
  • -
  • RAM: 64 kB
  • -
  • Flash: 256 kB
  • -
  • Peripherals: USB, SPI, I2C, CAN, I2S...
  • +
  • MCU: Dual-core Arm Cortex-M7 and Cortex-M4
  • +
  • RAM: 8 MB
  • +
  • Flash: 16 MB
  • +
  • Peripherals: USB HS, Ethernet, WiFi/BT...
- Resources: + 🌎 Resources: - This board is supported under micro-ROS for Arduino -
+ ⚙ Supported platforms: + + 🔌 Supported transports: + USB, WiFi UDP
+
- +
+
-

Teensy 4.0/4.1

+

Raspberry Pi Pico RP2040

- Key features: + ✔ Key features:
    -
  • MCU: ARM Cortex-M7 iMXRT1062
  • -
  • RAM: 1024 kB
  • -
  • Flash: 2048 kB
  • -
  • Peripherals: USB, PWM, SPI, I2C, CAN, I2S, SDIO,...
  • -
- Resources: +
  • MCU: Dual-core Arm Cortex-M0+
  • +
  • RAM: 264 kB
  • +
  • Flash: up to 16 MB
  • +
  • Peripherals: I2C, SPI, PIO...
  • + + 🌎 Resources: + ⚙ Supported platforms: + - This board is supported under micro-ROS for Arduino + 🔌 Supported transports: + USB, UART
    - +
    +

    ROBOTIS OpenCR 1.0

    - Key features: + ✔ Key features:
    • MCU: ARM Cortex-M7 STM32F746ZGT6
    • RAM: 320 kB
    • Flash: 1024 kB
    • Peripherals: 3-axis IMU, Dynamixel ports, SPI, I2C...
    - Resources: + 🌎 Resources: - This board is supported under micro-ROS for Arduino + ⚙ Supported platforms: +
      +
    • RTOSes:
    • +
    • External tools: Arduino
    • +
    + 🔌 Supported transports: + USB, UART
    @@ -171,46 +169,91 @@ The micro-ROS Tier 2 boards are officially supported for one or more RTOSes and
    +
    -

    STM32L4 Discovery kit IoT

    +

    Teensy 3.2

    - Key features: + ✔ Key features:
      -
    • MCU: ARM Cortex-M4 STM32L4
    • -
    • RAM: 128 kB
    • -
    • Flash: 1 MB
    • -
    • Peripherals: Bluetooth, low-power RF module, 802.11 b/g/n, NFC, 2 digital microphone, temperature/humidity sensor, 3 axis IMU, ToF sensor...
    • +
    • MCU: ARM Cortex-M4 MK20DX256VLH7
    • +
    • RAM: 64 kB
    • +
    • Flash: 256 kB
    • +
    • Peripherals: USB, SPI, I2C, CAN, I2S...
    - - Resources: + 🌎 Resources: +
  • Official website
  • + + ⚙ Supported platforms: +
      +
    • RTOSes:
    • +
    • External tools: Arduino
    • +
    + 🔌 Supported transports: + USB, UART
    - + +
    +
    + + +
    +
    +

    Teensy 4.0/4.1

    +
    + ✔ Key features: +
      +
    • MCU: ARM Cortex-M7 iMXRT1062
    • +
    • RAM: 1024 kB
    • +
    • Flash: 2048 kB
    • +
    • Peripherals: USB, PWM, SPI, I2C, CAN, I2S, SDIO,...
    • +
    + 🌎 Resources: + + ⚙ Supported platforms: +
      +
    • RTOSes:
    • +
    • External tools: Arduino
    • +
    + 🔌 Supported transports: + USB, UART +
    +
    + +
    +
    +

    Crazyflie 2.1 Drone

    - Key features: + ✔ Key features:
    • MCU: ARM Cortex-M4 STM32F405
    • RAM: 192 kB
    • Flash: 1 MB
    • Peripherals: 3 axis IMU, pressure sensor, SPI, I2C, UART, nRF51822 radio...
    - - Resources: + 🌎 Resources: + + ⚙ Supported platforms: +
      +
    • RTOSes: FreeRTOS
    • +
    • External tools:
    • +
    + 🔌 Supported transports: + Custom Radio Link
    @@ -219,52 +262,68 @@ The micro-ROS Tier 2 boards are officially supported for one or more RTOSes and
    +
    -

    Raspberry Pi Pico RP2040

    +

    STM32L4 Discovery kit IoT

    - Key features: + ✔ Key features:
      -
    • MCU: Dual-core Arm Cortex-M0+
    • -
    • RAM: 264 kB
    • -
    • Flash: up to 16 MB
    • -
    • Peripherals: I2C, SPI, PIO...
    • +
    • MCU: ARM Cortex-M4 STM32L4
    • +
    • RAM: 128 kB
    • +
    • Flash: 1 MB
    • +
    • Peripherals: Bluetooth, low-power RF module, 802.11 b/g/n, NFC, 2 digital microphone, temperature/humidity sensor, 3 axis IMU, ToF sensor...
    - - Resources: + 🌎 Resources: +
  • Official website
  • + + ⚙ Supported platforms: + + 🔌 Supported transports: + USB, UART, Ethernet UDP
    - +
    +
    -

    Arduino Portenta H7

    +

    Olimex LTD STM32-E407

    - Key features: + ✔ Key features:
      -
    • MCU: Dual-core Arm Cortex-M7 and Cortex-M4
    • -
    • RAM: 8 MB
    • -
    • Flash: 16 MB
    • -
    • Peripherals: USB HS, Ethernet, WiFi/BT...
    • +
    • MCU: STM32F407ZGT6 Cortex-M4F
    • +
    • RAM: 196 kB
    • +
    • Flash: 1 MB
    • +
    • Peripherals: USB OTG, Ethernet, SD Card slot, SPI, CAN, I2C...
    - - Resources: + 🌎 Resources: +
  • Official website
  • +
  • Schematics
  • +
  • User Manual
  • + + ⚙ Supported platforms: + + 🔌 Supported transports: + USB (Z, N), UART (Z, F, N), Ethernet UDP (F, N) +
    Note: Only RTOS initials used for convenience.
    - +
    @@ -276,17 +335,23 @@ The micro-ROS community supported boards are contributions of micro-ROS' users a

    Arduino Due

    - Key features: + ✔ Key features: - Resources: + 🌎 Resources: - This board is supported under micro-ROS for Arduino + ⚙ Supported platforms: + + 🔌 Supported transports: + USB, UART
    @@ -299,17 +364,23 @@ The micro-ROS community supported boards are contributions of micro-ROS' users a

    Arduino Zero

    - Key features: + ✔ Key features: - Resources: + 🌎 Resources: - This board is supported under micro-ROS for Arduino + ⚙ Supported platforms: + + 🔌 Supported transports: + USB, UART
    @@ -322,10 +393,17 @@ The micro-ROS community supported boards are contributions of micro-ROS' users a

    ST NUCLEO-F446ZE

    - Resources: + 🌎 Resources: + + ⚙ Supported platforms: + + 🔌 Supported transports: + UART
    @@ -338,10 +416,17 @@ The micro-ROS community supported boards are contributions of micro-ROS' users a

    ST NUCLEO-F746ZG

    - Resources: + 🌎 Resources: + + ⚙ Supported platforms: + + 🔌 Supported transports: + UART
    @@ -354,10 +439,17 @@ The micro-ROS community supported boards are contributions of micro-ROS' users a

    ST NUCLEO-H743ZI

    - Resources: + 🌎 Resources: + + ⚙ Supported platforms: + + 🔌 Supported transports: + UART
    diff --git a/_docs/overview/transports/index.md b/_docs/overview/transports/index.md deleted file mode 100644 index 662be3a1..00000000 --- a/_docs/overview/transports/index.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Transports and Data Links -permalink: /docs/overview/transports/ ---- - -micro-ROS uses the resource-optimized [DDS for Extremely Resource Constrained Environments (DDS-XRCE) standard](https://www.omg.org/spec/DDS-XRCE/), implemented by [eProsima's Micro-XRCE-DDS](https://github.com/eProsima/Micro-XRCE-DDS/). - -It supports a variety of data link and transport protocols. However, the support depends on the underlying RTOS and selected hardware. - -The following table specifies the available transports for the Reference and Tier-2 micro-ROS boards for each officially supported RTOS. You can find detailed information about hardware support [here](/docs/overview/hardware/). - -| | [**NuttX**](http://nuttx.apache.org/) | [**FreeRTOS**](https://www.freertos.org/) | [**Zephyr**](https://www.zephyrproject.org/) | [Arduino](https://github.com/micro-ROS/micro_ros_arduino) | -| ------------------ | :-----------------------------------: | :---------------------------------------: | :------------------------------------------: | :---------------------------------------------------------------------: | -| Olimex STM32-E407 | USB, UART, Network | UART, Network | USB, UART | - | -| ST B-L475E-IOT01A | - | - | USB, UART, Network | - | -| Crazyflie 2.1 | - | Custom Radio Link | - | - | -| Espressif ESP32 | - | UART, WiFI UDP | - | - | -| Teensy 3.2 | - | - | - | USB, UART | -| Teensy 4.0/4.1 | - | - | - | USB, UART | -| ROBOTIS OpenCR 1.0 | - | - | - | USB, UART | - -Regarding the **community supported** boards, at the moment of writing the available transports are: - -| | [**NuttX**](http://nuttx.apache.org/) | [**FreeRTOS**](https://www.freertos.org/) | [**Zephyr**](https://www.zephyrproject.org/) | [Arduino](https://github.com/micro-ROS/micro_ros_arduino) | -| ---------------- | :-----------------------------------: | :---------------------------------------: | :------------------------------------------: | :---------------------------------------------------------------------: | -| Arduino Due | - | - | - | USB, UART | -| Arduino Zero | - | - | - | USB, UART | -| ST Nucleo F446ZE | - | UART | - | - | -| ST Nucleo H743ZI | - | UART | - | - | -| ST Nucleo F746ZG | - | UART | - | - | diff --git a/_docs/overview/users_and_clients/index.md b/_docs/overview/users_and_clients/index.md index d78da74c..530ae810 100644 --- a/_docs/overview/users_and_clients/index.md +++ b/_docs/overview/users_and_clients/index.md @@ -73,6 +73,10 @@ 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 + 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/core/create_dds_entities_by_ref/index.md b/_docs/tutorials/advanced/create_dds_entities_by_ref/index.md similarity index 96% rename from _docs/tutorials/core/create_dds_entities_by_ref/index.md rename to _docs/tutorials/advanced/create_dds_entities_by_ref/index.md index 4d7491cb..8a0ab588 100644 --- a/_docs/tutorials/core/create_dds_entities_by_ref/index.md +++ b/_docs/tutorials/advanced/create_dds_entities_by_ref/index.md @@ -1,6 +1,6 @@ --- title: How to use custom QoS in micro-ROS -permalink: /docs/tutorials/core/create_dds_entities_by_ref/ +permalink: /docs/tutorials/advanced/create_dds_entities_by_ref/ --- @@ -86,7 +86,7 @@ Inside this `app-colcon.meta` file we can set application specific CMake options } ``` -Of course you can combine these configurations with others, e.g. the ones described in the [Middleware Configuration](https://micro-ros.github.io/docs/tutorials/core/microxrcedds_rmw_configuration/) tutorial. +Of course you can combine these configurations with others, e.g. the ones described in the [Middleware Configuration](/docs/tutorials/advanced/microxrcedds_rmw_configuration/) tutorial. Once you have this parameter, write your micro-ROS application using RCLC default convenience functions. Just remember that now you are not providing the topic name but a "QoS reference label": diff --git a/_docs/tutorials/core/create_new_type/index.md b/_docs/tutorials/advanced/create_new_type/index.md similarity index 88% rename from _docs/tutorials/core/create_new_type/index.md rename to _docs/tutorials/advanced/create_new_type/index.md index c8d17068..94774a10 100644 --- a/_docs/tutorials/core/create_new_type/index.md +++ b/_docs/tutorials/advanced/create_new_type/index.md @@ -1,9 +1,9 @@ --- title: How to create a new micro-ROS message type -permalink: /docs/tutorials/core/create_new_type/ +permalink: /docs/tutorials/advanced/create_new_type/ --- -This tutorial starts in a previously created micro-ROS environment. Check [**First micro-ROS application on an RTOS**](../first_application_rtos/) for instructions about how to create a micro-ROS environment for embedded platforms. +This tutorial starts in a previously created micro-ROS environment. Check [**First micro-ROS application on an RTOS**](../../core/first_application_rtos/) for instructions about how to create a micro-ROS environment for embedded platforms. Once your micro-ROS workspace is created, go to `firmware/mcu_ws` and run the package creating command: @@ -55,7 +55,7 @@ int64 int64_test uint64 uint64_test ``` -Now, you can build your micro-ROS workspace as usual. As explained in [**First micro-ROS application on an RTOS**](../first_application_rtos/), the `ros2 run micro_ros_setup build_firmware.sh` command will build all packages located inside `mcu_ws`. +Now, you can build your micro-ROS workspace as usual. As explained in [**First micro-ROS application on an RTOS**](../../core/first_application_rtos/), the `ros2 run micro_ros_setup build_firmware.sh` command will build all packages located inside `mcu_ws`. In your micro-ROS application code, you can use your new message type as usual: diff --git a/_docs/tutorials/core/microxrcedds_rmw_configuration/imgs/best_effort_stream.svg b/_docs/tutorials/advanced/microxrcedds_rmw_configuration/imgs/best_effort_stream.svg similarity index 100% rename from _docs/tutorials/core/microxrcedds_rmw_configuration/imgs/best_effort_stream.svg rename to _docs/tutorials/advanced/microxrcedds_rmw_configuration/imgs/best_effort_stream.svg diff --git a/_docs/tutorials/core/microxrcedds_rmw_configuration/imgs/micro_ros_memory.svg b/_docs/tutorials/advanced/microxrcedds_rmw_configuration/imgs/micro_ros_memory.svg similarity index 100% rename from _docs/tutorials/core/microxrcedds_rmw_configuration/imgs/micro_ros_memory.svg rename to _docs/tutorials/advanced/microxrcedds_rmw_configuration/imgs/micro_ros_memory.svg diff --git a/_docs/tutorials/core/microxrcedds_rmw_configuration/imgs/reliable_strea.svg b/_docs/tutorials/advanced/microxrcedds_rmw_configuration/imgs/reliable_strea.svg similarity index 100% rename from _docs/tutorials/core/microxrcedds_rmw_configuration/imgs/reliable_strea.svg rename to _docs/tutorials/advanced/microxrcedds_rmw_configuration/imgs/reliable_strea.svg diff --git a/_docs/tutorials/core/microxrcedds_rmw_configuration/index.md b/_docs/tutorials/advanced/microxrcedds_rmw_configuration/index.md similarity index 99% rename from _docs/tutorials/core/microxrcedds_rmw_configuration/index.md rename to _docs/tutorials/advanced/microxrcedds_rmw_configuration/index.md index a1d08be3..72665429 100644 --- a/_docs/tutorials/core/microxrcedds_rmw_configuration/index.md +++ b/_docs/tutorials/advanced/microxrcedds_rmw_configuration/index.md @@ -1,6 +1,6 @@ --- title: Middleware Configuration -permalink: /docs/tutorials/core/microxrcedds_rmw_configuration/ +permalink: /docs/tutorials/advanced/microxrcedds_rmw_configuration/ --- micro-ROS targets microcontroller, devices with low memory resources. diff --git a/_docs/tutorials/core/first_application_linux/index.md b/_docs/tutorials/core/first_application_linux/index.md index 7a527e16..8a573f0b 100644 --- a/_docs/tutorials/core/first_application_linux/index.md +++ b/_docs/tutorials/core/first_application_linux/index.md @@ -8,7 +8,7 @@ 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/), you'll learn how to build and bring this application on a microcontroller running the RTOS NuttX, FreeRTOS, or Zephyr. -Finally, in the tutorial [*Zephyr Emulator*](/docs/tutorials/advanced/zephyr_emulator/) you'll learn how to test +Finally, in the tutorial [*Zephyr Emulator*](/docs/tutorials/core/zephyr_emulator/) you'll learn how to test a micro-ROS application on a Zephyr emulator. {% include first_application_common/build_system.md %} diff --git a/_docs/tutorials/core/first_application_rtos/freertos.md b/_docs/tutorials/core/first_application_rtos/freertos.md index b5fa8042..b3ec516c 100644 --- a/_docs/tutorials/core/first_application_rtos/freertos.md +++ b/_docs/tutorials/core/first_application_rtos/freertos.md @@ -28,7 +28,7 @@ Each app is represented by a folder containing the following files: * `app.c`: This file contains the logic of the application. * `app-colcon.meta`: This file contains the micro-ROS app specific colcon configuration. Detailed info on how to configure the RMW via this file can be found - [here](https://micro-ros.github.io/docs/tutorials/core/microxrcedds_rmw_configuration/). + [here](/docs/tutorials/advanced/microxrcedds_rmw_configuration/). For the user to create its custom application, a folder `` will need to be registered in this location, containing the two files just described. diff --git a/_docs/tutorials/core/overview/index.md b/_docs/tutorials/core/overview/index.md index 616fd308..032012be 100644 --- a/_docs/tutorials/core/overview/index.md +++ b/_docs/tutorials/core/overview/index.md @@ -22,6 +22,6 @@ If you are new to micro-ROS, we strongly suggest that you take the tutorials in You'll learn the concepts of the micro-ROS C API in this tutorial in depth. If you are already familiar with the ROS 2 C++ API or even the underlying ROS Client Support Library (rcl), you'll learn this very quickly. -* [**Optimizing the Middleware Configuration**](../microxrcedds_rmw_configuration/) +* [**Optimizing the Middleware Configuration**](../../advanced/microxrcedds_rmw_configuration/) In this tutorial, we'll guide you through the configuration of the middleware between a microcontroller and the micro-ROS agent running on some Linux-based microprocessor, to optimize it for your specific use-case an application. diff --git a/_docs/tutorials/advanced/zephyr_emulator/imgs/4.jpg b/_docs/tutorials/core/zephyr_emulator/imgs/4.jpg similarity index 100% rename from _docs/tutorials/advanced/zephyr_emulator/imgs/4.jpg rename to _docs/tutorials/core/zephyr_emulator/imgs/4.jpg diff --git a/_docs/tutorials/advanced/zephyr_emulator/index.md b/_docs/tutorials/core/zephyr_emulator/index.md similarity index 98% rename from _docs/tutorials/advanced/zephyr_emulator/index.md rename to _docs/tutorials/core/zephyr_emulator/index.md index 3fb94ce3..f2823c5f 100644 --- a/_docs/tutorials/advanced/zephyr_emulator/index.md +++ b/_docs/tutorials/core/zephyr_emulator/index.md @@ -1,6 +1,6 @@ --- title: Zephyr Emulator -permalink: /docs/tutorials/advanced/zephyr_emulator/ +permalink: /docs/tutorials/core/zephyr_emulator/ --- ## Target platform diff --git a/_docs/tutorials/advanced/nuttx/6lowpan/index.md b/_docs/tutorials/old/6lowpan/index.md similarity index 99% rename from _docs/tutorials/advanced/nuttx/6lowpan/index.md rename to _docs/tutorials/old/6lowpan/index.md index 160d6eda..c15af474 100644 --- a/_docs/tutorials/advanced/nuttx/6lowpan/index.md +++ b/_docs/tutorials/old/6lowpan/index.md @@ -1,6 +1,6 @@ --- title: 6LoWPAN Guide -permalink: /docs/tutorials/advanced/nuttx/6lowpan/ +permalink: /docs/tutorials/old/6lowpan/ --- **Disclaimer: this tutorial is currently unmantained** diff --git a/_docs/tutorials/advanced/nuttx/add_microros_config/images/nuttx_menuconfig.png b/_docs/tutorials/old/add_microros_config/images/nuttx_menuconfig.png similarity index 100% rename from _docs/tutorials/advanced/nuttx/add_microros_config/images/nuttx_menuconfig.png rename to _docs/tutorials/old/add_microros_config/images/nuttx_menuconfig.png diff --git a/_docs/tutorials/advanced/nuttx/add_microros_config/index.md b/_docs/tutorials/old/add_microros_config/index.md similarity index 98% rename from _docs/tutorials/advanced/nuttx/add_microros_config/index.md rename to _docs/tutorials/old/add_microros_config/index.md index 10c78e98..50cdecc9 100644 --- a/_docs/tutorials/advanced/nuttx/add_microros_config/index.md +++ b/_docs/tutorials/old/add_microros_config/index.md @@ -1,6 +1,6 @@ --- title: Micro-ROS configuration for NuttX -permalink: /docs/tutorials/advanced/nuttx/add_microros_config/ +permalink: /docs/tutorials/old/add_microros_config/ --- **Disclaimer: this tutorial is currently unmantained** diff --git a/_docs/tutorials/advanced/nuttx/debugging/index.md b/_docs/tutorials/old/debugging/index.md similarity index 99% rename from _docs/tutorials/advanced/nuttx/debugging/index.md rename to _docs/tutorials/old/debugging/index.md index e717f8bc..c5e82392 100644 --- a/_docs/tutorials/advanced/nuttx/debugging/index.md +++ b/_docs/tutorials/old/debugging/index.md @@ -1,6 +1,6 @@ --- title: Debugging a NuttX Application -permalink: /docs/tutorials/advanced/nuttx/debugging/ +permalink: /docs/tutorials/old/debugging/ author: Ingo Lütkebohle (merged by Tomasz Kołcon) --- diff --git a/_docs/tutorials/advanced/microros_nuttx_bsp/index.md b/_docs/tutorials/old/microros_nuttx_bsp/index.md similarity index 98% rename from _docs/tutorials/advanced/microros_nuttx_bsp/index.md rename to _docs/tutorials/old/microros_nuttx_bsp/index.md index e25549b1..68a6bcb3 100644 --- a/_docs/tutorials/advanced/microros_nuttx_bsp/index.md +++ b/_docs/tutorials/old/microros_nuttx_bsp/index.md @@ -1,6 +1,6 @@ --- title: Adding Micro-ROS to a NuttX board configuration -permalink: /docs/tutorials/advanced/microros_nuttx_bsp/ +permalink: /docs/tutorials/old/microros_nuttx_bsp/ --- # Introduction diff --git a/_docs/tutorials/advanced/nuttx/nsh/images/olimex_nsh_usb.jpg b/_docs/tutorials/old/nsh/images/olimex_nsh_usb.jpg similarity index 100% rename from _docs/tutorials/advanced/nuttx/nsh/images/olimex_nsh_usb.jpg rename to _docs/tutorials/old/nsh/images/olimex_nsh_usb.jpg diff --git a/_docs/tutorials/advanced/nuttx/nsh/images/olimex_uart.jpg b/_docs/tutorials/old/nsh/images/olimex_uart.jpg similarity index 100% rename from _docs/tutorials/advanced/nuttx/nsh/images/olimex_uart.jpg rename to _docs/tutorials/old/nsh/images/olimex_uart.jpg diff --git a/_docs/tutorials/advanced/nuttx/nsh/index.md b/_docs/tutorials/old/nsh/index.md similarity index 98% rename from _docs/tutorials/advanced/nuttx/nsh/index.md rename to _docs/tutorials/old/nsh/index.md index 6308e481..62f08497 100644 --- a/_docs/tutorials/advanced/nuttx/nsh/index.md +++ b/_docs/tutorials/old/nsh/index.md @@ -1,6 +1,6 @@ --- title: NSH console over UART & USB -permalink: /docs/tutorials/advanced/nuttx/nsh/ +permalink: /docs/tutorials/old/nsh/ --- **Disclaimer: this tutorial is currently unmantained** diff --git a/_includes/first_application_common/zephyr_common.md b/_includes/first_application_common/zephyr_common.md index 7a08f6df..71ece710 100644 --- a/_includes/first_application_common/zephyr_common.md +++ b/_includes/first_application_common/zephyr_common.md @@ -8,7 +8,7 @@ Each app is represented by a folder containing the following files: * `src/main.c`: This file contains the logic of the application. * `app-colcon.meta`: This file contains the micro-ROS app specific colcon configuration. Detailed info on how to configure the RMW via this file can be found - [here](https://micro-ros.github.io/docs/tutorials/core/microxrcedds_rmw_configuration/). + [here](/docs/tutorials/advanced/microxrcedds_rmw_configuration/). * `CMakeLists.txt`: This is the CMake file containing the script to compile the application. * `.conf`: This is a Zephyr specific and transport-dependent app configuration file. `` can be `serial`, `serial-usb` and `host-udp`. diff --git a/scripts/cibuild b/scripts/cibuild index 5a6cccdb..8f0a1faf 100755 --- a/scripts/cibuild +++ b/scripts/cibuild @@ -18,6 +18,7 @@ IGNORE_HREFS=${IGNORE_HREFS:+$IGNORE_HREFS,}$(ruby -e "puts %w{ vimeo.com omg.org twitter.com + ieeexplore.ieee.org ${ADDITIONS} }.map{|h| \"/#{h}/\"}.join(\",\")" )