The development of robotic systems has always been a great challenge due to the complex and heterogeneous technological issues involved. The process of bringing intelligence to a system requires strongly tighten capabilities of sensing, processing, and acting. In this scenario, software plays a key role as it is the medium to embody intelligence in the machine. The fast evolution of computing, sensor, and actuator hardware has made more difficult the problem of developing effective and efficient robotic software systems. There is an evident connection between widespread benchmarking and software development practice in robotics, since the former will only be possible if highly modular systems and applications are developed, systems and applications become interoperable, and robotics software is easily reusable.
The Robotics community is getting aware of the importance that software development principles have in building advanced robotics systems and there has been some activity in this regard, such as interesting initiatives in the field of open source development, distributed middleware, and standard architectures. An especially important event has been a series of three workshops on Software Development in Robotics held in conjunction with ICRA (2005, 2007 and 2008).
The workshops were intended to create a forum where researchers, practitioners, and professionals could discuss about principles and practice in the use of advanced software development techniques for building robotic systems by bringing together researchers from two different communities: Software Engineering and Robotics. The rationale was that Software engineering is today the Achilles heel of robotics, and it is reasonable to expect that in the near future major contributions in robotics will come from the software engineers. The claim was that what is still missing in robotics is a common language among researchers on this topic and a clear understanding of the state of the art of research in Software Engineering.
Consolidated software engineering techniques have proved their effectiveness in a variety of application domains and could be adopted to build robotics systems more effective. On the other hand, robotics software development is a valuable benchmark to assess the power and discover the limits of advanced software engineering techniques when used to design, implement, and test applications that control physical equipments interacting with the real world. The synergy between Robotics and Software Engineering is strategic. Their mutual benefit is not merely to make software systems bigger, faster, cheaper, but rather to make it possible to build and evolve new software systems. A number of new application areas are emerging from the robotic field, which strongly build on computer engineering technologies: Distributed Robotics, Internet Robotics, Rescue Robotics, Educational Robotics, Human-Robot Interaction.
The aim of this workshop series was two-fold:
These topics were discussed from both the Software Engineering and Robotics perspective. Nevertheless, the workshops did not present yet another software development process built on proprietary technologies or robotic projects. Instead, it aimed at showing how the state-of-the-art software development practice in robotics can meet the principles of software engineering.
The intended results of the workshops were a practical program of research, standardization, and public relations focused on how software development techniques are actually practiced in Robotics and in highlighting strategic directions to improve the synergy between Robotics and Software Engineering.
The following topics were discussed from the double perspective of the robotic expert and of the software engineering expert. The goal was to follow a roadmap that illustrates advanced techniques building modular, interoperable and reusable software applications and to discuss their applicability to the development of robotic systems:
The 2008 workshop reflects an increased awareness within the Robotics community for the importance of developing robotic software principles for large and complex robotics systems. As an emerging research field, robot software development is generating a growing body of scientific literature and industrial developments. Nevertheless, the field is still characterized by the lack of a sound and comprehensive body of concepts that has been widely adopted. As a consequence, it is rather difficult to understand, assess, and compare the existing approaches. In turn, this limits our ability to fully exploit them in practice, and to further promote the research work on robot software development.
This 2008 edition focused on a peculiar aspect of robot software development, that is design of real-time robot behavior. Usually, robot software design builds on high level abstractions such as concurrent execution, instantaneous computation, zero delay, and perfect communication between components and/or between components and the external environment. Real-time behavior is then achieved by experimentation and measurement on specific platforms in order to adjust design parameters. This is a typical scenario that limits the reusability of valuable robotic systems. The objective of this workshop was to identify real-time software requirements for robotic applications, to compare existing approaches, software environments and tools, and to discuss why current practice does not address the problem of designing reusable robot software in a satisfactory way.
The expected result is a practical program of research and public relations focused on the way that software development techniques are actually practiced in Robotics and a roadmap that indicates the strategic directions to pursue the synergy between Robotics and Software Engineering.
More information can be found at the official websites: