https://github.com/sintef-9012/mdetools18-challenge-thingml
ThingML solution to the MDETools 2018 challenge problem
https://github.com/sintef-9012/mdetools18-challenge-thingml
mde thingml
Last synced: over 1 year ago
JSON representation
ThingML solution to the MDETools 2018 challenge problem
- Host: GitHub
- URL: https://github.com/sintef-9012/mdetools18-challenge-thingml
- Owner: SINTEF-9012
- Created: 2018-06-05T19:46:31.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-08-30T08:16:05.000Z (almost 8 years ago)
- Last Synced: 2025-01-08T11:47:24.424Z (over 1 year ago)
- Topics: mde, thingml
- Language: Jupyter Notebook
- Size: 2.55 MB
- Stars: 1
- Watchers: 8
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MDETools'18 Challenge - ThingML Solution

For the MDETools workshop @ MODELS'18, a [challenge was posed](https://mdetools.github.io/mdetools18/challengeproblem.html) to use a MDD tool - that generates fully functional code - to design a control system. The control system was supposed to make a `follower` rover track a `leader` rover at a safe distance, in a simulated Mars-looking environment.
This repository contains a solution to the challenge based on [ThingML](https://github.com/TelluIoT/ThingML), a textual modeling language that implements a sub-set of the UML (components and state-machines) and complements it with a first-class action language. The ThingML language is supported by a set of tools, which include editors, transformations (e.g. export to UML) and an advanced multi-platform code generation framework, which support multiple target programming languages (C, Java, Javascript).
The solution is described in more detail in:
>J. Høgenes and B. Morin.
>*Implementing the MDETools'18 Challenge with ThingML*
>**MDETools'18 Workshop at ACM/IEEE MODELS**, Copenhagen, Danmark.
The research leading to these results has received funding from the European Commission's H2020 programme under grant agreement no 780351 ([ENACT](https://www.enact-project.eu/)).
[](https://www.enact-project.eu/)
## Running the compiled binaries:
> Note: this code has only been tested using the Windows version of the challenge. Slight modifications might be required to run the code on another platform.
1. Dowload the compiled binaries from the [challenge problem website](https://mdetools.github.io/mdetools18/challengeproblem.html#running-the-simulation), and extract the archive into `./Challenge problem/` in the root of this repository.
2. Download the compiled binaries for the Go and Java controllers from the [MDEtools release](https://github.com/SINTEF-9012/mdetools18-challenge-thingml/releases/tag/mdetools18).
3. Start the Unity simulator located at `./Challenge problem/Windows/Challenge-Win64.exe`. Choose display settings, and wait for the window to load.
4. Run the Unity observer located at `./Challenge problem/UnityObserver.jar` using a terminal and `java -jar ...`.
5. Run the `RoverControllerGo` or `RoverControllerJava` programs in the downloaded binaries from the release.
## Compiling from source:
To compile the program from source, follow [the guide on the official ThingML repository](https://github.com/TelluIoT/ThingML/blob/master/README.md). The Go and Java version main files to compile are located in `./_go/main.thingml` and `./_java/main.thingml` respectively.
## Documentation:
Detailed component diagrams and state machine diagrams describing the solution is located in the [`./docs/uml/`](https://github.com/SINTEF-9012/mdetools18-challenge-thingml/tree/master/docs/uml) directory.
## Experiments data:
To validate the proposed solution, both the Go and Java controllers were run multiple times, and the applied power and distance from the `leader` rover was logged. The results of that experiment can be found in the [MDEtools release](https://github.com/SINTEF-9012/mdetools18-challenge-thingml/releases/tag/mdetools18).
The [`experiment1.zip`](https://github.com/SINTEF-9012/mdetools18-challenge-thingml/releases) consist of five *Scenarios*, each corresponding to a random path of the `leader` rover, generated by the challenge software. For each scenario, both the Go and Java controllers were run five times, and the output of each is logged in the *Runs*.