G.A. van der Hoorn
Please Note
3 records found
1
ROBUST
221 bugs in the Robot Operating System
As robotic systems such as autonomous cars and delivery drones assume greater roles and responsibilities within society, the likelihood and impact of catastrophic software failure within those systems is increased. To aid researchers in the development of new methods to measure and assure the safety and quality of robotics software, we systematically curated a dataset of 221 bugs across 7 popular and diverse software systems implemented via the Robot Operating System (ROS). We produce historically accurate recreations of each of the 221 defective software versions in the form of Docker images, and use a grounded theory approach to examine and categorize their corresponding faults, failures, and fixes. Finally, we reflect on the implications of our findings and outline future research directions for the community.
Known attempts to build autonomous robots rely on complex control architectures, usually implemented with the Robot Operating System (ROS). Runtime adaptation is needed in these systems, to cope with component failures and with contingencies arising from dynamic environments–otherwise these affect the reliability and quality of the mission execution. Existing proposals on how to build self-adaptive systems in robotics usually require a major re-design of the control architecture and rely on complex tools unfamiliar to the robotics community. Moreover, they are hard to reuse across applications. This paper presents MROS: a model-based framework for runtime adaptation of robot control architectures based on ROS. MROS uses a combination of domain-specific languages to model architectural variants and capture mission quality concerns, and an ontology-based implementation of the MAPE-K and meta-control visions for runtime adaptation. The experiment results obtained applying MROS in two realistic ROS-based robotic demonstrators show the benefits of our approach in terms of the quality of the mission execution, and MROS's extensibility and reusability across robotic applications.
Reactive programming is an alternative to callback-based programming. This tutorial chapter first discusses the problems of asynchronous programming with callbacks and locks—the standard ROS 2 API—and then presents a way to overcome them using the reactive programming paradigm. We introduce RxROS: a new API for implementing ROS nodes, based on the paradigm of reactive programming. We demonstrate advantages on small code examples in a tutorial style using simple nodes written in RxROS for ROS 2, and show the results of performance experiments indicating that RxROS does not introduce any significant performance overhead. RxROS is available under a BSD license, with bindings for both ROS 1 and ROS 2, in both Python and C + +. The implementation of RxROS for ROS 2 is available at https://github.com/rosin-project/rxros2.