The mobile manipulation stack is a set of components that realize specific services to provide a flexibly applicable mobile manipulation capability for a service robot. The services defined (service definitions) for the mobile manipulation stack are a typical example of the Composition Tier 2 contents of the RobMoSys Ecosystem. This mobile manipulation stack can be used with various robot platforms and different kinds of sensors. Moreover, it is able to deal with unstructured environments of variable scale. The focus hereinafter is to emphasize the general design choices and architectural decisions of the mobile manipulation components.
The figure below illustrates the interaction of the mobile manipulation components over generic mobile manipulation services. While the those services are always stable, there are several alternatives for each of the components (see below) that realize the same services but internally implement different algorithms. This decoupling between a component's internal implementation and the component's service-based interaction is a fundamental principle in RobMoSys that enables a flexible reuse (i.e., exchange) of components by alternatives with unique selling points and thus makes the mobile manipulation stack flexibly usable in different applications with different requirements with respect to envisioned environments and the used manipulators and robot platforms.
The mobile manipulation stack consists of the following hardware-related components, namely BaseServer, PTUServer, RGBDCameraServer and ManipulatorServer. These components abstract away the used hardware. While the components themselves are specific to a particular platform (e.g. Robotino3, UR, etc.), they implement the platform-independent services.
The ManipulationPlanner and the ObjectRecognition component implement different capabilities of the stack, namely (1) recognition of objects and environments and (2) collision free manipulation planning. Again, similar to the two hardware-related components above, the components internally implement a specific algorithm and are exchangeable due to the algorithm-independent service definitions that they individually implement.
Overall, the above component realize different capabilities providing skills to be used for coordination on above abstraction levels. The Sequencer component is the coordinating component executing the skill- and task- level behavior models. The sequencer uses the KnowledgeBase component to memorize necessary information, states and models, e.g. environment model, self model etc. Further information regarding coordination for mobile manipulation and object recognition, as well as distributed knowledge representation can be found in 1)
The following composition structures are directly related to the realization of the mobile manipulation stack: