{"id":19510474,"url":"https://github.com/sintef-9012/mdetools18-challenge-thingml","last_synced_at":"2025-02-25T23:12:42.470Z","repository":{"id":140556614,"uuid":"136227003","full_name":"SINTEF-9012/mdetools18-challenge-thingml","owner":"SINTEF-9012","description":"ThingML solution to the MDETools 2018 challenge problem","archived":false,"fork":false,"pushed_at":"2018-08-30T08:16:05.000Z","size":2672,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-01-08T11:47:24.424Z","etag":null,"topics":["mde","thingml"],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SINTEF-9012.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-05T19:46:31.000Z","updated_at":"2019-12-27T01:10:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"9fb23ff4-7a9d-45d4-a44f-9aed9ee0c2a4","html_url":"https://github.com/SINTEF-9012/mdetools18-challenge-thingml","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SINTEF-9012%2Fmdetools18-challenge-thingml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SINTEF-9012%2Fmdetools18-challenge-thingml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SINTEF-9012%2Fmdetools18-challenge-thingml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SINTEF-9012%2Fmdetools18-challenge-thingml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SINTEF-9012","download_url":"https://codeload.github.com/SINTEF-9012/mdetools18-challenge-thingml/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240761142,"owners_count":19853256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mde","thingml"],"created_at":"2024-11-10T23:16:00.565Z","updated_at":"2025-02-25T23:12:42.398Z","avatar_url":"https://github.com/SINTEF-9012.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MDETools'18 Challenge - ThingML Solution\n\n![ThingML Logo](https://raw.githubusercontent.com/TelluIoT/ThingML/master/Logotype_ThingML_100317_500px.png)\n\nFor 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.\n\nThis 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). \n\nThe solution is described in more detail in:\n\u003eJ. Høgenes and B. Morin.\u003cbr/\u003e\n\u003e*Implementing the MDETools'18 Challenge with ThingML*\u003cbr/\u003e\n\u003e**MDETools'18 Workshop at ACM/IEEE MODELS**, Copenhagen, Danmark.\u003cbr/\u003e\n\nThe 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/)).\n\n[![ENACT logo](https://www.enact-project.eu/img/logo-enact-blue2.png)](https://www.enact-project.eu/)\n\n## Running the compiled binaries:\n\u003e 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.\n\n1. 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.\n2. 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).\n3. Start the Unity simulator located at `./Challenge problem/Windows/Challenge-Win64.exe`. Choose display settings, and wait for the window to load.\n4. Run the Unity observer located at `./Challenge problem/UnityObserver.jar` using a terminal and `java -jar ...`.\n5. Run the `RoverControllerGo` or `RoverControllerJava` programs in the downloaded binaries from the release.\n\n## Compiling from source:\nTo 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.\n\n## Documentation:\nDetailed 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.\n\n## Experiments data:\nTo 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).\n\nThe [`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*.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsintef-9012%2Fmdetools18-challenge-thingml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsintef-9012%2Fmdetools18-challenge-thingml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsintef-9012%2Fmdetools18-challenge-thingml/lists"}