Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 14 additions & 16 deletions _data/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand All @@ -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

6 changes: 6 additions & 0 deletions _docs/concepts/build_system/external_build_systems/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <a href="https://www.st.com/content/st_com/en.html">STMicroelectronics</a>.

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.
8 changes: 4 additions & 4 deletions _docs/concepts/middleware/Micro_XRCE-DDS/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand All @@ -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/)
2 changes: 1 addition & 1 deletion _docs/overview/ROS_2_feature_comparison/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ ROS 2 Feature | | Availability in micro-ROS
-- | -- | --
Transport and serialization over DDS-XRCE and DDS| <span class="status_flag">&#10003;&#43;</span> | 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 | <span class="status_flag">&#10003;</span> | 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 | <span class="status_flag">&#10003;&#43;</span> | 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 | <span class="status_flag">&#10003;&#43;</span> | 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 | <span class="status_flag">&#10003;&#45;</span> | 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 | <span class="status_flag">&#10003;&#43;</span> | 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 | <span class="status_flag">&#8727;</span> | *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 ...*
Expand Down
129 changes: 129 additions & 0 deletions _docs/overview/ext_tools/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
title: Integration into External Tools
permalink: /docs/overview/ext_tools/
---

<style>
.extplatcontainer {
height: 300px;
display: flex;
flex-direction: row;
justify-content: flex-start;
flex-wrap: wrap;
}

.extplatitem_image {
width: 35%;
display: flex;
align-items: center;
justify-content: center;
}

.extplatitem_description {
width: 65%;
}

.extplatitem_image img {
max-width: 100%;
}
</style>

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**

<div class="extplatcontainer">
<div class="extplatitem_description">
<div>
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 <i>micro-ROS component for the ESP-IDF</i> 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 <a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/uart.html">Serial (UART)</a>,
<a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_wifi.html">WiFi</a>, and <a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/index.html#ethernet">Ethernet</a>.
<hr><b>Resources:</b>
<ul>
<li><a href="https://github.com/micro-ROS/micro_ros_espidf_component">micro-ROS component for ESP-IDF on GitHub</a></li>
<li><a href="https://github.com/espressif/esp-idf">ESP-IDF on GitHub</a></li>
<li><a href="https://docs.espressif.com/projects/esp-idf/en/latest/esp32/">ESP-IDF docs</a></li>
</ul>
</div>
</div>

<div class="extplatitem_image">
<img src="https://www.espressif.com/sites/all/themes/espressif/logo-black.svg">
</div>
</div>

### **micro-ROS module for the Zephyr build system**

<div class="extplatcontainer">
<div class="extplatitem_description">
<div>
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 <a href="https://docs.zephyrproject.org/latest/boards/index.html">large number of supported boards</a>.
The <i>micro-ROS module for Zephyr</i> allows to integrate the micro-ROS API and utilities in an existing Zephyr-based project just by cloning or copying a folder.
<hr><b>Resources:</b>
<ul>
<li><a href="https://github.com/micro-ROS/micro_ros_zephyr_module">micro-ROS module for Zephyr build system on GitHub</a></li>
<li><a href="https://github.com/zephyrproject-rtos/zephyr">Primary GitHub repository for the Zephyr Project</a></li>
<li><a href="https://github.com/zephyrproject-rtos/zephyr">Zephyr Project official webpage</a></li>
</ul>
</div>
</div>

<div class="extplatitem_image">
<img src="https://upload.wikimedia.org/wikipedia/commons/2/2d/Zephyr-logo.png">
</div>
</div>

### **micro-ROS for Arduino**

<div class="extplatcontainer">
<div class="extplatitem_description">
<div>
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 <i>micro-ROS for Arduino</i> support package is a special <i>bare-metal</i> port of micro-ROS provided as a set of precompiled libraries for specific platforms.
<hr><b>Resources:</b>
<ul>
<li><a href="https://github.com/micro-ROS/micro_ros_arduino">micro-ROS for Arduino on GitHub</a></li>
<li><a href="https://github.com/arduino/Arduino">Arduino IDE on GitHub</a></li>
<li><a href="https://github.com/arduino/arduino-cli">Arduino CLI on GitHub</a></li>
<li><a href="https://www.arduino.cc/">Arduino official website</a></li>
</ul>
</div>
</div>

<div class="extplatitem_image">
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Arduino_Logo.svg/720px-Arduino_Logo.svg.png" width="190">
</div>
</div>

### **micro-ROS for STM32CubeMX**


<div class="extplatcontainer">
<div class="extplatitem_description">
<div>
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.
<i>micro-ROS for STM32CubeMX</i> is based on a <a href="https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/blob/foxy/microros_component/Dockerfile">Dockerfile</a> and allows micro-ROS to be virtually supported by the full set of boards offered by <a href="https://www.st.com/content/st_com/en.html">STMicroelectronics</a>, in turn enabling the seamless integration of micro-ROS into any STM32 controller based project.
<hr><b>Resources:</b>
<ul>
<li><a href="https://github.com/micro-ROS/micro_ros_stm32cubemx_utils">micro-ROS for STM32CubeMX on GitHub</a></li>
<li><a href="https://www.st.com/content/st_com/en.html">STMicroelectronics official webpage</a></li>
<li><a href="https://github.com/STMicroelectronics/STM32Cube_MCU_Overall_Offer">STMicroelectronics official webpage</a></li>
</ul>
</div>
</div>

<div class="extplatitem_image">
<img src="https://www.pinclipart.com/picdir/big/453-4531945_read-more-stm32cubemx-logo-clipart.png" width="190">
</div>
</div>

{% include logos_disclaimer.md %}
Loading