Inquiring the robot operating system community on the state of adoption of the ROS 2 robotics middleware
International Journal of Intelligent Robotics and Applications
https://doi.org/10.1007/s41315-024-00393-4
REGULAR PAPER
Inquiring the robot operating system community on the state
of adoption of the ROS 2 robotics middleware
David Portugal1 · Rui P. Rocha1 · João P. Castilho1
Received: 10 November 2023 / Accepted: 30 September 2024
© The Author(s) 2024
Abstract
The robot operating system (ROS) is a well-established and popular open-source robotics middleware used for rapid
prototyping of robotic applications. However, ROS has several known weaknesses, such as lack of support for real-time
systems and limitations in fully distributed deployments with multiple robots. To address these weaknesses, ROS underwent a
major update and the first version of ROS 2 was released back in 2015, being lingeringly adopted by the community in recent
years. Yet, long-term support for ROS 1 will come to an end on May 2025. As such, it is more important than ever to analyze
and explore the features of ROS 2, and understand its technological readiness. This work focuses on the state of adoption
of ROS 2. Specifically, the article presents a user experience questionnaire targeting the ROS community to understand
the more eminent needs with respect to ROS 2, determine the current levels of adoption, and identify what is holding the
community back from migrating their ROS 1 applications to ROS 2. Results with more than 100 participants from around
the world show that the community is aware of ROS 2 and the middleware is addressing most user expectations. We unveil
the main reasons given for not migrating to ROS 2, further understand the community’s views on ROS 2, and identify what
is missing to anticipate ROS 1 users migrating to ROS 2 and make ROS 2 widely adopted. Moreover, we gather important
impressions on the appropriateness of ROS 2 for multi-robot system use cases.
Keywords Robotics middleware · Robot operating system (ROS) · ROS 2 adoption · User experience questionnaire ·
Transition from ROS 1 to ROS 2
1 Introduction
Robotic systems are complex engineering systems, often
comprising several robots and computers. Each robot,
in turn, consists of many hardware components (sensors,
actuators, hardware controllers, and embedded computer)
and software modules. The robotic systems and all components that make up a single robot need to be integrated
in a seamless way to perform specific tasks, such as exploration and map building of unknown environments (Koide
* David Portugal
Rui P. Rocha
João P. Castilho
1
Department of Electrical and Computer Engineering,
Institute of Systems and Robotics, University of Coimbra,
3030‑390 Coimbra, Portugal
et al. 2021), autonomous navigation (Macenski et al. 2020),
human assistance in public buildings (Portugal et al. 2019),
health services (Lee and Thuraisingham 2012), and household (Tyree et al. 2022), assembling and manufacturing in
industry (D’Avella et al. 2023), plowing, seeding, spraying and harvesting in precision agriculture (Meshram et al.
2022), search and rescue (Rocha et al. 2013), environmental monitoring (Fernández-Montes et al. 2014), and many
more. As such, the need for middleware frameworks creating
an abstraction layer between robotic hardware devices and
high-level robot software components, which facilitate the
development and reuse of robotic software from the ground
up, has always been a preminent requirement in robotics,
both in academia and industry.
Several universities and research groups around the world
have worked for the past two decades on the creation of such
middleware solutions, such as GenoM (Fleury et al. 1997),
Miro (Enderle et al. 2001), OROCOS (Bruyninckx et al.
2001), CARMEN (Montemerlo et al. 2003), ORCA (Brooks
et al. 2007), Player (Gerkey et al. 2003), YARP (Metta et al.
Vol.:(0123456789)
D. Portugal et al.
2006), MOOS (Newman 2006), RoboComp (Manso et al.
2010), and ROS (Quigley et al. 2009). Some of these are
discontinued and others have small developers community.
Conversely, the Robot Operating System, ROS for short,
has a vibrant community behind it with more than 17k wiki
pages and 194k daily users in its official package repository1
as of July 2022,2 being by far the most relevant robotics middleware nowadays.
ROS (Quigley et al. 2009) was first introduced in 2007
by a team of engineers at Willow Garage who were working
at the time with the PR2 robot. ROS first challenge was
to tackle the immense difficulty robotics engineers and
researchers faced when having to implement code for
robotic applications. For instance, not only was it needed
for a developer to write a proper path planning algorithm,
one also had to write low-level drivers for sensor interfacing
(sometimes from scratch and “reinventing the wheel”), a
computer vision algorithm, and other features like perception
and reasoning. Thus, one had to spend time developing
components that had most likely been developed in the past
by other researchers.
With the growth of the ROS community, new use cases
have emerged to meet everyone’s needs. The new use cases
have focused on teams of multiple robots, support for
small embedded platforms, support for real-time control
directly in ROS, production quality following industry
standards, working on non-ideal networks where network
traffic must be carefully managed, and prescribed design
patterns for building and structuring systems, such as
life cycle management. As such, API changes have been
made to the code of ROS core and the first alpha version of
ROS 2 (Macenskiet al. 2022) was released on August 2015.
Two years later, the first official distribution of ROS 2 was
released on December 2017, named Ardent Apalone.
The latest version of ROS 1, Noetic, was released on
May 2020 and is set to be the last version of ROS 1 with
support ending on May 2025.3 Therefore, as the support
for ROS 1 is ending, there is a need to evaluate the current
state of ROS 2 and compare it with the widely used ROS 1.
This allows to identify which hurdles users have found in
the adoption of ROS 2, such as in migrating packages from
ROS 1 to ROS 2 and how to build new packages with ROS 2.
A clear indication of the end of support for ROS 1 is the
number of commits for ROS 1 and ROS 2. Recently, the
number of commits for ROS 1 distributions has been steadily
1
http://wiki.ros.org.
These numbers were extracted from the 2022 ROS Community
Metrics Report, accessed at http://download.ros.org/downloads/metri
cs/metrics-report-2022-07.pdf on 2023-03-07.
3
https://www.openrobotics.org/blog/2020/5/23/noetic-ninjemys-the-
last-official-ros-1-release, accessed on 2022-12-08.
2
decreasing, whereas the number of commits for ROS 2 has
exhibited an upward trend, having surpassed ROS 1 commits
since March 2021 (ROS Metrics 2022).
Despite the clear advantages of ROS 2 over ROS 1, the
adoption of the former is still low nowadays, especially
in academia. A ROS user experience questionnaire was
conducted in 2019 (Coleman et al. 2019) to (...truncated)