Comparison to related approaches
Micro-ROS brings ROS 2 to microcontrollers. Here, we perform an analysis of the related approaches and eventually show a comparison table.
ROSSerial
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:
-
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.
-
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.
-
Examples and Use Cases.
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.
Reference: ROSserial Wiki
RIOT-ROS2
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.
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 RIOT-ROS2 project:
- ROS Client Library bindings: RCLC
- ROS Client Library: RCL
- ROS MiddleWare: rmw_ndn
- ROS IDL Generators: generator_c
- ROS IDL Type Support: CBOR
- ROS IDL Interfaces:
- common_interfaces
- rcl_interfaces
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.
Reference:RIOT-ROS2
Comparation table
rosserial | RIOT-ROS2 | micro-ROS | |
---|---|---|---|
OS | bare-metal | RIOT | NuttX, FreeRTOS and Zephyr |
Communications architecture | Bridged | N/A | Bridged |
Message format | ROS1 | N/A | CDR (from DDS) |
Communication links | UART | UART | UART, SPI, IP (UDP), 6LowPAN, … |
Communication protocol | Custom | NDN | XRCE-DDS (or any rmw implementation) |
Code Base | Independent implementation | Standard ROS 2 stack up to RCL | Standard ROS 2 stack up to RCL (RCLCPP coming) |
Node API | Custom rosserial API | RCL,RCLC | RCL (soon RCLCPP) |
Callback execution | Sequential, in order of messages | N/A | Choice of ROS 2 executors or MCU optimized executors |
Timers | Not included | Not included | Normal ROS 2 timers |
Time sync to host | Custom | N/A | NTP/PTP |
Lifecycle | Not supported | Partial | Partial, full coming |
- Previous
- Next