Commit aa80825b authored by Bernhard Rumpe's avatar Bernhard Rumpe
Browse files

BR

parent e157b8aa
<h2>CD2Alloy: Class Diagrams Analysis Using Alloy</h2>
<br>
<p>
S. Maoz, J.O. Ringert. <b>Expressive and Faster Class Diagrams Analysis using a New Translation to Alloy</b>. Submitted.
<ul>
<li>New materials made available to reviewers.</li>
</ul>
</p>
<br>
<p>
S. Maoz, J. O. Ringert, B. Rumpe: <a href="<?php echo $ROOT_PATH; ?>publications/CD2Alloy-Class-Diagrams-Analysis-Using-Alloy-Revisited.pdf" target="_blank">
<b>CD2Alloy: Class Diagrams Analysis Using Alloy Revisited.</b></a>
In: Model Driven Engineering Languages and Systems (MODELS 2011), Wellington, New Zealand. pp. 592-607, LNCS 6981, 2011.
<ul><li> <a href="https://git.rwth-aachen.de/monticore/publications-additional-material/blob/master/cd2alloy/cd2alloy-plugin.zip">CD2Alloy plugin</a> prototype implementation plugin for Eclipse (Oct. 2012)
</li>
<li> <a href="https://git.rwth-aachen.de/monticore/publications-additional-material/blob/master/cd2alloy/CD2AlloyPluginReadme.pdf">CD2Alloy plugin readme and installation instructions</a> (Oct. 2012)
</li>
<li> <a href="https://git.rwth-aachen.de/monticore/publications-additional-material/blob/master/cd2alloy/cd2alloy-examplesproject.zip">Example CDs as Eclipse project</a> (Oct. 2012)
</li>
<li> <a href="https://git.rwth-aachen.de/monticore/publications-additional-material/blob/master/cd2alloy/CD2AlloyTranslationTR.pdf">CD2Alloy complete translation report</a> from CDs to Alloy and back to ODs (Oct. 2012)
</li>
</ul>
</p>
<?php
$ROOT_PATH = "../../";
$TITLE = "SE@RWTH : Materials : CD2Alloy";
include ($ROOT_PATH."layout/lib.php");
include ($ROOT_PATH."layout/header.php");
include ("content.php");
include ($ROOT_PATH."layout/footer.php");
?>
\ No newline at end of file
<h2>CD2Alloy: Class Diagrams Analysis Using Alloy</h2>
<p>
S. Maoz and J.O. Ringert. <b>Expressive and Faster Class Diagrams Analysis using a New Translation to Alloy</b>. Submitted.
<br><br>
Supporting materials:
<ul>
<li> <a href="https://git.rwth-aachen.de/monticore/publications-additional-material/blob/master/cd2alloy/CD2AlloyPluginReadme.pdf" target="_blank">CD2Alloy plugin readme and installation instructions</a>
</li>
<li> <a href="https://git.rwth-aachen.de/monticore/publications-additional-material/blob/master/cd2alloy/CD2AlloyEvaluationCDs.zip">Example CDs as Eclipse project</a> for import in workspace
</li>
<li> <a href="https://git.rwth-aachen.de/monticore/publications-additional-material/blob/master/cd2alloy/CD2AlloyAllSources.zip">CD2Alloy complete sources</a> to reproduce all experiments
</li>
<li> <a href="https://git.rwth-aachen.de/monticore/publications-additional-material/blob/master/cd2alloy/CD2AlloyExperimentsReadme.pdf" target="_blank">CD2Alloy readme on how to reproduce experiments</a>
</li>
</ul>
</p>
<?php
$ROOT_PATH = "../../../";
$TITLE = "SE@RWTH : Materials : CD2Alloy";
include ($ROOT_PATH."layout/lib.php");
include ($ROOT_PATH."layout/header.php");
include ("content.php");
include ($ROOT_PATH."layout/footer.php");
?>
\ No newline at end of file
<h2>Structural Views for Component and Connector Models</h2>
<a href="http://www.cs.tau.ac.il/~maozs/">S. Maoz</a>, J.O. Ringert, and B. Rumpe
<h3>Component and connector views</h3>
<p>
We present component and connector (C&amp;C) views, which specify
structural properties of component and connector models in an expressive and
intuitive way. C&amp;C views provide means to abstract away direct hierarchy,
direct connectivity, port names and types, and thus can crosscut the traditional
boundaries of the implementation-oriented hierarchical decomposition of systems
and sub-systems, and reflect the partial knowledge available to different
stakeholders involved in a system's design.
</p>
<b>C&amp;C views resources</b>
<ul><li> <a href="cncviews-plugin.zip">C&amp;C views synthesis and verification plug-in</a> prototype implementation
(download as Eclipse feature, compatible with version 3.6.2 or later (tested with Eclipse 4.2 Juno),
for Windows only), installation instructions in the readme below.
</li>
<li> <a href="MontiArcViewTR.pdf">C&amp;C views language definition</a>, syntax of MontiArcView explained with simple examples
</li>
</ul>
<h3>Verification</h3>
<p>
We address the verification of a C&amp;C model
against a C&amp;C view and present efficient (polynomial) algorithms to decide satisfaction.
A unique feature of our work, not present in existing approaches to
checking structural properties of C&amp;C models, is the generation of
witnesses for satisfaction/non-satisfaction and of short natural-language
texts, which serve to explain and formally justify
the verification results and point the engineer to its causes.
<br>
A prototype tool and an evaluation over four example
systems with multiple views, performance and scalability
experiments, as well as a user study of the usefulness of
the witnesses for engineers, demonstrate the contribution of
our work to the state-of-the-art in component and connector
modeling and analysis.
</p>
<b>Publications</b>
<p>
S. Maoz, J. O. Ringert, B. Rumpe:
<a href="../../publications/Verifying-Component-and-Connector-Models-against-Crosscutting-Structural-Views.pdf">
Verifying Component and Connector Models against Crosscutting Structural Views.</a>
In: 36th International Conference on Software Engineering (ICSE 2014).
Pages 95-105. Hyderabad, India, ACM New York, June 2014.
</p>
<b>Supporting materials for verification</b>
<ul>
<li> <a href="MontiArcViewVerificationAlgorithmsTR.pdf">Verification algorithm report</a>, includes the verification algorithm, correctness and completeness proofs, and witness generation algorithms.
</li>
<li> <a href="ArcVCheckPluginReadme.pdf">C&amp;C views verification plug-in readme</a>, includes screen captures and installation instructions for the plug-in.
</li>
<li> <a href="arcvcheck-evaluation.zip">Evaluation project</a>, includes C&amp;C views and C&amp;C views specifications, for use after the plug-in is installed.
</li>
<li> <a href="survey/survey-printed.pdf">C&amp;C views exercise (pdf)</a> of a user study and the <a href="survey/13.09.10.rawdata.xls">raw data of 22 entries</a>.
</li>
</ul>
<h3>Synthesis</h3>
<p>
As one application for C&amp;C views we investigate the synthesis problem:
given a C&amp;C views specification, consisting of mandatory, alternative, and
negative views, construct a concrete satisfying C&amp;C model, if one exists. We
show that the problem is NP-hard and solve it, in a bounded scope, using a
reduction to SAT, via Alloy. We further extend the basic problem with support
for library components, specification patterns, and architectural styles. The
result of synthesis can be used for further exploration, simulation, and
refinement of the C&amp;C model or, as the complete, final model itself, for
direct code generation.
<br>
A prototype tool and an
evaluation over three case studies show promising results and suggest
interesting future research directions towards a comprehensive design
environment for architecture synthesis.
</p>
<b>Publications</b>
<p>
S. Maoz, J. O. Ringert, B. Rumpe:
<a href="../../publications/Synthesis-of-Component-and-Connector-Models-from-Crosscutting-Structural-Views.pdf" target="_blank">
Synthesis of Component and Connector Models from Crosscutting Structural Views. </a>
Joint Meeting of the European Software Engineering Conference and
the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE'13), Eds.: B. Meyer, L. Baresi, M. Mezini, pages 444-454, ACM New York, 2013.
</p>
<b>Supporting materials for synthesis</b>
<ul><li> <a href="ArcVSynthPluginReadme.pdf">C&amp;C views synthesis plug-in readme</a>, includes screen captures and installation instructions for the plug-in.
</li>
<li> <a href="arcvsynth-evaluation.zip">Evaluation project</a>, includes C&amp;C views and C&amp;C views specifications, for use after the plug-in is installed.
</li>
<li> <a href="MontiArcViewSynthesisEvaluationTR.pdf">Case studies details document</a>, includes all C&amp;C views, C&amp;C views specifications, and synthesized C&amp;C models referenced in the paper.
</li>
</ul>
<?php
$ROOT_PATH = "../../";
$TITLE = "SE@RWTH : Component and Connector Views";
include ($ROOT_PATH."layout/lib.php");
include ($ROOT_PATH."layout/header.php");
include ("content.php");
include ($ROOT_PATH."layout/footer.php");
?>
\ No newline at end of file
<h2>Model-Driven Engineering of Intelligent Robot Architectures</h2>
<h3>Paper accompanying website</h3>
<a href="http://www.se-rwth.de/~kusmenko/">Evgeny Kusmenko</a>, Svetlana Pavlitskaya
<a href="http://www.se-rwth.de/~rumpe/">Bernhard Rumpe</a>,
and Thomas Timmermanns
<br><br>
<b>Contents for Supplementary Material according to Paper Outline:</b><br>
<a href="#IN">1 Intro</a><br>
<a href="#RW">3 Related Work</a><br>
<a href="#MA">4 MontiAnna</a><br>
<a href="#CNC">5 AI Driven Robot Architectures</a><br><br>
Video demonstration:
<iframe width="640" height="360" src="https://www.youtube.com/embed/XDeITQlUnA0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<br><b>
Detailed instructions on how to use EmbeddedMontiArc and MontiAnna to create a deep learning based robot software are given in
<a href="https://git.rwth-aachen.de/autonomousdriving/torcs_dl/tree/develop">here</a>.</b>
<br><br>
<a name="IN"></a>
<h4>1 Intro</h4>
<a href="https://rwth-aachen.sciebo.de/s/5LJgqqhyTgEiepU">EmbeddedMontiArc Studio - preconfigured Ubuntu VM</a>.
The EmbeddedMontiArc Studio is a web based IDE for EmbeddedMontiArc. It feature a sample project defining a neural network in
MontiAnna. To get seeing the first results quickly, the network is trained on the cifar-10 data set which takes several minutes to train
on a CPU or less than a minute on a GPU.<br>
Please follow the instruction on the desktop to run the project or watch <a href="https://www.youtube.com/watch?v=KK85jvMp55s">this video</a>. You are invited to customize the network or retrain it using your own labeled images.
<a name="RW"></a>
<h4>3 Related Work</h4>
The running example used in the paper to compare the deep learning frameworks is the so called
ResNet152 deep network. It is a convolutional neural network able to learn to extract
information from images, for instance to make a robot understand its environment.
Residual networks such as the ResNet152 try to tackle the vanishing gradient problem in deep architectures
by introducing so called residual blocks.
<br><b>
<a href="resnet152.rar" target="_blank">
The implementations of the ResNet152 we used for our framework comparison are available
here
</a>.</b><br>
In addition to the actual code, each implementation contains its origin as well as some remarks.
Note that there are always many ways to define a complex architecture such as the ResNet152.
Hence, shorter or more elegant examples might exist. However, we may conclude that using most frameworks the
ResNet152 needs several hundresds of lines of code. Caffe even needs over 6000 lines of codes. <br><br><b>The MontiAnna
description of ResNet152 contains only 33 lines of code!</b> This is one order of magnitude less than the other languages need.
<br><br>
Further network examples, e.g. the AlexNet can be found in our <a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/CNNArchLang/tree/master/src/test/resources/architectures">test model repository</a>.
<br>
<a name="MA"></a>
<h4>4 MontiAnna</h4>
MontiAnna is the umbrella term for a set of frameworks containing two languages and several code generators.
The modules are:
<ul>
<li><a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/CNNArchLang" target="_blank">CNNArc</a>: the language to define
the architecture of a deep artificial neural network. As the framework was originally intended for CNNs, the name still contains the term.
However, MontiAnna can handle any kind of deep layered networks.</li>
<li><a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/CNNTrainLang" target="_blank">CNNTrain</a>: the training language to define
the training hyperparameters, loss function, etc.
</li>
<li><a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/CNNArch2MXNet" target="_blank">CNNArch2MXNet</a>: The MontiAnna-to-MxNet
compiler. <a href="https://mxnet.apache.org/">MxNet</a> is a widely used deep learning framework used in industry applications, e.g. by Amazon.
Our compiler produces C++-code for deployment and Python code for training. Furthermore, we provide CMAKE files to facilitate the final
compilation process of the generated MxNet code.
</li>
</ul>
<a name="CNC"></a>
<h4>5 AI Driven Architectures</h4>
We embed MontiAnna into a component and connector (C&C) modeling language called EmbeddedMontiArc. EmbeddedMontiArc
allows us to decompose software architectures hierarchically and to implement the components using MontiMath, a Matlab-inspired
matrix-based language for math-heavy algorithms such as controllers (PID, MPC,...).
Having composed EmbeddedMontiArc with MontiAnna we make it possible to use neural networks as an alternative to MontiMath based
component implementaions.<br>
The composed language governing the sub-languages is
<a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArcDL">EmbeddedMontiArcDL</a>.<br>
The composed generator compiling the architecture model, the MontiMath behavior, as well as MontiAnna deep neural networls to C++ code as well as corresponding CMAKE files
for building the executable is <a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP">EMADL2CPP</a>.
<br><br>
To demonstrate our methodology in action, we developed a self-driving vehicle software based on the direct perception principle.
<br><b>
Detailed instructions on how to use EmbeddedMontiArc and MontiAnna to create a deep learning based robot software are given in
<a href="https://git.rwth-aachen.de/autonomousdriving/torcs_dl/tree/develop">here</a>.</b>
<br><br>
<b><a href="https://git.rwth-aachen.de/autonomousdriving/torcs_dl/blob/develop/doc/deep_driving_project.zip">The complete project is available here.</a>
The model sources can be found under src/main/dp. The main component is stored as plain text in the Mastercomponent.emadl file. Subcomponents can be found
in the subdirectory subcomponents. In particular the deep learning component is stored in <b>Dpnet.emadl</b> and its training is specified
in <b>Dpnet.cnnt</b>.
</b>
<br>
The system uses a deep neural network to extract a dozen of scalar affordance indicators from a front camera image. The affordance indicators
are scalar quantities, e.g. the distance to the front car, the distance to the lane marking, etc.
<br>
The affordance indicators extracted by the neural network are then fed into Kalman filters and a controller written in MontiMath which in turn computes
the actuator commands, i.e. steering, acceleration, and braking.
<br>
The graphical component and connector architecture of the autonomous vehicle is depicted below. The Deep Leaning component is highlighted in violet.
Other components are either implemented in MontiMath or are a composition of subcomponents. Of
course it is possible to have multiple deep learning components in an architecture:<br>
<img src="cnc.png"></img>
The workflow of the system design with EmbeddedMontiArc + MontiAnna is depicted in the following diagram.<br>
<img src="workflow.png"></img>
<br><br>
The generation workflow is depicted next:
<img src="generators.png"></img>
<br><br>
Of course, EmbeddedMontiArc+MontiAnna can be used to design a variety of other robotics applications beside the autonomous driving domain.
<?php
$ROOT_PATH = "../../";
$TITLE = "SE@RWTH : Model-Driven Engineering of Intelligent System Architecturess";
include ($ROOT_PATH."layout/lib.php");
include ($ROOT_PATH."layout/header.php");
include ("content.php");
include ($ROOT_PATH."layout/footer.php");
?>
\ No newline at end of file
<h2>Teaching Model-Based Systems Engineering for Industry 4.0</h2>
<br>
<p>
A. Butting, S. Konar, B. Rumpe, A. Wortmann. <b>Teaching Model-Based Systems Engineering for Industry 4.0: Student Challenges and Expectations</b>. In ACM/IEEE 21th International Conference on Model Driven Engineering Languages and Systems (MODELS '18 Companion), 2018.
</p>
<h3>Companion materials made available to the public</h3>
<p>
<ul>
<li>
<a href="http://www.se-rwth.de/teaching/ws1718/lab/mde/">Project Class Website</a> (September 2017).
</li>
<li>
<a href="user-stories.pdf">User Stories</a> (July 2018).
</li>
<li>
<a href="interview-questions.pdf">Interview Questions</a> (July 2018).
</li>
<li>
<a href="questionnaire.pdf">Questionnaire</a> (July 2018).
</li>
</ul>
</p>
<h3>Final Presentation Video</h3>
<p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/KTr_uJ5F03E" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</p>
\ No newline at end of file
<?php
$ROOT_PATH = "../../";
$TITLE = "SE@RWTH : Materials : Teaching Model-Based Systems Engineering for Industry 4.0";
include ($ROOT_PATH."layout/lib.php");
include ($ROOT_PATH."layout/header.php");
include ("content.php");
include ($ROOT_PATH."layout/footer.php");
?>
\ No newline at end of file
<h2>ICSE-SEIP Questionaires in the Automotive Domain</h2>
<p>
This is the companion website containing the questionnaires presented in the papers:
<ul>
<li>
"Improving ModelBbased Testing in Automotive Software Engineering" by S. Kriebel, M. Markthaler, K. S. Salman, T. Greifenberg, S. Hillemacher, B. Rumpe, C. Schulze, A. Wortmann, P. Orth, J. Richenhagen.
</li>
<li>
"Model-Driven Automotive Function Testing with Legacy Software" by M. Markthaler, S. Kriebel, I. Drave, S. Hillemacher, B. Rumpe and A. Wortmann.
</li>
</p>
<p>
<h3>Related Documents</h3>
<ul style="list-style-type: none;">
<li>
<a href="http://www.se-rwth.de/publications/Improving-Model-based-Testing-in-Automotive-Software-Engineering.pdf">ICSE 2018: Paper "Improving model-based testing in automotive software engineering"</a>
</li>
<li>
<a href="./The.State.of.Testing.in.Automotive.Software.Engineering.pdf">ICSE 2018: Questionaire in English</a>
</li>
<li>
<a href="./Evaluation.of.Guidelines.for.AD4S.pdf">ICSE 2019: Questionaire in English</a>
</li>
</ul>
</p>
<?php
$ROOT_PATH = "../../";
$TITLE = "SE@RWTH : ICSE-SEIP '18 Improving model-based testing in automotive software engineering";
include ($ROOT_PATH."layout/lib.php");
include ($ROOT_PATH."layout/header.php");
include ("content.php");
include ($ROOT_PATH."layout/footer.php");
?>
\ No newline at end of file
<h1>Compositional Language Engineering using<br>Generated, Extensible, Static Type-Safe Visitors</h1>
<p>Robert Heim, Pedram Mir Seyed Nazari, Bernhard Rumpe, and Andreas Wortmann</p>
<!--<h2>Publications</h2>-->
<h2>Abstract</h2>
<p>
Language workbenches usually produce infrastructure to represent models
as abstract syntax trees (AST) and employ analysis, transformation,
and code generation techniques largely based on visitors. The visitor
pattern and its derivatives suffer from the expression problem when it
comes to extensibility and reuse. Current approaches either forsake
static type safety, require features unavailable in popular
object-oriented languages (e.g., open classes), or rely on procedural
abstraction and thereby give up the object-oriented data encapsulation
(the AST) itself. Our approach to visitors exploits knowledge about the
AST structure under development and generation of statically type-safe
external visitor interfaces that support extensibility in two
dimensions: defining new operations by implementing the interface and
extending the underlying data structure, usually without requiring
adaptation of existing implemented visitors. We present a concept of
visitor development for language engineering that enables an adaptable
traversal and provides hook points for implementing concrete visitors.
This approach is applicable to single DSL implementation and to
language composition. It thus enables a transparent, easy to use, and
static type-safe solution for the typical use cases of language
analysis and transformation.
</p>
<h2>Supporting materials</h2>
<p>The Maven project in <a href="visitors.zip">visitors.zip</a>
demonstrates usage of the visitor infrastructure of the language workbench
<a href="http://www.monticore.de">MontiCore</a>.
It consists of three (simplified) languages:</p>
<ul>
<li><b>Classdiagram</b><br>Grammar: visitors.zip/visitors/src/main/grammars/de/monticore/visitors/CD.mc4</li>
<li><b>Automaton</b><br>Grammar: visitors.zip/visitors/src/main/grammars/de/monticore/visitors/Automaton.mc4</li>
<li><b>Classdiagram with embedded automata</b><br>Grammar: visitors.zip/tree/master/visitors/src/main/grammars/de/monticore/visitors/&shy;CDWithAutomaton.mc4</li>
</ul>
<h3>Requirements</h3>
<ul>
<li>Java 8 SDK</li>
<li>Maven 3+</li>
</ul>
<h3>Build</h3>
<p>Extract the visitor.zip. To build the project run <code>mvn clean install</code> from the visitor folder that contains the <code>pom.xml</code>. MontiCore generates files to folder <code>visitors/target/generated-sources/monticore/sourcecode</code>. Put this folder on the class path after building the project.</p>
<h3>Examples</h3>
<p>All languages define pretty printers:</p>
<ul>
<li><b>CDPrettyPrinter</b><br>visitors.zip/visitors/src/main/java/de/monticore/visitors/cd/CDPrettyPrinter.java</li>
<li><b>AutomatonPrettyPrinter</b><br>visitors.zip/visitors/src/main/java/de/monticore/visitors/automaton/AutomatonPrettyPrinter.java</li>
<li><b>CDWithAutomatonPrettyPrinter</b><br>visitors.zip/visitors/src/main/java/de/monticore/visitors/cdwithautomaton/&shy;CDWithAutomatonPrettyPrinter.java</li>
</ul>
<p>The pretty printer for classdiagrams with automata is composed of the other ones.
The CDWithAutomatonTest [1] demonstrates its usage and usage of a method counter [2].<br>
<br>
[1] visitors.zip/visitors/src/test/java/de/monticore/visitors/CDWithAutomatonTest.java<br>
[2] visitors.zip/visitors/src/main/java/de/monticore/visitors/cdwithautomaton/MethodCounter.java
</p>
<?php
$ROOT_PATH = "../../";
$TITLE = "SE@RWTH : Compositional Language Engineering using Generated, Extensible, Static Type-Safe Visitors";
include ($ROOT_PATH."layout/lib.php");
include ($ROOT_PATH."layout/header.php");
include ("content.php");
include ($ROOT_PATH."layout/footer.php");
?>
\ No newline at end of file
<!-- Remove before uploading -->
<!--<link rel="stylesheet" href="style.css">-->
<!-- Remove before uploading -->
<h2>Component-based Integration of Interconnected Vehicle Architectures </h2>
<h3>Paper accompanying website</h3>
Alexander David Hellwig, Stefan Kriebel, <a href="http://www.se-rwth.de/~kusmenko/">Evgeny Kusmenko</a>, and
<a href="http://www.se-rwth.de/~rumpe/">Bernhard Rumpe</a>,
<br><br>
<b>Contents for Supplementary Material according to Paper Outline:</b><br>
<a href="#IN">I Intro</a><br>
<a href="#BG">II Background</a><br>
<a href="#EXA">III Running Example and Problem Statement</a><br>
<a href="#GEN">IV Tag-based multi-platform code generation</a><br>
<a href="#EVAL">VI Evaluation</a><br><br>
Middleware Modeling Toolchain and Simulation Demo using CoinCar Simulator:
<iframe width="640" height="360" src="https://www.youtube.com/embed/uKNIzIeMcy8" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<br>
<a name="IN"></a>
<h4>1 Intro</h4>
This website adds additional information for each section of the paper.
<br>
<a name="BG"></a>
<h4>2 Background</h4>
The EmbeddedMontiArc project can be found <a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc">here</a> and the Documentation is located <a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/Documentation">here</a>. Some referenced projects are:
<ul>
<li><a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArc">EmbeddedMontiArc</a></li>
<li><a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/MontiMath/tree/master">MontiMath</a></li>
<li><a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/CNNArchLang">MontiAnna</a></li>
</ul>
<br>
<a name="EXA"></a>
<h4>3 Running Example and Problem Statement</h4>
The MontiCore Symbol Management Infrastructure(SMI) parses our EmbeddedMontiArc model as well as the tag file containing all RosConnections and creates a single consistent model representation:
<br>
<br>
EmbeddedMontiArc model:
<br>
<img src="intersectionControllerWritten-1.png" width="457"/>
<br>
Tag file containing RosConnections:
<br>
<img src="tagsWritten-1.png" width="457"/>
<br>
Graphical model representation:
<br>
<img src="intersectionControllerVisual-1.png" width="457"/>
<br>
<a name="GEN"></a>
<h4>4 Tag-based multi-platform code generation</h4>
The repositories of the referenced generators can be found under:
<ul>
<li><a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware">Coordinating generator</a></li>
<li><a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp">Core C++ generator</a></li>
<li><a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp">Ros adapter generator</a></li>
</ul>
<br/>
An overview of the generated files for the IntersectionController:
<img src="generatedProject.png" width="457"/>
<br>
According to the tag file, no OpenDaVinci adapter needs to be generated here; the
corresponding project is listed anyway to underline the multi-target capability of the approach.
<br>
<br>
The source code that is generated for the RosAdapter of the IntersectionController is structured as seen below:<br>
<img src="RosAdapter.png" width="457"/>
<br>
<a name="EVAL"></a>
<h4>5 Evaluation</h4>
<img src="intersect-1.png" height="200"/>
<img src="sppExpSetup.png" height="200"/>
<br>
The experiments presented in this section are preconfigured in the following virtual machine with all needed software preinstalled.
You are invited to see our tools in action:
<a href="https://rwth-aachen.sciebo.de/s/YVoxApVihLe3UOJ">EmbeddedMontiArc Studio - preconfigured Ubuntu VM</a>.
<br>
<h5>Instructions</h5>
Import the .ova file into your virtual machine software(we used VirtualBox), start the VM and follow the instructions in the README_VM.pdf located on the Desktop.
<br><br>
<h5>Model</h5>
The real model used in the evaluation can be found
<a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/resources/ba/">here</a>. Its main file is System.emam while RosConnections.tag
contains the ROS middleware model
<a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/resources/ba/RosConnections.tag">
here
</a>.
The IntersectionController is located in
<a href="https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/blob/master/src/test/resources/ba/intersection/IntersectionController.emam">this artifact</a>
<hr>
<h4>Deep Driving Example (not covered in Paper)</h4>
Deep Driving Architectures using EmbeddedMontiArc, Deep Learning, and the presented Middleware Approach:
<iframe width="640" height="360" src="https://www.youtube.com/embed/XDeITQlUnA0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<br><b>
Detailed instructions on how to use EmbeddedMontiArc and MontiAnna to create a deep learning based robot software are given in
<a href="https://git.rwth-aachen.de/autonomousdriving/torcs_dl/tree/develop">here</a>.</b>
<br><br>