Robotic Software Systems: From Code-Driven to Model-Driven Software Development
Christian Schlegel, Andreas Johann Steck, Alex Lotz · InTech eBooks · 2012
Advances in robotics and cognitive sciences have stimulated expectations for emergence of new generations of robotic devices that interact and cooperate with people in ordinary human environments (robot companion, elder care, home health care), that seamlessly integrate themselves into complex environments (domestic, outdoor, public spaces), that fit into different levels of system hierarchies (human-robot co-working, hyper-flexible production cells, cognitive factory), that can fulfill different tasks (multi-purpose systems) and that are able to adapt themselves to different situations and changing conditions (dynamic environments, varying availability and accessibility of internal and external resources, coordination and collaboration with other agents).Unfortunately, so far, steady improvements in specific robot abilities and robot hardware have not been matched by corresponding robot performance in real-world environments.On the one hand, simple robotic devices for tasks such as cleaning floors and cutting the grass have met with growing commercial success.Robustness and single purpose design is the key quality factor of these simple systems.At the same time, more sophisticated robotic devices such as Care-O-Bot 3 (Reiser et al., 2009) and PR2 (Willow Garage, 2011) have not yet met commercial success.Hardware and software complexity is their distinguishing factor.Advanced robotic systems are systems of systems and their complexity is tremendous.Complex means they are built by integrating an increasingly larger body of heterogeneous (robotics, cognitive, computational, algorithmic) resources.The need for these resources arises from the overwhelming number of different situations an advanced robot is faced with during execution of multitude tasks.Despite the expended effort, even sophisticated systems are still not able to perform at an expected and appropriate level of overall quality of service in complex scenarios in real-world environments.By quality of service we mean the set of system level non-functional properties that a robotic system should exhibit to appropriately operate in an open-ended environment, such as robustness to exceptional situations, performance despite of limited resources and aliveness for long periods of time.Since vital functions of advanced robotic systems are provided by software and software dominance is still growing, the above challenges of system complexity are closely related to the need of mastering software complexity.Mastering software complexity becomes pivotal towards exploiting the capabilities of advanced robotic components and algorithms.Tailoring modern approaches of software engineering to the needs of robotics is seen as decisive towards significant progress in system integration for advanced robotic systems.23 www.intechopen.com 2 Robotic Systems Software engineering in roboticsComplex systems are rarely built from scratch but their design is typically partitioned according to the variety of technological concerns.In robotics, these are among others mechanics, sensors and actuators, control and algorithms, computational infrastructure and software systems.In general, successful engineering of complex systems heavily relies on the divide and conquer principle in order to reduce complexity.Successful markets typically come up with precise role assignments for participants and stakeholders ranging from component developers over system integrators and experts of an application domain to business consultants and end-users.Sensors, actuators, computers and mechanical parts are readily available as commercial off-the-shelf black-box components with precisely specified characteristics.They can be re-used in different systems and they are provided by various dedicated suppliers.In contrast, most robotics software systems are still based on proprietarily designed software architectures.Very often, robotics software is tightly bound to specific robot hardware, processing platforms, or communication infrastructures.In addition, assumptions and constraints about tasks, operational environments, and robotic hardware are hidden and hard-coded in the software implementation.Software for robotics is typically embedded, concurrent, real-time, distributed, data-intensive and must meet specific requirements, such as safety, reliability and fault-tolerance.From this point of view, software requirements of advanced robots are similar to those of software systems in other domains, such as avionics, automotive, factory automation, telecommunication and even large scale information systems.In these domains, modern software engineering principles are rigorously applied to separate roles and responsibilities in order to cope with the overall system complexity.In robotics, tremendous code-bases (libraries, middleware, etc.) coexist without being interoperable and each tool has attributes that favors its use.Although one would like to reuse existing and matured software building blocks in order to reduce development time and costs, increase robustness and take advantage from specialized and second source suppliers, up to now this is not possible.Typically, experts for application domains need to become experts for robotics software to make use of robotics technology in their domain.So far, robotics software systems even do not enforce separation of roles for component developers and system integrators.The current situation in software for robotics is caused by the lack of separation of concerns.In consequence, role assignments for robotics software are not possible, there is nothing like a software component market for robotic systems, there is no separation between component developers and system integrators and even no separation between experts in robotics and experts in application domains.This is seen as a major and serious obstacle towards developing a market of advanced robotic systems (for example, all kinds of cognitive robots, companion systems, service robots).The current situation in software for robotics can be compared with the early times of the World Wide Web (WWW) where one had to be a computer engineer to setup web pages.The WWW turned into a universal medium only since the availability of tools which have made it accessible and which support separation of concerns: domain experts like journalists can now easily provide content without bothering with technical details and there is a variety of specialized, competing and interoperable tools available provided by computer engineers, designers and others.These can be used to provide and access any kind of content and to support any kind of application domain.