|
| 1 | +--- |
| 2 | +title: Features Status |
| 3 | +permalink: /docs/overview/features/ |
| 4 | +--- |
| 5 | + |
| 6 | +Status of micro-ROS features. The features list has been compiled from [https://index.ros.org/doc/ros2/Features/](https://index.ros.org/doc/ros2/Features/) and [https://index.ros.org/doc/ros2/Roadmap/](https://index.ros.org/doc/ros2/Roadmap/). |
| 7 | + |
| 8 | +Feature | Status |
| 9 | +-- | -- |
| 10 | +Discovery, transport and serialization over DDS | Implemented by XRCE-DDS. |
| 11 | +Support for multiple DDS implementations, chosen at runtime | Possible in principle at compile-time. So far there is only one XRCE-DDS implementation, namely Micro-DDS-XRCE. |
| 12 | +Common core client library that is wrapped by language-specific libraries | micro-ROS uses rcl from ROS 2, but provides convenience functions by rclc for use as a C API. rclcpp may be used on MCUs with sufficient RAM. |
| 13 | +Publish/subscribe over topics | Implemented, fixed-size message types only. |
| 14 | +Clients and services | Implemented, fixed-size message types only. |
| 15 | +Set/retrieve parameters | Implemented. No convenience functions yet. |
| 16 | +ROS 1 - ROS 2 communication bridge | N/A, possible via agent on microprocessor |
| 17 | +Quality of service settings for handling non-ideal networks | Reliable and best-effort semantics available to be set at compile time. WIP |
| 18 | +Inter- and intra-process communication using the same API | No shared-memory interprocess communication on the MCU but all communication is performed via the agent. We consider efficient shared-memory communication on the MCU as an important feature for the future. |
| 19 | +Composition of node components at compile-, link- or dlopen-time | Composition at compile-time. |
| 20 | +Support for nodes with managed lifecycles | tbd |
| 21 | +DDS-Security support | DDS security is supported in agent. Some simple security in XRCE is planned. |
| 22 | +Command-line introspection tools using an extensible framework | 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 agent), the node graph API is not available on the MCU. |
| 23 | +Launch system for coordinating multiple nodes | No launch system for the micro-ROS nodes on an MCU available (as this highly depends on the RTOS). System-modes concept developed in micro-ROS allows runtime configuration/orchestration of ROS 2 and micro-ROS nodes together. |
| 24 | +Namespace support for nodes and topics | Just as in ROS 2. |
| 25 | +Static remapping of ROS names | Should be available if passed as argument via standard rcl API - to be checked. |
| 26 | +Demos of an all-ROS 2 mobile robot | Demo of an all ROS 2 + micro-ROS mobile robot (link to video) |
| 27 | +Support for real-time code | micro-ROS offers rclc Executor which allows for deterministic, real-time guarantees. |
| 28 | +Support for “bare-metal” microcontrollers | Bringing ROS 2 onto microcontrollers is all that micro-ROS is about - but with the difference that micro-ROS assumes an RTOS. |
| 29 | + |
| 30 | +IDL | Same as with ROS 2, but own serialization named Micro CDR from XRCE-DDS standard |
| 31 | +Building - build system | Build system for NuttX and FreeRTOS integrated with colcon. Integration with Zephyr WIPThis is the most fragile/risky part of micro-ROS w.r.t. the long-term maintenance. If the build system breaks with future updates of rcl, colcon, NuttX, FreeRTOS, Zephyr, then developers may get frustrated very soon and prefer small hand-written solutions over micro-ROS. |
| 32 | +Building - CI | Currently distributed to GitHub and Gitlab.Until the end of 2020, all CI should be moved completely to GitHub, which offers CI actions since a few months. |
| 33 | +Documentation | High-level documentation at micro-ros.github.io |
| 34 | +Logging | Might 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 ... |
| 35 | +Time-related: Support of rate and sleep with system clock | rcl timers use POSIX API. Tested successfully on NuttX, but resolution is very low. Higher resolution could be achieved with hardware timers - which highly depends on the MCU and possibly the RTOS. To be analyzed and implemented by at least one example. (Bosch) |
| 36 | +Time-related: Support for simulation time | Might be supported out of the box. To be checked ... We consider HIL setups with simulation time to be corner cases. |
| 37 | + |
0 commit comments