The architecture of our framework is composed of 5 different layers as illustrated below.
The Robotics Layer consists of the robots and their simulation models. Currently, we only support two different robots: the Lego Mindstorms NXT and the Dobot Magician system. Our framework both supports a real and a simulated variant.
The second layer is the Translation Layer. In this layer, all components that handle the execution of robots are defined. We implement components that describe how to execute programs on the real robot and on the simulated one. Furthermore, there are components that describe how programs in our formalism can be compiled.
On the Programming Layer, we have the Core and the Code WebEditor packages. In the Core Package, the actual program structure and components are defined. The Code WebEditor package allows defining programs based on the blockly framework. The blockly program can be translated to a program by means of our Core Package.
On the Visualization Layer, we can observe components for on-screen UI, AR UI, and voice commands. They are interconnected because they basically all implement the same abstract UI.
In the Utilities package, all special features are collected that do not fit well to another category. Especially, this holds for Session Management and Location Selection. Location Selection is often also labeled as target sphere selection or also sometimes programming by demonstration.
For getting more detailed insight into the behavior of most of the components, consider the motivation section.