This repository contains the TOSCA4Cars demonstration for the SofDCar closing event.
We use OpenTOSCA Vintner (4cca487655097f296d19e37bd51aa64552dcc9dflol) to manage the variability when deploying the Multi Cushion Massage Seat (MCMS) scenario. The scenario consists of the following components:
- MCMS Frontend: always in Docker on user device
- MCMS Abstraction: physical on HPC or virtual in Docker on user device
- MCMS Flexible: physical on ECU or virtual mocked in Docker on user device
Besides, we use OpenTOSCA can2x (e719579d72e02161086ad637fd5bd5e92d80585e) to send CAN messages via the network.
We use the following hardware.
We use Ubuntu 22.04 as operating system running on a x64 machine. We refer to this machine also as developer laptop, user device, orchestrator, and orchestrator host.
We use Raspberry Pi 4 Model B as HPC.
We use Arduino Mega 2560 R3 as ECU. To be specific, during development, we use Elegoo Mega 2560 R3.
We have the following tooling setup.
We use OpenTOSCA Vintner (4cca487655097f296d19e37bd51aa64552dcc9dflol) as TOSCA preprocessing and management layer to manage deployment variability and to deploy applications.
Please install it by extracting the respective archive and add the contained binary to your PATH
.
We use Unfurl (v1.0.0) as underlying TOSCA orchestrator. Please install it as follows.
vintner install unfurl
We use Ansible as underlying deployment technology for TOSCA implementation artifacts. Ansible is automatically installed when installing Unfurl as proposed.
We use PlatformIO to flash the Arduino. Please install it as follows.
vintner install platformio
We use Docker to virtualize the ECU and HPC. Podman has not been tested.
We provide the following TOSCA templates.
We provide the following TOSCA templates for the early test integration scenario.
Template | State | ECU | HPC | Description |
---|---|---|---|---|
MCMS Abstract | Not Executable | abstract | abstract | Abstract non-executable TOSCA template as overview. |
MCMS Dirbyh | Executable | physical | virtual | TOSCA template, which deploys MCMS using a physical ECU and virtual HPC. |
MCMS Hybrid | Executable | virtual | physical | TOSCA template, which deploys MCMS using a virtual ECU and physical HPC. |
MCMS Physical | Executable | physical | physical | TOSCA template, which deploys MCMS using a physical ECU and physical HPC. |
MCMS Variability | Executable | physical, virtual | physical, virtual | Variability4TOSCA template, which deploys MCMS conditionally on a physical or virtual ECU and physical or virtual HPC. |
MCMS Virtual | Executable | virtual | virtual | TOSCA template, which deploys MCMS using a virtual ECU and physical HPC. |
We provide TOSCA templates for a scenario, in which a customer either purchases the commercial or the premium tier. In contrast to the commercial tier, the premium tier has an HPC installed for future use case. Once new features are implemented, corresponding software can be deployed on the HPC and the cloud, i.e., the developer laptop.
Template | State | HPC | Remote Access | Description |
---|---|---|---|---|
MCMS Commercial | Validated | no | no | TOSCA template, which deploys MCMS using a virtual ECU without HPC. |
MCMS Premium | Validated | yes | no | TOSCA template, which deploys MCMS using a virtual ECU with empty HPC. |
MCMS Remote | Validated | yes | yes | TOSCA template, which deploys MCMS using a virtual ECU and virtual HPC. |
MCMS Variability | Validated | yes, no | no | Variability4TOSCA template, which deploys MCMS conditionally without empty HPC. |
MCMS Variability Remote | Validated | yes, no | yes, no | Variability4TOSCA template, which deploys MCMS conditionally without HPC, which conditionally hosts MCMS Abstraction (then also MCMS Frontend is deployed in the cloud) |
We provide a Variability4TOSCA template, which supports the testing scenario as well as the premium scenario. For example, it is possible to generate the MCMS Commercial Virtual, i.e., MCMS Commercial but fully virtualized, as well as MCMS Commercial Physical, i.e., MCMS Commercial but on ECU and HPC.
Clone this repository as follows.
git clone <repo> <dir>
cd <dir>
git lfs install
git lfs pull
We use ./task
as build system.
The following commands are available.
./task pull
: pull template dependencies./task stat
: compare lines of code of MCMS Variability in contrast to the other MCMS Dirbyh, Hybrid, Physical, and Virtual./task test
: run variability tests of MCMS Variability./task unpull
: unpull template dependencies./task vintner
: run OpenTOSCA Vintner, e.g.,./task vintner --version
. An installation of OpenTOSCA Vintner is not required../task vintner:update
: update OpenTOSCA Vintner
Some deployment artifacts are not made public. This includes:
templates/testing/mcms-abstract/lib/abstraction/artifact.zip
templates/testing/mcms-abstract/lib/flexible/physical.zip
templates/testing/mcms-abstract/lib/flexible/flexible.zip
templates/testing/mcms-abstract/lib/frontend/artifact.zip
- MCMS Lib contains the TOSCA node types for all templates. They are distributed to other templates using
./task pull
. - During development, we successfully flashed the Arduino, but did not test it, e.g., while being actually connected via GPIO to a massage seat. This applies to MCMS Dirbyh and MCMS Physical.
- Flash the Arduino without privileges might require
sudo chmod 666 /dev/ttyACM0
. - Creating a VCAN requires privileges.
- Send a request to locally running MCMS Abstraction using
IP=$(dig +short `hostname -f`); curl --fail-with-body -X PUT http://${IP}:50000/bubble/1/0
Dies ist ein Forschungsprototyp. Die Haftung für entgangenen Gewinn, Produktionsausfall, Betriebsunterbrechung, entgangene Nutzungen, Verlust von Daten und Informationen, Finanzierungsaufwendungen sowie sonstige Vermögens- und Folgeschäden ist, außer in Fällen von grober Fahrlässigkeit, Vorsatz und Personenschäden ausgeschlossen.
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
This project is licensed under Apache 2.0.
This project is developed for the purpose of research by the Institute of Software Engineering (ISTE) of the University of Stuttgart, Germany and by the Mercedes-Benz Group AG. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).
Address all correspondence to Miles Stötzner.