Skip to content

Commit 8cec42d

Browse files
committed
Collapsible feature list.
Signed-off-by: Ralph Lange <ralph.lange@de.bosch.com>
1 parent 4396e6e commit 8cec42d

3 files changed

Lines changed: 146 additions & 87 deletions

File tree

_docs/overview/docker_ci_status/index.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,42 @@ permalink: /docs/overview/docker_ci_status/
1111
| micro-ros-agent | Image containing a pre-compiled micro-ROS-Agent, ready to use as standalone application | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-agent.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-agent/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-agent.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-agent/)[![Compare Images](https://images.microbadger.com/badges/image/microros/micro-ros-agent.svg)](https://microbadger.com/images/microros/micro-ros-agent)
1212
| micro-ros-demos | Contains precompiled micro-ROS-demos, ready to use to view micro-ROS funcionality | [![Docker Automated build](https://img.shields.io/docker/cloud/automated/microros/micro-ros-demos.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-demos/)[![Docker Build Status](https://img.shields.io/docker/cloud/build/microros/micro-ros-demos.svg?logo=docker)](https://hub.docker.com/r/microros/micro-ros-demos/)[![Compare Images](https://images.microbadger.com/badges/image/microros/micro-ros-demos.svg)](https://microbadger.com/images/microros/micro-ros-demos)
1313

14-
## Github Continuous Integration Test Status
14+
## CI Status for Tooling and Website
1515

1616
<!--Add future CI test-->
1717

1818
| Repository | Description | Status
1919
-|-|-:
2020
|[micro_ros_setup](https://github.com/micro-ROS/micro_ros_setup)| Micro-ROS tool to build and flash Micro-ROS to every supported platform.|[![GitHub Actions status](https://github.com/micro-ROS/micro_ros_setup/workflows/CI/badge.svg)](https://github.com/micro-ROS/micro_ros_setup/actions)
2121
|[micro-ROS.github.io](https://github.com/micro-ROS/micro-ROS.github.io)| Micro-ROS official webpage repository.|[![GitHub Actions status](https://github.com/micro-ROS/micro-ROS.github.io/workflows/CI/badge.svg)](https://github.com/micro-ROS/micro-ROS.github.io/actions)
22+
23+
## Source Code Repositories
24+
25+
Major repositories in order of the layers are:
26+
27+
* Applications:
28+
* Kobuki demo: [embedded robot driver](https://github.com/micro-ROS/nuttx_apps/tree/kobuki_rcl_port/examples/kobuki) and [remote ROS 2 software](https://github.com/micro-ROS/micro-ROS_kobuki_demo)
29+
* Client library:
30+
* Extensions to rcl, i.e. the ROS 2 C API: [rcl_executor](https://github.com/micro-ROS/rcl_executor), ...
31+
* Extensions for rclcpp: [system_modes](https://github.com/micro-ROS/system_modes/), [TF improvements](https://github.com/micro-ROS/geometry2), ...
32+
* Middleware:
33+
* eProsima's open-source implementation of DDS-XRCE: [Micro-XRCE-DDS](https://github.com/eProsima/Micro-XRCE-DDS)
34+
* RMW adapter for Micro-XRCE-DDS: [rmw-microxrcedds](https://github.com/micro-ROS/rmw-microxrcedds)
35+
* Type support for Micro-XRCE-DDS: [rosidl_typesupport_microxrcedds](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds)
36+
* Agent (bridge) to ROS 2: [micro-ROS-Agent](https://github.com/micro-ROS/micro-ROS-Agent)
37+
* RTOS:
38+
* Our [NuttX fork](https://github.com/micro-ROS/NuttX), but most additions were contributed back.
39+
* Example applications for NuttX directly are in [nuttx_apps](https://github.com/micro-ROS/nuttx_apps)
40+
41+
Most repositories can be found in GitHub's micro-ROS organization at [github.com/micro-ROS/](https://github.com/micro-ROS/).
42+
43+
### List of Repositories
44+
45+
| Name | Documentation | Release | CI | Issues |
46+
|:--------------------------------|:--------------|:--------|:---|:-------|
47+
| rmw-microxrcedds | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/rmw-microxrcedds/blob/master/README.md) | [![](https://img.shields.io/badge/ROS-crystal-brightgreen)](https://github.com/micro-ROS/rmw-microxrcedds/tree/release-crystal-20190312) | | [![](https://img.shields.io/github/issues/micro-ROS/rmw-microxrcedds)](https://github.com/micro-ROS/rmw-microxrcedds/issues) |
48+
| rosidl_typesupport_microxrcedds | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/blob/master/README.md) | [![](https://img.shields.io/badge/ROS-crystal-brightgreen)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/blob/release-crystal-20190312/README.md) | | [![](https://img.shields.io/github/issues/micro-ROS/rosidl_typesupport_microxrcedds)](https://github.com/micro-ROS/rosidl_typesupport_microxrcedds/issues) |
49+
| micro-ROS-Agent | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS-Agent/blob/master/README.md) | [![](https://img.shields.io/badge/ROS-crystal-brightgreen)](https://github.com/micro-ROS/micro-ROS-Agent/blob/release-crystal-20190312/README.md) | [![](http://build.ros2.org/buildStatus/icon?job=Cbin_uB64__micro-xrce-dds-agent__ubuntu_bionic_amd64__binary)](https://github.com/micro-ROS/micro-ROS-doc/blob/crystal/Installation/repos/agent_minimum.repos) | [![](https://img.shields.io/github/issues/micro-ROS/micro-ROS-Agent)](https://github.com/micro-ROS/micro-ROS-Agent/issues) |
50+
| Micro XRCE-DDS | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://micro-xrce-dds.readthedocs.io/en/latest/) | [![](https://img.shields.io/badge/ROS-crystal-brightgreen)](https://github.com/eProsima/Micro-XRCE-DDS/tree/v1.0.3) [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/eProsima/Micro-XRCE-DDS/tree/v1.1.0) | | [![](https://img.shields.io/github/issues/eProsima/Micro-XRCE-DDS.svg)](https://github.com/eProsima/Micro-XRCE-DDS/issues) |
51+
| system_modes | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/system_modes/blob/master/README.md) | [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/micro-ROS/system_modes/releases) [![](https://img.shields.io/badge/ROS-eloquent-brightgreen)](https://github.com/micro-ROS/system_modes/releases)[![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/micro-ROS/system_modes/releases) | [![Build Status](http://build.ros2.org/job/Dbin_uB64__system_modes__ubuntu_bionic_amd64__binary/badge/icon)](http://build.ros2.org/job/Dbin_uB64__system_modes__ubuntu_bionic_amd64__binary/) [![Build Status](http://build.ros2.org/job/Ebin_uB64__system_modes__ubuntu_bionic_amd64__binary/badge/icon)](http://build.ros2.org/job/Ebin_uB64__system_modes__ubuntu_bionic_amd64__binary/) [![Build Status](http://build.ros2.org/job/Fbin_uF64__system_modes__ubuntu_focal_amd64__binary/badge/icon)](http://build.ros2.org/job/Fbin_uF64__system_modes__ubuntu_focal_amd64__binary/) | [![](https://img.shields.io/github/issues/micro-ROS/system_modes.svg)](https://github.com/micro-ROS/system_modes/issues) |
52+
| rclc | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/ros2/rclc/blob/master/README.md) | [![](https://img.shields.io/badge/ROS-dashing-brightgreen)](https://github.com/ros2/rclc/releases) [![](https://img.shields.io/badge/ROS-eloquent-brightgreen)](https://github.com/ros2/rclc/releases)[![](https://img.shields.io/badge/ROS-foxy-brightgreen)](https://github.com/ros2/rclc/releases) | [![Build Status](http://build.ros2.org/job/Dbin_uB64__rclc__ubuntu_bionic_amd64__binary/badge/icon)](http://build.ros2.org/job/Dbin_uB64__rclc__ubuntu_bionic_amd64__binary/) [![Build Status](http://build.ros2.org/job/Ebin_uB64__rclc__ubuntu_bionic_amd64__binary/badge/icon)](http://build.ros2.org/job/Ebin_uB64__rclc__ubuntu_bionic_amd64__binary/) [![Build Status](http://build.ros2.org/job/Fbin_uF64__rclc__ubuntu_focal_amd64__binary/badge/icon)](http://build.ros2.org/job/Fbin_uF64__rclc__ubuntu_focal_amd64__binary/) | [![](https://img.shields.io/github/issues/ros2/rclc.svg)](https://github.com/ros2/rclc/issues) |

_docs/overview/features/index.md

Lines changed: 114 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,119 @@
11
---
22
title: Features Overview
33
permalink: /docs/overview/features/
4+
redirect_from:
5+
- /docs/
6+
- /docs/overview/
47
---
58

6-
TODO(ralph-lange): Add few introductory sentences and a nice graphics. Then make this the overview page.
7-
8-
9-
10-
### Microcontroller-optimized client API supporting all major ROS concepts
11-
12-
Micro-ROS brings all major core concepts such as nodes, publish/subscribe, client/service, node graph, lifecycle, etc. onto microcontrollers (MCU). The client API of micro-ROS (in the C programming language) is based on the standard ROS 2 Client Support Library (rcl) and a set of extensions and convenience functions (rclc).
13-
14-
The combination rcl+rclc is optimized for MCUs. After an initialization phase, it can be used without any dynamic memory allocations. The rclc package provides advanced execution mechanisms allowing implementing well-proven scheduling patterns from embedded systems engineering.
15-
16-
### Seamless integration with ROS 2
17-
18-
The micro-ROS agent connects micro-ROS nodes (i.e. components) on MCUs seamlessly with standard ROS 2 systems. This allows accessing micro-ROS nodes with the known ROS 2 tools and APIs just as normal ROS nodes.
19-
20-
### Multi-RTOS support with generic build system
21-
Micro-ROS supports three popular open-source real-time operating sytems (RTOS): FreeRTOS, Zephyr, and NuttX. It can be ported on any RTOS that comes with a POSIX interface.
22-
23-
The RTOS-specific build systems are integrated into few generic setup scripts, which are provided as a ROS 2 package. Therefore, ROS developers can use their usual command line tools. In addition, micro-ROS provides selected integrations with RTOS-specific tool chains (e.g., for ESP-IDF and Zephyr).
24-
25-
### Extremely resource-constrained but flexible middleware
26-
27-
Micro XRCE-DDS by eProsima meets all requirements for a middleware for deeply embedded systems. That is why micro-ROS has been one of the applications for this implementation of the new DDS for Extremely Resource Constrained Environments (XRCE) standard. For the integration with the ROS middleware interface (rmw) in the micro-ROS stack, static memory pools were introduced to avoid dynamic memory allocations at runtime.
28-
29-
The middleware comes with built-in support for serial transports, UDP over Ethernet, Wi-Fi, and 6LoWPAN, and Bluetooth. Furthermore, the Micro XRCE-DDS source code provides templates for implementing support for further transports.
30-
31-
### Permissive license
32-
33-
The micro-ROS stack, including the Micro XRCE-DDS middleware, comes under the same permissive license as ROS 2, which is Apache License 2.0. (When building projects with micro-ROS, please take into account the license(s) of the underlying RTOS.)
34-
35-
### Vibrant community and ecosystem
36-
37-
Micro-ROS is developed by a constantly growing, self-organized community backed by the Embedded Working Group, a formal ROS 2 Working Group. The community shares entry level tutorials, provides support via Slack and GitHub, and meets in public Working Group video-calls on a monthly basis. As a matter of course, commercial support is provided for the Micro XRCE-DDS by eProsima.
38-
39-
This community also create tools around micro-ROS. For example, to optimize micro-ROS-based applications to the MCU hardware, specific benchmarking tools have been developed. These allow checking memory usage, CPU time consumption and general performance.
40-
41-
### Long-term maintainability and interoperability
42-
43-
Micro-ROS is made up of well-established components: Famous open-source RTOSs, a standardized middleware, and the standard ROS 2 Client Support Library (rcl). In this way, the amount of micro-ROS-specific code was minimized for long-term maintainability. At the same time, the micro-ROS stack preserves the modularity of the standard ROS 2 stack. Micro-ROS can be used with a custom middleware layer - and thus standard - or a custom ROS client library.
44-
45-
Furthermore, by the [System-Of-Systems Synthesizer](https://soss.docs.eprosima.com/) (SOSS), a fast and lightweight [OMG DDS-XTYPES standard](https://www.omg.org/spec/DDS-XTypes) integration tool, further middleware protocols can be connected. For example, we have developed the SOSS-FIWARE and SOSS-ROS2 System-Handles, which connect ROS 2 and micro-ROS with the [FIWARE Context Broker](https://www.fiware.org/) by the NGSIv2 (Next Generation Service Interface) standard by leveraging the integration capabilities of the SOSS core.
9+
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
10+
<script>
11+
$(document).ready( function() {
12+
$('.feature_description').hide();
13+
$('.feature').click( function() {
14+
var featureDescription = $(this).children('.feature_description');
15+
if (featureDescription.is(":visible")) {
16+
featureDescription.slideToggle(500);
17+
setTimeout(function() {
18+
featureDescription.prev('.feature_teaser').slideToggle(0);
19+
}, 500);
20+
} else {
21+
featureDescription.prev('.feature_teaser').slideToggle(0);
22+
featureDescription.slideToggle(500);
23+
}
24+
});
25+
});
26+
</script>
27+
28+
<style>
29+
.feature_teaser {
30+
color: #AAAAAA;
31+
margin-left: 1.6em;
32+
}
33+
.feature_description {
34+
text-align: justify;
35+
margin-left: 1.6em;
36+
}
37+
.feature_teaser ~ p {
38+
margin: 0 0 5pt 0;
39+
}
40+
.feature_description ~ p {
41+
margin: 0 0 5pt 0;
42+
}
43+
</style>
44+
45+
<div class="feature">
46+
<h3 class="feature_name">&#9745; Microcontroller-optimized client API supporting all major ROS concepts</h3>
47+
<div class="feature_teaser">
48+
<p>Micro-ROS brings all major core concepts ...</p>
49+
</div>
50+
<div class="feature_description">
51+
<p>Micro-ROS brings all major core concepts such as nodes, publish/subscribe, client/service, node graph, lifecycle, etc. onto microcontrollers (MCU). The client API of micro-ROS (in the C programming language) is based on the standard ROS 2 Client Support Library (rcl) and a set of extensions and convenience functions (rclc).</p>
52+
<p>The combination rcl+rclc is optimized for MCUs. After an initialization phase, it can be used without any dynamic memory allocations. The rclc package provides advanced execution mechanisms allowing implementing well-proven scheduling patterns from embedded systems engineering.</p>
53+
</div>
54+
</div>
55+
56+
<div class="feature">
57+
<h3 class="feature_name">&#9745; Seamless integration with ROS 2</h3>
58+
<div class="feature_teaser">
59+
<p>The micro-ROS agent connects micro-ROS nodes ...</p>
60+
</div>
61+
<div class="feature_description">
62+
<p>The micro-ROS agent connects micro-ROS nodes (i.e. components) on MCUs seamlessly with standard ROS 2 systems. This allows accessing micro-ROS nodes with the known ROS 2 tools and APIs just as normal ROS nodes.</p>
63+
</div>
64+
</div>
65+
66+
<div class="feature">
67+
<h3 class="feature_name">&#9745; Multi-RTOS support with generic build system</h3>
68+
<div class="feature_teaser">
69+
<p>Micro-ROS supports three popular open-source ...</p>
70+
</div>
71+
<div class="feature_description">
72+
<p>Micro-ROS supports three popular open-source real-time operating sytems (RTOS): FreeRTOS, Zephyr, and NuttX. It can be ported on any RTOS that comes with a POSIX interface.</p>
73+
<p>The RTOS-specific build systems are integrated into few generic setup scripts, which are provided as a ROS 2 package. Therefore, ROS developers can use their usual command line tools. In addition, micro-ROS provides selected integrations with RTOS-specific tool chains (e.g., for ESP-IDF and Zephyr).</p>
74+
</div>
75+
</div>
76+
77+
<div class="feature">
78+
<h3 class="feature_name">&#9745; Extremely resource-constrained but flexible middleware</h3>
79+
<div class="feature_teaser">
80+
<p>Micro XRCE-DDS by eProsima meets all requirements ...</p>
81+
</div>
82+
<div class="feature_description">
83+
<p>Micro XRCE-DDS by eProsima meets all requirements for a middleware for deeply embedded systems. That is why micro-ROS has been one of the applications for this implementation of the new DDS for Extremely Resource Constrained Environments (XRCE) standard. For the integration with the ROS middleware interface (rmw) in the micro-ROS stack, static memory pools were introduced to avoid dynamic memory allocations at runtime.</p>
84+
<p>The middleware comes with built-in support for serial transports, UDP over Ethernet, Wi-Fi, and 6LoWPAN, and Bluetooth. Furthermore, the Micro XRCE-DDS source code provides templates for implementing support for further transports.</p>
85+
</div>
86+
</div>
87+
88+
<div class="feature">
89+
<h3 class="feature_name">&#9745; Permissive license</h3>
90+
<div class="feature_teaser">
91+
<p>Micro-ROS comes under the same permissive ...</p>
92+
</div>
93+
<div class="feature_description">
94+
<p>Micro-ROS comes under the same permissive license as ROS 2, which is Apache License 2.0. This applies to the micro-ROS client library, the middleware layer, and tools.</p>
95+
<p>When creating a project with an underlying RTOS, please take into account the license(s) of the RTOS project or vendor.</p>
96+
</div>
97+
</div>
98+
99+
<div class="feature">
100+
<h3 class="feature_name">&#9745; Vibrant community and ecosystem</h3>
101+
<div class="feature_teaser">
102+
<p>Micro-ROS is developed by a constantly growing ...</p>
103+
</div>
104+
<div class="feature_description">
105+
<p>Micro-ROS is developed by a constantly growing, self-organized community backed by the Embedded Working Group, a formal ROS 2 Working Group. The community shares entry level tutorials, provides support via Slack and GitHub, and meets in public Working Group video-calls on a monthly basis. As a matter of course, commercial support is provided for the Micro XRCE-DDS by eProsima.</p>
106+
<p>This community also create tools around micro-ROS. For example, to optimize micro-ROS-based applications to the MCU hardware, specific benchmarking tools have been developed. These allow checking memory usage, CPU time consumption and general performance.</p>
107+
</div>
108+
</div>
109+
110+
<div class="feature">
111+
<h3 class="feature_name">&#9745; Long-term maintainability and interoperability</h3>
112+
<div class="feature_teaser">
113+
<p>Micro-ROS is made up of well-established components ...</p>
114+
</div>
115+
<div class="feature_description">
116+
<p>Micro-ROS is made up of well-established components: Famous open-source RTOSs, a standardized middleware, and the standard ROS 2 Client Support Library (rcl). In this way, the amount of micro-ROS-specific code was minimized for long-term maintainability. At the same time, the micro-ROS stack preserves the modularity of the standard ROS 2 stack. Micro-ROS can be used with a custom middleware layer - and thus standard - or a custom ROS client library.</p>
117+
<p>Furthermore, by the [System-Of-Systems Synthesizer](https://soss.docs.eprosima.com/) (SOSS), a fast and lightweight [OMG DDS-XTYPES standard](https://www.omg.org/spec/DDS-XTypes) integration tool, further middleware protocols can be connected. For example, we have developed the SOSS-FIWARE and SOSS-ROS2 System-Handles, which connect ROS 2 and micro-ROS with the [FIWARE Context Broker](https://www.fiware.org/) by the NGSIv2 (Next Generation Service Interface) standard by leveraging the integration capabilities of the SOSS core.</p>
118+
</div>
119+
</div>

0 commit comments

Comments
 (0)