This work-in-progress paper reports on our efforts to improve different aspects of coordination in complex, component-based robotic systems. Coordination is a system level aspect concerned with commanding, configuring and monitoring functional computations such that the system as a whole behaves as desired. To that end a variety of models such as Petri-nets or Finite State Machines may be utilized. These models specify actions to be executed, such as invoking operations or configuring components to achieve a certain goal. This traditional approach has several disadvantages related to loss of reusability of coordination models due to coupling with platform-specific functionality, non-deterministic temporal behavior and limited robustness as a result of executing platform operations within the context of the coordinator. To avoid these shortcomings, we propose to split this "rich" coordinator into a Pure Coordinator and a Configurator. Although the coordinator remains in charge of commanding and reacting, the execution of actions is deferred to the Configurator. This pattern, called "Coordinator-Configurator", is implemented as a novel Configurator domain specific language that can be used together with any model of coordination. We illustrate the approach by refactoring an existing application that realizes a safe haptic coupling of two youBot mobile manipulators.
@cite_8: The book is an introduction to the idea of design patterns in software engineering, and a catalog of twenty-three common patterns. The nice thing is, most experienced OOP designers will find out they've known about patterns all along. It's just that they've never considered them as such, or tried to centralize the idea behind a given pattern so that it will be easily reusable.
From a object oriented software engineering perspective, the classical design pattern @cite_8 comes close to our suggestion by permitting a to request an to execute a given on a .