81,859 research outputs found

    Design of service robots: Experiences using software engineering

    Get PDF
    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

    Get PDF
    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

    Full text link
    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

    Full text link
    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

    Get PDF
    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

    Full text link
    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

    Get PDF
    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

    Get PDF
    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
    corecore