What role does software play in the development of robotic systems? Sensing ... application, which is (nearly) the same as several other releases for different ...
F R O M
T H E
G U E S T
E D I T O R S
Software Engineering for Robotics Davide Brugali and Erwin Prassler
T
his special issue on software engineering (SE) for robotics captures a snapshot of current research issues and state-of-the-practice in robotic software development, a topic that has recently received increasing attention from the robotics community, thanks to some popular initiatives such as the Microsoft move into robotics. What role does software play in the development of robotic systems? Sensing, planning, control, reasoning, and learning are human-like capabilities that can be artificially replicated in a computer-based robotic system as software applications, which implement data structures and algorithms devised on a large spectrum of theories, from probability theory, mechanics, and control theory to ethology, economy, and cognitive sciences. Software plays a key role in robotics as it is the medium to embody intelligence in the machine. Typically, robot software systems are concurrent, distributed, embedded, real time, and data intensive. Computational performance is a major requirement, especially for autonomous robots, which process large volumes of sensory information and have to react in a timely fashion to events occurring in the robot’s operational environment. The race toward performance pushes robotic engineers to neglect other quality attributes of a software system, such as maintainability, interoperability, and reusability. [According to the IEEE Standard Glossary of Software Engineering Terminology (IEEE 610.12-1990), maintainability is ‘‘the ease with which a software system or component can be modified to correct faults, improve performance or other attributes, or adapt to a changed environment’’; interoperability is ‘‘the ability of two or more systems or components to exchange information and to use the information that has been exchanged’’; and reusability is ‘‘the degree to which a software module or other work product can be used in more than one computing program or software system.’’] Software development efforts are mainly focused on delivering highly efficient implementations of control applications for specific robotic platforms that perform specific tasks in specific operational environments. As a consequence, robot software developers often experience a sense of frustration when they have to develop from scratch a new application, which is (nearly) the same as several other releases for different projects, because they have not been able to capture and exploit the commonalties. However, if robotics systems are to be deployed in everyday human settings and enter the consumer market, there is a pressing need to engineer the software development process to reduce the cost and time-to-market of robotic
Digital Object Identifier 10.1109/MRA.2009.932127
MARCH 2009
applications while preserving their efficiency, robustness, safety, and reliability. The fundamental tenet of SE is that the development and evolution of software systems can be facilitated by adopting a systematic, disciplined, quantifiable approach in each phases of a software application’s life span, from requirements analysis, system architecture definition, and component design to code implementation, testing, and deployment. Mainstream SE technologies and methodologies comprise software components, middleware for distributed systems, application frameworks, and model-driven engineering. They enable the construction of new software applications as the composition of reusable building blocks, reusable software infrastructures, and reusable high-level architectures and are effectively used in a variety of application domains, such as factory automation, automotive design and manufacturing, and telecommunications. Their adoption in robot software development would allow researchers to more easily keep up the pace of robotics research because they wouldn’t have to constantly rewrite each other’s code. To date, there has not been a sustained push to design reusable robotic software systems and to implement flexible, modular, interoperable code. Such an effort takes time, and most projects are funded for scientific results and not for infrastructure and integration. In addition, reusable software development is extremely challenging in robotics because robots are highly changecentric systems, which build on rapidly evolving technologies and have to satisfy unbound application requirements of an experimental science that pursues ambitious goal. These barriers to robotic SE leave many open research questions and call for new synergies between robotics and SE. The article by Iborra et al. reports the authors’ experience in dealing with highly variable requirements of service robotics applications ranging from teleoperated systems for specific tasks in fully structured environments to semiautonomous robots in partially structured environments. It documents how different SE techniques have been progressively exploited for the development of reusable control systems and how the software reuse practice has been enhanced from pure code to abstract models, i.e., from implementation to design. The article by Minseong Kim et al. provides a complementary view, with respect to the previous article, of the development process of service robotics applications. It describes how (continued on page 15) IEEE Robotics & Automation Magazine
9
addressing the characteristics of dynamic environments, developing planning and control algorithms for hybrid systems, understanding the complexity of algorithmic problems in control and motion planning, and finally, encouraging the application of planning algorithms in emerging application areas such as bioinformatics or nanorobotics. The dynamism of the research in this area leads to successful outcomes, such as the creation of spin-off companies that market the motion planning technology today [awarded by the 2005 IEEE International Federation of Robots (IFR) innovation price], as well as two recent survey
textbooks published in 2005 and 2006. The continuing interest in this research area is also confirmed by regular publications in journals such as IEEE Transactions on Robotics or The International Journal on Robotics Research and in the major robotics conferences such as IEEE International Conference on Robotics and Automation (ICRA), International Conference on Intelligent Robots and Systems (IROS), Robotics Science and Systems, or the biennial International Workshop on the Algorithmic Foundations of Robotics, as well as workshops and tutorials organized recently at these robotic conferences.
F R O M
T H E
G U E S T
E D I T O R S (continued from page 9)
a specific SE method has been consistently applied throughout the main phases of the software development process. The authors emphasize how this approach adequately supports the collaborative and systematic development of a service robot by many engineers focusing on different technical aspects. The article by Broten et al. reports on the authors’ experience in developing distributed software applications for unmanned ground vehicles following the component-based SE (CBSE) approach. The authors point out that, although the CBSE approach encourages the creation of modular, flexible, and extensible software, it has to be complemented with a careful analysis of the application domain, which leads to the definition of stable data structures and interfaces to effectively achieve component reusability. The article by Ng-Thow-Hing et al. presents a software architecture that facilitates Multimodal Communication among loosely coupled software components implementing perception, knowledge representation, decision making, and humanrobot interaction functionalities. The authors show how the proposed architecture supports the dynamic reconfiguration of the ASIMO humanoid robot control system, which is needed to achieve high degrees of versatility. The article by Bensalem et al. presents a software component model that enables formal verification and validation of
MARCH 2009
controller correctness for real-time embedded and distributed robotic systems that must operate within uncertain environments. The authors illustrate how the safety properties of complex robotic systems built on the proposed model are checked and enforced at runtime. The article by Baker and Dolan reports on the difficulties in reusing software artifacts previously developed for the Grand Challenge and on the efforts to improve the software development process that lead, under time pressure, to the design of the behavioral subsystem in Boss, Tartan Racing’s winning entry in the Urban Challenge. The authors emphasize the role of software design patterns as conceptual tool to enhance software architecture resilience to fast changing application requirements. We thank all the authors for their contribution to this special issue, all the referees for their valuable reviews and suggestions to improve articles’ quality, and the Editor-in-Chief Stefano Stramigioli for his great support. Please visit the Web page of the IEEE Robotics and Automation Society (RAS) Technical Committee on Software Engineering in Robotics and Automation (http://robotics. unibg.it/tcsoft/) to get information on current and future initiatives related to the topics of this special issue. Stay tuned and get involved!
IEEE Robotics & Automation Magazine
15