Skip to content

Commit 2de57cb

Browse files
committed
First draft of feature table.
1 parent e65b0f4 commit 2de57cb

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

_data/docs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
- title: Overview
22
docs:
33
- overview
4+
- overview/features
45
- overview/hardware
56
- overview/transports
67
- overview/comparison

_docs/overview/features/index.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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

Comments
 (0)