This is a proof of concept implementation of a general method for variability management in service robotics based on separation of roles and composition which allows to model, compose and resolve variability of software building blocks.
The model-driven implementation in Eclipse allows users to describe via DSLs:
- Building blocks at different levels of abstraction, their variability entities and the decomposition relationships between building blocks.
- Dependency Variability Graphs: The graph-based dependency relationships between variability entities (including their values by applying function composition).
A code generator is then able to generate a solver of such models that determines requirements-related and environmental-contextual variant bindings of building blocks. Requirements specified by the endusers of these building blocks can be constraints for specific properties of the model (a property is a special subtype of a variability entity) and/or preference specifications for modeled conflict of objectives between properties.
Furthermore, the toolchain offers an implementation of the LISP-based DSL SmartTCL with the Eclipse Modeling Tools. This allows to program concrete behavior for simulated or real robots in combination with the SmartSoft Approach.
To try it out, you need to do the following:
- Download and install Eclipse Modeling Tools 2022-06 (https://www.eclipse.org/downloads/packages/release/2022-06/r/eclipse-modeling-tools)
- Start Eclipse
- Help->Install New Software (Xtext Complete SDK and Sirius Specifier Environment)
- Restart Eclipse
- Install New Software -> Add -> Archive -> Select SmartDependencyVariabilityGraphs.zip in the feature folder -> Add
- Unselect Group items by category -> Select SmartDependencyVariabilityGraphs -> Next -> Next -> Accept and Finish
- Select Unsigned -> Trust Selected -> Restart Now
- Help->Check for Updates->Make sure that all available updates are selected->Next->Next-> Accept and Finish
- Select the Types you need to trust -> Trust Selected -> Restart Now
Here you can find more information about the use.