Skip to content

Commit de4fed7

Browse files
Juan Flores MuñozFranFinralph-langepablogs9
authored andcommitted
#7994 Comparision to releated approaches. (#133)
* Rework different approach comparision * Update _docs/overview/comparison/index.md Co-Authored-By: FranFin <58737168+FranFin@users.noreply.github.com> * Update _docs/overview/comparison/index.md Co-Authored-By: FranFin <58737168+FranFin@users.noreply.github.com> * Update _docs/overview/comparison/index.md Co-Authored-By: FranFin <58737168+FranFin@users.noreply.github.com> * Update _docs/overview/comparison/index.md Co-Authored-By: FranFin <58737168+FranFin@users.noreply.github.com> * Update _docs/overview/comparison/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/overview/comparison/index.md Co-Authored-By: Pablo Garrido <pablogs9@gmail.com> * Update _docs/overview/comparison/index.md Co-Authored-By: Pablo Garrido <pablogs9@gmail.com> * Update _docs/overview/comparison/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/overview/comparison/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/overview/comparison/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/overview/comparison/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/overview/comparison/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> Co-authored-by: FranFin <58737168+FranFin@users.noreply.github.com> Co-authored-by: Ralph Lange <ralph-lange@users.noreply.github.com> Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
1 parent 840de00 commit de4fed7

1 file changed

Lines changed: 50 additions & 21 deletions

File tree

_docs/overview/comparison/index.md

Lines changed: 50 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,53 @@ title: Comparison to related approaches
33
permalink: /docs/overview/comparison/
44
---
55

6-
This page compares micro-ROS to a few alternative approaches putting ROS onto small embedded devices.
7-
8-
## micro-ROS compared to ROSSerial
9-
10-
In ROS1, small embedded devices are brought into the system using `rosserial`.
11-
12-
Differences are:
13-
14-
| | rosserial | micro-ROS |
15-
|-------|-----------|-----------|
16-
| OS | bare-metal | POSIX (currently NuttX) |
17-
| Communications architecture | Bridged | Bridged |
18-
| Message format | ROS1 | CDR (from DDS) |
19-
| Communication links | UART | UART, SPI, IP (UDP), 6LowPAN, ... |
20-
| Communication protocol | Custom | XRCE-DDS (or any rmw implementation) |
21-
| Code Base | Independent implementation | Standard ROS 2 stack up to RCL (RCLCPP coming) |
22-
| Node API | Custom rosserial API | RCL (soon RCLCPP) |
23-
| Callback execution | Sequential, in order of messages | Choice of ROS 2 executors or MCU optimized executors |
24-
| Timers | Not included | Normal ROS 2 timers |
25-
| Time sync to host | Custom | NTP/PTP |
26-
| Lifecycle | Not supported | Partial, full coming |
6+
7+
Micro-ROS brings ROS 2 to microcontrollers. Here, we perform an analysis of the related approaches and eventually show a comparison table.
8+
9+
## ROSSerial
10+
11+
ROSSerial is a protocol for wrapping standard ROS serialized messages and multiplexing multiple topics and services over a device such as a serial port or network socket. In addition to a protocol definition, there are three types of packages found in this suite:
12+
13+
- Client Libraries: Client libraries allow users to easily get ROS nodes up and running on various systems. These clients are ports of the general ANSI C++ rosserial_client library.
14+
15+
- ROS-side Interfaces: These packages provide a node for the host machine to bridge the connection from the rosserial protocol to the more general ROS network.
16+
17+
- Examples and Use Cases.
18+
19+
It is worth saying that this option cannot be fully compared with micro-ROS because this approach is meant to work with ROS 1, instead of micro-ROS which is focused on ROS 2.
20+
21+
Reference: [ROSserial Wiki](http://wiki.ros.org/rosserial)
22+
23+
## RIOT-ROS2
24+
25+
RIOT-ROS2 is a modification of the main ROS 2 stack, to make it able to run on microcontrollers thanks to the RIOT Operating System.
26+
27+
ROS 2 is composed of several layers. Some have been modified to be able to run on the microcontroller, this is a list of the available layers for RIOS-ROS2 project:
28+
- ROS Client Library bindings: RCLC
29+
- ROS Client Library: RCL
30+
- ROS MiddleWare: rmw_ndn
31+
- ROS IDL Generators: generator_c
32+
- ROS IDL Type Support: CBOR
33+
- ROS IDL Interfaces:
34+
- common_interfaces
35+
- rcl_interfaces
36+
37+
As a final data, it looks like the development is frozen. This consideration is due to the fact that the last commit goes back to [July 2018](https://github.com/astralien3000/riot-ros2/commits/master).
38+
39+
Reference:[RIOT-ROS2](https://github.com/astralien3000/riot-ros2/wiki)
40+
41+
## Comparation table
42+
43+
| | rosserial | RIOT-ROS2 | micro-ROS |
44+
|-------|-----------|-----------|-----------|
45+
| OS | bare-metal | RIOT | NuttX, FreeRTOS and Zephyr |
46+
| Communications architecture | Bridged | N/A| Bridged |
47+
| Message format | ROS1 | N/A |CDR (from DDS) |
48+
| Communication links | UART | UART | UART, SPI, IP (UDP), 6LowPAN, ... |
49+
| Communication protocol | Custom | NDN | XRCE-DDS (or any rmw implementation) |
50+
| Code Base | Independent implementation | Standard ROS 2 stack up to RCL | Standard ROS 2 stack up to RCL (RCLCPP coming) |
51+
| Node API | Custom rosserial API | RCL,RCLC | RCL (soon RCLCPP) |
52+
| Callback execution | Sequential, in order of messages | N/A | Choice of ROS 2 executors or MCU optimized executors |
53+
| Timers | Not included | Not included | Normal ROS 2 timers |
54+
| Time sync to host | Custom | N/A | NTP/PTP |
55+
| Lifecycle | Not supported | Partial | Partial, full coming |

0 commit comments

Comments
 (0)