81,859 research outputs found
Design of service robots: Experiences using software engineering
This article relates our experiences over the last 15 years in the development of robotic applications within the field of service robotics, using the techniques proposed by software engineering. The process began with domain engineering and reference architectures, moved on to component-oriented development, and currently centered on model-driven design. One of the key problems in software development for robotic systems is that the possibilities of reusing software in new applications are frequently limited. This means that we are forced over and over to solve the same problems starting practically from zero every time. The possible causes of this include the following: 1) robotics specialists normally concentrate more on developing algorithms and the way to solve concrete problems than on organizing the software; 2) lack of good standards for the development of robotic software and implementations of these standards; 3) the case studies conducted to demonstrate the viability of software engineering techniques traditionally deal with information management systems; and 4) the robotics community see software engineering not as a solution but as another problem that adds complexity to already complex problems. This research has helped to demonstrate the viability of using software engineering techniques in real industrial applications, albeit using academic tools that cannot readily be accepted by industry.This work has been supported by EU and Spanish Government
research programmes: 5th FP (GROWTH G3RD-CT-00794),
CICYT-FEDER Program (MEDWSA, TIN2006-15175-C05-
02). Additional funds have been supplied by the Government of
Murcia (Fundación Séneca) and the Spanish Ministry of Industry
(PROFIT programs)
Supporting the migration towards model-driven robotic systems
Robots are increasingly deployed to perform every-day tasks. It is crucial to implement reliable and reusable systems to reduce development effort. The complexity of robotic systems requires the collaboration of experts from different backgrounds. Therefore, clear and communicatable abstraction of components is essential for successful development process. There has been a demand in the community for increased adoption of software engineering approaches to support better robotic systems. Adopting model-driven approaches has been proved successful in supporting this movement. We aim to support the adaptation of model-driven approaches in robotic domain in three interest areas: behavior models, structural models and guaranteeing confidence in system behavior.The overall goal is to support the creation of reusable, verifiable and easy to communicate robotic missions and systems. To achieve that, we conducted a mix of knowledge-seeking and solution-seeking studies. We started with behavior models. We wanted to build knowledge about used behavior models in practice. We investigated the state-of-practice of an emerging behavior model, behavior trees, in comparison to two standardized UML models and a traditional roboticists choice. Moving to the second interest area, we wanted to support the creation of light-weight tools for building an understanding of system structure using feature models. We conducted a pilot evaluation of an already light-weight tool, called FeatureVista. The final interest area was guaranteeing confidence in system behavior. The usual engineering process of self-adaptive controllers in robotic involves different model-based approaches. We wanted to investigate an approach that reaffirm, at code-level, control properties while keeping the usual engineering process. We investigated an approach for mapping control properties to software ones using an appropriate input format for software model-based checking.Our investigations in the different interest areas have built knowledge and shed light on opportunities. We provided characteristics of behavior models, behavior trees and state machines, in popular robotic implementations and highlighted opportunities for improvements. We also provided usage trend for studied implementations in open-source projects. In addition, we provided corestructural characteristic and code-reuse patterns for studied behavior models in open-source projects. For feature models, our results showed promising results for using an interactive tool that provides an easy and initiative navigation between feature models and software components. Improvement aspects were also highlighted for developing similar tools. Finally, our work for the confidence of system behavior showed promising results in reaffirming the correctness of a control property at code-level using appropriate software notation, specification patterns. Also, our approach allowed keeping the current practices of using model-based approaches in self-adaptive robotic systems
Industry Best Practices in Robotics Software Engineering
Robotics software is pushing the limits of software engineering practice. The
3rd International Workshop on Robotics Software Engineering held a panel on
"the best practices for robotic software engineering". This article shares the
key takeaways that emerged from the discussion among the panelists and the
workshop, ranging from architecting practices at the NASA/Caltech Jet
Propulsion Laboratory, model-driven development at Bosch, development and
testing of autonomous driving systems at Waymo, and testing of robotics
software at XITASO. Researchers and practitioners can build on the contents of
this paper to gain a fresh perspective on their activities and focus on the
most pressing practices and challenges in developing robotics software today.Comment: 10 pages, 0 figure
Engineering the Hardware/Software Interface for Robotic Platforms - A Comparison of Applied Model Checking with Prolog and Alloy
Robotic platforms serve different use cases ranging from experiments for
prototyping assistive applications up to embedded systems for realizing
cyber-physical systems in various domains. We are using 1:10 scale miniature
vehicles as a robotic platform to conduct research in the domain of
self-driving cars and collaborative vehicle fleets. Thus, experiments with
different sensors like e.g.~ultra-sonic, infrared, and rotary encoders need to
be prepared and realized using our vehicle platform. For each setup, we need to
configure the hardware/software interface board to handle all sensors and
actors. Therefore, we need to find a specific configuration setting for each
pin of the interface board that can handle our current hardware setup but which
is also flexible enough to support further sensors or actors for future use
cases. In this paper, we show how to model the domain of the configuration
space for a hardware/software interface board to enable model checking for
solving the tasks of finding any, all, and the best possible pin configuration.
We present results from a formal experiment applying the declarative languages
Alloy and Prolog to guide the process of engineering the hardware/software
interface for robotic platforms on the example of a configuration complexity up
to ten pins resulting in a configuration space greater than 14.5 million
possibilities. Our results show that our domain model in Alloy performs better
compared to Prolog to find feasible solutions for larger configurations with an
average time of 0.58s. To find the best solution, our model for Prolog performs
better taking only 1.38s for the largest desired configuration; however, this
important use case is currently not covered by the existing tools for the
hardware used as an example in this article.Comment: Presented at DSLRob 2013 (arXiv:cs/1312.5952
A systematic review of the application of modern software engineering techniques to the development of robotic systems
Robots have become usual collaborators in our daily life. While robotic systems grow to be more and more complex, the need to engineering their software development process grows as well. Traditional approaches that are used in the development process of these software systems are reaching their limits; currently used methodologies and toolsets fall short to address the needs of such complex software development process. Separating robotics knowledge from short-cycled implementation technologies is essential to foster reuse and maintenance. This paper presents a systematic review of the current use of modern software engineering techniques for the development of robotic software systems and their actual automation level. The goal of the survey is to summarize the existing evidence concerning the application of such technologies on the robotic systems field; to identify any gaps in current research in order to suggest areas for further investigation and to provide a background in order to appropriately position new research activities.Presentado en el VIII Workshop Ingeniería de Software (WIS)Red de Universidades con Carreras en Informática (RedUNCI
Transfer Learning for Improving Model Predictions in Highly Configurable Software
Modern software systems are built to be used in dynamic environments using
configuration capabilities to adapt to changes and external uncertainties. In a
self-adaptation context, we are often interested in reasoning about the
performance of the systems under different configurations. Usually, we learn a
black-box model based on real measurements to predict the performance of the
system given a specific configuration. However, as modern systems become more
complex, there are many configuration parameters that may interact and we end
up learning an exponentially large configuration space. Naturally, this does
not scale when relying on real measurements in the actual changing environment.
We propose a different solution: Instead of taking the measurements from the
real system, we learn the model using samples from other sources, such as
simulators that approximate performance of the real system at low cost. We
define a cost model that transform the traditional view of model learning into
a multi-objective problem that not only takes into account model accuracy but
also measurements effort as well. We evaluate our cost-aware transfer learning
solution using real-world configurable software including (i) a robotic system,
(ii) 3 different stream processing applications, and (iii) a NoSQL database
system. The experimental results demonstrate that our approach can achieve (a)
a high prediction accuracy, as well as (b) a high model reliability.Comment: To be published in the proceedings of the 12th International
Symposium on Software Engineering for Adaptive and Self-Managing Systems
(SEAMS'17
Using Formal Methods for Autonomous Systems: Five Recipes for Formal Verification
Formal Methods are mathematically-based techniques for software design and
engineering, which enable the unambiguous description of and reasoning about a
system's behaviour. Autonomous systems use software to make decisions without
human control, are often embedded in a robotic system, are often
safety-critical, and are increasingly being introduced into everyday settings.
Autonomous systems need robust development and verification methods, but formal
methods practitioners are often asked: Why use Formal Methods for Autonomous
Systems? To answer this question, this position paper describes five recipes
for formally verifying aspects of an autonomous system, collected from the
literature. The recipes are examples of how Formal Methods can be an effective
tool for the development and verification of autonomous systems. During design,
they enable unambiguous description of requirements; in development, formal
specifications can be verified against requirements; software components may be
synthesised from verified specifications; and behaviour can be monitored at
runtime and compared to its original specification. Modern Formal Methods often
include highly automated tool support, which enables exhaustive checking of a
system's state space. This paper argues that Formal Methods are a powerful tool
for the repertoire of development techniques for safe autonomous systems,
alongside other robust software engineering techniques.Comment: Accepted at Journal of Risk and Reliabilit
A systematic review of applying modern software engineering techniques to developing robotic systems
Robots have become collaborators in our daily life. While robotic systems become more and more complex, the need to engineer their software development grows as well. The traditional approaches used in developing these software systems are reaching their limits; currently used methodologies and tools fall short of addressing the needs of such complex software development. Separating robotics knowledge from shortcycled implementation technologies is essential to foster reuse and maintenance. This paper presents a systematic review (SLR) of the current use of modern software engineering techniques for developing robotic software systems and their actual automation level. The survey was aimed at summarizing existing evidence concerning applying such technologies to the field of robotic systems to identify any gaps in current research to suggest areas for further investigation and provide a background for positioning new research activities.Los robots se han convertido en colaboradores habituales de nuestra vida diaria. Los sistemas robóticos son cada vez más complejos y, como consecuencia, crece la necesidad de aplicar nuevas técnicas ingenieriles a su proceso de desarrollo. Los enfoques tradicionales que se utilizan en el proceso de desarrollo de estos sistemas de software están alcanzando sus límites; las metodologías utilizadas actualmente y las herramientas de soporte no alcanzan para atender las necesidades de estos procesos complejos. Para fomentar la reutilización y el mantenimiento de código es esencial separar el conocimiento estable del dominio de robótica en las tecnologías de implementación, que varían rápidamente. Este artículo presenta una revisión sistemática de la utilización actual de técnicas modernas de ingeniería de software en el desarrollo de sistemas robóticos y su nivel de automatización. El objetivo del estudio es el de resumir la evidencia existente respecto a la aplicación de dichas tecnologías en el campo de los sistemas robóticos para identificar carencias en la investigación actual con el fin de sugerir áreas en futuras propuestas y proporcionar las bases para posicionar adecuadamente nuevas actividades de investigación
- …