micro-ROS puts ROS2 onto microcontrollers, making them first class participants of the ROS 2 environment.
From the level of ROS onwards, we strive to re-use as much as possible from ROS 2, and be as compatible with it as possible. In some areas, we will probably do custom implementations optimized for resource use. This will definitely include TF, and maybe other areas such as scheduling. These optimized implementations may also be interesting for use with "normal" ROS2.
We'll update this README as we proceed. For now, you can check out our work on:
- Real-Time Operating System: https://github.com/microROS/NuttX
- Reference hardware: https://github.com/microROS/hardware
- Build infrastructure for embedded development using docker: https://github.com/microROS/docker
The micro-ROS architecture is a work in progress, and while we do have some ideas, for now, lets just say that it's modular and built from the following ingredients:
- A Real-Time Operating System (RTOS). This includes at least NuttX, and possibly others.
- An embedded communications middleware, at least micro-RTPS
- The ROS client library
A first approach (yet not final) of the architecture is represented below:
+-------------------------------------------------------------+
| embedded application layer |
+-------------------------------------------------------------+
| ROS client library |
+-------------------------------------------------------------+
| micro-ROS middleware interface |
+-------------------+---------------------+-------------------+
| middleware 1 | middleware 2 | middleware 3 |
| (micro-RTPS) | | |
+-------------------+---------------------+-------------------+
| Real-Time Operating System (RTOS) abstractions |
+------------------+------------------+-----------------------+
| RTOS 1 | RTOS 2 | RTOS 3 |
| (NuttX) | | |
+------------------+------------------+-----------------------+
| hardware |
+-------------------------------------------------------------+
(replace this by a clickable SVG in the future. The SVG should facilitate quick access to the different abstractions in micro-ROS)