Skip to content

Commit 9ffa7a7

Browse files
committed
Fixed bug in menu and improved layout of features page.
Signed-off-by: Ralph Lange <ralph.lange@de.bosch.com>
1 parent e5d57c9 commit 9ffa7a7

3 files changed

Lines changed: 40 additions & 49 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ _site
55
.bundle
66
vendor/bundle
77
Gemfile.lock
8-
8+
.vscode/

_data/docs.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
- title: Overview
22
docs:
3-
- overview
43
- overview/features
54
- overview/hardware
65
- overview/transports

_docs/overview/features/index.md

Lines changed: 39 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Features Overview
2+
title: Features and Architecture
33
permalink: /docs/overview/features/
44
redirect_from:
55
- /docs/
@@ -8,112 +8,104 @@ redirect_from:
88

99
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
1010
<script>
11+
function updateVisibilityOfFeatureDescriptions() {
12+
$('.feature').not('feature_is_active').find('.three_dots').css({ 'color': '#BBBBBB' });
13+
$('.feature').not('feature_is_active').find('.feature_description').slideUp(500);
14+
$('.feature_is_active').find('.three_dots').css({ 'color': 'white' });
15+
$('.feature_is_active').find('.feature_description').slideDown(500);
16+
}
17+
1118
$(document).ready( function() {
1219
$('.feature_description').hide();
20+
updateVisibilityOfFeatureDescriptions();
21+
1322
$('.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);
23+
if ($(this).hasClass("feature_is_active")) {
24+
$(this).removeClass("feature_is_active");
2025
} else {
21-
featureDescription.prev('.feature_teaser').slideToggle(0);
22-
featureDescription.slideToggle(500);
26+
$('.feature').removeClass("feature_is_active");
27+
$(this).addClass("feature_is_active");
2328
}
29+
updateVisibilityOfFeatureDescriptions();
2430
});
2531
});
2632
</script>
2733

2834
<style>
29-
.feature_teaser {
30-
color: #AAAAAA;
31-
margin-left: 1.6em;
35+
.feature_title {
36+
font-weight: bold;
37+
margin: 0 0 2pt 0;
3238
}
3339
.feature_description {
3440
text-align: justify;
3541
margin-left: 1.6em;
3642
}
37-
.feature_teaser ~ p {
38-
margin: 0 0 5pt 0;
39-
}
4043
.feature_description ~ p {
41-
margin: 0 0 5pt 0;
44+
margin: 0 0 2pt 0;
4245
}
4346
</style>
4447

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>
48+
Micro-ROS offers **seven key features** that make it ready for use in your microcontroller-based robotic project:
49+
50+
<div class="feature feature_is_active">
51+
<div class="feature_title">&#9745; Microcontroller-optimized client API supporting all major ROS concepts<span class="three_dots"> (...)</span></div>
5052
<div class="feature_description">
5153
<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>
5254
<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>
5355
</div>
5456
</div>
5557

5658
<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>
59+
<p class="feature_title">&#9745; Seamless integration with ROS 2<span class="three_dots"> (...)</span></p>
6160
<div class="feature_description">
6261
<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>
6362
</div>
6463
</div>
6564

6665
<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>
66+
<p class="feature_title">&#9745; Multi-RTOS support with generic build system<span class="three_dots"> (...)</span></p>
7167
<div class="feature_description">
7268
<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>
7369
<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>
7470
</div>
7571
</div>
7672

7773
<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>
74+
<p class="feature_title">&#9745; Extremely resource-constrained but flexible middleware<span class="three_dots"> (...)</span></p>
8275
<div class="feature_description">
8376
<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>
8477
<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>
8578
</div>
8679
</div>
8780

8881
<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>
82+
<p class="feature_title">&#9745; Permissive license<span class="three_dots"> (...)</span></p>
9383
<div class="feature_description">
9484
<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>
9585
<p>When creating a project with an underlying RTOS, please take into account the license(s) of the RTOS project or vendor.</p>
9686
</div>
9787
</div>
9888

9989
<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>
90+
<p class="feature_title">&#9745; Vibrant community and ecosystem<span class="three_dots"> (...)</span></p>
10491
<div class="feature_description">
10592
<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>
10693
<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>
10794
</div>
10895
</div>
10996

11097
<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>
98+
<p class="feature_title">&#9745; Long-term maintainability and interoperability<span class="three_dots"> (...)</span></p>
11599
<div class="feature_description">
116100
<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>
101+
<p>Furthermore, by the [System-Of-Systems Synthesizer](https://soss.docs.eprosima.com/) (SOSS), a fast and lightweight <a href="https://www.omg.org/spec/DDS-XTypes">OMG DDS-XTYPES standard</a> 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 <a href="https://www.fiware.org/">FIWARE Context Broker</a> by the NGSIv2 (Next Generation Service Interface) standard by leveraging the integration capabilities of the SOSS core.</p>
118102
</div>
119-
</div>
103+
</div>
104+
105+
## Layered and Modular Architecture
106+
107+
Micro-ROS follows the [ROS 2 architecture](https://index.ros.org/doc/ros2/) and makes use of its middleware pluggability to use [DDS-XRCE](https://www.omg.org/spec/DDS-XRCE/), which is optimized for microcontrollers. Moreover, it uses POSIX-based RTOS (NuttX) instead of Linux.
108+
109+
<img src="/img/micro-ROS_architecture.png" style="display: block; margin: auto; width: 100%; max-width: 500px;"/>
110+
111+
Dark blue components are developed specifically for micro-ROS. Light blue components are taken from the standard ROS 2 stack. We seek to contribute as much code back to the ROS 2 mainline codebase as possible.

0 commit comments

Comments
 (0)