micro-ROS lands into ROS 2 Common Packages!

As of December 2020, great news was awaiting the embedded community circling around micro-ROS: several micro-ROS and Micro XRCE-DDS packages have been officially included in the ROS REP-2005, which includes all those ROS 2 packages that comply with the following:

  • Open source and connected to the ROS 2 project;
  • Broadly usable and evidently used by a non-trivial part of the community;
  • Actively maintained and following accepted software development processes;
  • At Quality Level 3 or better (as defined in REP-2004);
  • Maintained by an organization or at least two individuals;
  • Such that all of their ROS 2 dependencies also comply with the above.

The packages that are now part of this list are:

In addition, as of January 2021, the rclc packages implemented and maintained by the OFERA partner Bosch where also added, namely:

These packages are not micro-ROS specific, but most of their functionalities have been devised and developed with microcontrollers in mind. Together with the rcl, they implement a feature-complete ROS Client Library for the C programming providing executors, basic lifecycle support, and convenience functions for use of rcl types and typical client library features that are not provided by rcl itself. An interface for parameters is also WIP.

Next step? Achieving the highest possible Quality Level (QL) for our repos, according to the Package Quality Categories established in REP-2004, which classifies the ROS packages according to their quality or maturity within the ROS ecosystem.

Summing up, while only one year ago the micro-ROS solution was not stable nor mature enough for being part of the ROS 2 Common Packages nor for pursuing or even assessing a given QL, this last year’s work puts us perfectly on track to take these steps ahead, which in turn will result in a broader and productization-ready adoption of the small turtle!

11 Likes

@FraFin

Great work :+1:

These packages are not micro-ROS specific, but most of their functionalities have been devised and developed with microcontrollers in mind. Together with the rcl, they implement a feature-complete ROS Client Library for the C programming providing executors, basic lifecycle support, and convenience functions for use of rcl types and typical client library features that are not provided by rcl itself. An interface for parameters is also WIP.

quick question, related to ros2/micro-ROS application portability.

say, we develop the application on micro-ROS/rclc, these application can be built on top of ros2/rclc w/o any code change, am I understanding correct? i believe that is one of the use case for these interfaces.

then, the question is why rclc is under double maintenance? (the same thing goes to rcl)

maybe, this is just a temporary thing :question: … no pressure but i think it is important for application aspect.

thanks in advance :slightly_smiling_face:

Yes, @tomoyafujita, you’re absolutely right, this should be a temporary situation only. Currently, the ros2/rclc repo serves as the “master branch” (also for Bloom releases) and micro-ROS/rclc is used actively for development.

The situation with rcl (and rcutils) is slightly different as we are not maintainers of the original repos in the ros2 organization, but we plan to contribute the changes (mainly ifdefs to deactivate certain functionalities which are not available on an MCU) back to the original repos before the Galactic release.

2 Likes