You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _docs/overview/ROS_2_feature_comparison/index.md
+19-15Lines changed: 19 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,32 +14,36 @@ Comparison of micro-ROS features with ROS 2 features. The following list has bee
14
14
15
15
ROS 2 Feature | | Availability in micro-ROS
16
16
-- | -- | --
17
-
Transport and serialization over DDS| <spanclass="status_flag">✓</span> | Provided by [Micro XRCE-DDS](https://github.com/eProsima/Micro-XRCE-DDS)and compatible with standard DDS via XRCE agent on connected stronger microprocessor.
17
+
Transport and serialization over DDS-XRCE and DDS| <spanclass="status_flag">✓</span> | Available transports: UDP and Serial as provided 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 from Agent to standard DDS by [Fast-CDR](https://github.com/eProsima/Fast-CDR).
18
18
Support for multiple DDS implementations, chosen at runtime | <spanclass="status_flag">✓</span> | Support is possible in principle, but at compile-time only.
19
-
Common core client library that is wrapped by language-specific libraries | <spanclass="status_flag">✓</span> | Use of the client support library [rcl](https://github.com/ros2/rcl/) from ROS 2 as-is. The [rclc](https://github.com/micro-ROS/rclc) package provides convenience functions and an executor for use of rcl+rclc as client library for the C programming language.
19
+
Common core client library that is wrapped by language-specific libraries | <spanclass="status_flag">✓</span> | Use of the client support library [rcl](https://github.com/ros2/rcl/) from ROS 2 as-is. The [rclc](https://github.com/micro-ROS/rclc) package provides convenience functions and an executor for use of rcl+rclc as client library for the C programming language.*Roadmap: migrate all functionalities to the rclc, so as to make it a proper additional abraction layer on top of the rcl that serves as user's API.*
20
20
Publish/subscribe over topics | <spanclass="status_flag">✓</span> | Available, but only fixed-size message types supported to avoid dynamic memory allocations.
21
21
Clients and services | <spanclass="status_flag">✓</span> | Available, but only fixed-size message types supported to avoid dynamic memory allocations.
22
-
ROS 1 -- ROS 2 communication bridge | <spanclass="status_flag">–</span> | Not applicable, standard ROS 1 -- ROS 2 bridge can be used via micro-ROS Agent on a stronger microprocessor to communicate with micro-ROS nodes.
Parameters | <spanclass="status_flag">✓</span> | *To be implemented soon in rclc.*
22
+
ROS 1 -- ROS 2 communication bridge | <spanclass="status_flag">✓</span> | Standard ROS 1 -- ROS 2 bridge or [SOSS-mediate bridge](https://soss.docs.eprosima.com/en/latest/getting_started.html#example-ros1-ros2-communication)can be used via micro-ROS Agent to communicate with micro-ROS nodes.
23
+
Actions | <spanclass="status_flag">○</span> | *To be implemented soon in rclc.*
24
+
Parameters | <spanclass="status_flag">○</span> | *To be implemented soon in rclc.*
25
25
Node Graph | <spanclass="status_flag">✓</span> | Available as in ROS 2.
26
-
Discovery | <spanclass="status_flag">✓</span> | Available as in ROS 2.
27
-
Quality of service settings for handling non-ideal networks | <spanclass="status_flag">✓</span> | Two QoS semantics, reliable and best-effort semantics, are provided and can be set at compile-time.
28
-
Inter- and intra-process communication using the same API | <spanclass="status_flag">✓</span> | No shared-memory interprocess communication on the MCU available, but all communication is performed via the micro-ROS-Agent running on a connected microprocessor. *Efficient shared-memory communication on the MCU is considered as an important feature for future releases.*
26
+
Discovery | <spanclass="status_flag">✓</span> | Discovery between entities available as in ROS 2. Further discovery mechanism available for the Clients to discover Agents on the network.
27
+
Quality of service settings for handling non-ideal networks | <spanclass="status_flag">✓</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/).
28
+
Inter- and intra-process communication using the same API | <spanclass="status_flag">✓</span> | No shared-memory interprocess communication on the MCU available, but all communication is performed via the micro-ROS-Agent running on a connected microprocessor. Possibility to leverage multi-thread functionalities (if any) offered by RTOS. *Efficient shared-memory communication on the MCU is considered as an important feature for future releases.*
29
29
Composition of node components at compile-, link- or dlopen-time | <spanclass="status_flag">✓</span> | Composition at compile-time only. Composition at runtime would depend highly on the RTOS.
30
30
Support for nodes with managed lifecycles | <spanclass="status_flag">✓</span> | The [rclc_lifecycle](https://github.com/micro-ROS/rclc/blob/master/rclc_lifecycle/) package provides an `rclc_lifecycle_node` type which bundles an rcl node with the lifecycle state machine as well as corresponding convenience functions.
31
-
DDS-Security support | <spanclass="status_flag">✓</span> | DDS security is supported at micro-ROS-Agent. *Security mechanisms in Micro XRCE-DDS are planned for future releases.*
32
-
Command-line introspection tools using an extensible framework | <spanclass="status_flag">✓</span> | From a remote microprocessor all standard ROS 2 tools can be used to introspect the micro-ROS nodes on an MCU. Micro-ROS nodes appear as ROS 2 nodes (by the micro-ROS-Agent).
31
+
DDS-Security support | <spanclass="status_flag">✓</span> | Security is not yet supported in the communication process between the Client and the Agent. However, the micro-ROSAgent 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.*
32
+
Command-line introspection tools using an extensible framework | <spanclass="status_flag">✓</span> | Thanks to graph support, from a remote microprocessor running a micro-ROS node all standard ROS 2 tools can be used to introspect the topology of the ROS 2 dataspace via the Agent. At the same time, standard ROS 2 nodes can fetch information regarding the micro-ROS entities present on the network.
33
33
Launch system for coordinating multiple nodes | <spanclass="status_flag">✓</span> | No launch system for the micro-ROS nodes on an MCU available. Such a system would depend highly on the RTOS. The system-modes concept developed with micro-ROS allows runtime configuration/orchestration of ROS 2 and micro-ROS nodes together.
34
34
Namespace support for nodes and topics | <spanclass="status_flag">✓</span> | Available as in ROS 2.
35
35
Static remapping of ROS names | <spanclass="status_flag">✓</span> | *Should be available if passed as argument via standard rcl API -- to be checked.*
36
36
Demos of an all-ROS 2 mobile robot | <spanclass="status_flag">✓</span> | Demos of several ROS 2 + micro-ROS robots available. See [https://micro-ros.github.io/docs/tutorials/demos/](https://micro-ros.github.io/docs/tutorials/demos/).
37
-
Support for real-time code | <spanclass="status_flag">✓</span> | The [rclc Executor](https://github.com/micro-ROS/rclc/tree/master/rclc) provides mechanisms for implementing real-time-critical applications with micro-ROS.
38
-
Support for "bare-metal" microcontrollers | <spanclass="status_flag">✓</span> | Bringing ROS 2 onto MCUs is all that micro-ROS is about. A crucial difference to this requirement from the early design phase of ROS 2 is that micro-ROS assumes an RTOS (e.g., [FreeRTOS](https://www.freertos.org/), [Zephyr](https://www.zephyrproject.org/), or [NuttX](http://nuttx.apache.org/)).
39
-
IDL | <spanclass="status_flag">✓</span> | Same message IDL as with ROS 2, but use of resource-optimized CDR serialization implementation named [Micro-CDR](https://github.com/eProsima/Micro-CDR).
40
-
Build system | <spanclass="status_flag">✓</span> | Build systems of NuttX, FreeRTOS, and Zephyr are integrated with colcon. Furthermore, micro-ROS is provided as a component for ESP-IDF also as a standalone Zephyr module. The build system is likely the most fragile part of micro-ROS w.r.t. the long-term maintenance, due to the many dependencies.
37
+
Support for real-time code | <spanclass="status_flag">✓</span> | Real-time behaviour is key to micro-ROS typical usages. The [rclc Executor](https://github.com/micro-ROS/rclc/tree/master/rclc) provides mechanisms for implementing real-time-critical applications. At lower levels, the Micro XRCE-DDS library exhibits real-timeness and determinism in that it's dynamic memory free and by provideing functions to perform tasks within well-defined periods of time.
38
+
Support for "bare-metal" microcontrollers | <spanclass="status_flag">✓</span> | Bringing ROS 2 onto MCUs is all that micro-ROS is about. The standard approach to micro-ROS assumes an RTOS underneath (e.g., [FreeRTOS](https://www.freertos.org/), [Zephyr](https://www.zephyrproject.org/), or [NuttX](http://nuttx.apache.org/)). Recent developments aim at loosening this requirement, and integration into [Arduino IDE](https://github.com/micro-ROS/micro_ros_arduino) is a first step towards true micro-ROS bare-metal support.
39
+
IDL | <spanclass="status_flag">✓</span> | micro-ROS supports the same IDL types as ROS 2. Generation of C code as handled by the Client IDLs 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).
40
+
Build system | <spanclass="status_flag">✓</span> | micro-ROS provides two ways of building a micro-ROS application. The first uses the [micro_ros_setup](https://github.com/micro-ROS/micro_ros_setup) tool integrated in a ROS 2 workspace. With this approach, the build systems of NuttX, FreeRTOS, and Zephyr are integrated with colcon. The other provides micro-ROS as a component of external development frameworks (e.g., ESP-IDF and the Zephyr build system).
41
41
Continuous Integration | <spanclass="status_flag">✓</span> | Currently, the CI for micro-ROS is distributed to GitHub and Gitlab. *Until the end of 2020, all CI should be moved migrated completely to the new CI actions of GitHub.* Please note that those packages that are released for standard ROS 2 are also built and tested on [build.ros2.org](http://build.ros2.org/).
42
-
Documentation | <spanclass="status_flag">✓</span> | High-level documentation at [micro-ros.github.io](https://micro-ros.github.io/). For detailed information please consult the README.md files in the relevant micro-ROS repositories at [github.com/micro-ROS/](https://github.com/micro-ROS/).
42
+
Documentation | <spanclass="status_flag">✓</span> | High-level documentation at [micro-ros.github.io](https://micro-ros.github.io/). For detailed information please consult the README.md files in the relevant micro-ROS repositories at [github.com/micro-ROS/](https://github.com/micro-ROS/). For information on the middleware implementation, take a look at the [Micro XRCE-DDS documentation](https://micro-xrce-dds.docs.eprosima.com/en/latest/).
43
43
Logging | <spanclass="status_flag">✓</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 ...*
44
44
Support of rate and sleep with system clock | <spanclass="status_flag">✓</span> | rcl timers use POSIX API. Tested successfully on NuttX, but the resolution is very low. A higher resolution could be achieved with hardware timers -- which highly depends on the MCU and possibly the RTOS. *This feature requires further investigation.*
45
45
Support for simulation time | <spanclass="status_flag">✓</span> | *Might be supported out of the box, but needs to be checked.* We consider HIL setups with simulation time to be corner cases.
46
+
Peer-to-peer functionality | <spanclass="status_flag">○</span> | Prototypical peer-to-peer functionality implemented over boradcast. No QoS available for the moment. *Roadmap: improve prototype to achieve true point-to-point connection.*
47
+
Supported hardware | <spanclass="status_flag">✓</span> | micro-ROS officially supports four boards, For the moment, all based on the STM32 series from ST and on the ESP32 from Espressif. Find more info [here]https://micro-ros.github.io/docs/overview/hardware/). More ports have been carried out by users, check the [complete list](https://github.com/micro-ROS/micro_ros_setup#supported-platforms).
48
+
Supported Operating Systems | <spanclass="status_flag">✓</span> | micro-ROS is supported by the RTOSes FreeRTOS, Zephyr, NuttX, in addition to Linux and Windows.
49
+
Memory footprint | <spanclass="status_flag">✓</span> | A comprehensive profiling of the memory consumption of typical micro-ROS applications can be found [here](https://micro-ros.github.io/docs/concepts/memo_prof/).
0 commit comments