We provide on this page the different artefacts which have been used and created when performing the demonstration case example of a five-axes grip-arm robot embedded in a CPS simulation.
Today, key-challenges in modeling cyber-physical systems (CPS) are (i) to better define and support the relationship between design time models and runtime models, and (ii) to take uncertainty at design time into account resulting from the difficulty to anticipate all environmental and physical conditions of a system at runtime beforehand.
To overcome these limitations, we present a Stochastic Model-Driven Engineering framework (StoMDE) that combines stochastic modeling with MDE techniques.
Firstly, the MDE techniques are used to provide traceability from design model elements to runtime model elements. Secondly, as an intermediate between design time and runtime, the so-called “DeRun perspective”, these techniques are combined with stochastic modeling to allow (i) to make uncertainty explicit, (ii) to make it easy to talk quantitatively about ranges of likely outcomes, and (iii) to anticipate the unforeseen.
As a first proof of concept of this StoMDE framework, we compute deviations between design model and runtime model to anticipate parameter uncertainty based on a five-axes grip-arm robot embedded in a CPS simulation.
Demonstration Case Description
For demonstration purpose, we developed a simulation model of a grip-arm robot (gripper) with angle sensors, which is executed by the open source tool Blender.
We deployed the scenario of a pick-and-place unit, where the gripper picks up different color-coded work pieces, places them on a test rig, picks the items up again and puts them down, depending on their red or green color, in two different storage boxes.
The simulation environment receives its commands via Message Queue Telemetry Transport (MQTT) from a server controller implemented with Kotlin. The simulation enables to acquire transient data streams in real-time from the angle axes of the gripper (unit is radian) which are equipped with sensors. To react on events of interest provided by these sensor value streams, we employed the publish/subscribe pattern. In our example, we subscribe to the sensor topic to receive in a temporal distance of 15 milliseconds the filtered sensor stream values thumbed during simulation. In the demonstration case example, we are interested in property value changes (i.e., positions of the axes) over time. Messages from the sensor topic are defined in JSON specifying the sending unit as well as the measured data. The default range of the angle values is [-π, π]. To analyze our scenarios, we used the time series database InfluxDB to save the measurements.
This technical set up was used as execution platform for the prototypical implementation of the StoMDE framework. The defined metamodels (ecore-Files) and the desgin model (xmi-File) were used for the implementation of the Kotlin Server. During execution the Blender Simulation and the Kotlin Server exchange messages by MQTT. Sensor values, recognized states, fitted values, and the residual error series are stored in the InfluxDB.
- Design Metamodel: Models_Design_Metamodel
- Stochastic Metamodel: Models_Stochastic_Metamodel
- Gripper Design Model: Models_Gripper_Model
- Implementation Kotlin Server / Blender Simulation: Models_Demonstration_Case
Running the Demonstration Case
For running the case study, unzip the zip folder to a specific directory. Open the Blender file and start the simulation by pressing “p” (“ESC” for stopping).
Use Docker for starting the Kotlin server, object tracking, InfluxDB, and the RabbitMQ. Open the console, go to the specific folder and write: