diff --git a/TorcsEMAMGenerator/.gitignore b/TorcsEMAMGenerator/.gitignore
index dad5ed4d76965d08ce46682ed9c627518f8dbf49..93bdd06a87f88fe6ff8ff3b14d0b7dc686911a80 100644
--- a/TorcsEMAMGenerator/.gitignore
+++ b/TorcsEMAMGenerator/.gitignore
@@ -1,4 +1,5 @@
-output/
-generated/
target/
+output/
.idea/
+.git
+*.iml
\ No newline at end of file
diff --git a/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_NumberUnit_0_0_10_SNAPSHOT.xml b/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_NumberUnit_0_0_10_SNAPSHOT.xml
index 8c324607b12d1f573e97a7c338c430cd9e496d84..906fed965a615132ddfc615d9cc4c78c6fe56b79 100644
--- a/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_NumberUnit_0_0_10_SNAPSHOT.xml
+++ b/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_NumberUnit_0_0_10_SNAPSHOT.xml
@@ -1,13 +1,13 @@
-
+
-
+
-
+
\ No newline at end of file
diff --git a/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_monticar_common_monticar_0_0_10_SNAPSHOT.xml b/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_monticar_common_monticar_0_0_10_SNAPSHOT.xml
deleted file mode 100644
index cc71f8e2ce9d5c7115bb4d440e4325254679ffd6..0000000000000000000000000000000000000000
--- a/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_monticar_common_monticar_0_0_10_SNAPSHOT.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_monticar_embedded_montiarc_0_0_10_SNAPSHOT.xml b/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_monticar_embedded_montiarc_0_0_10_SNAPSHOT.xml
deleted file mode 100644
index 570214695fa3333d29bbc49e483d498f5d3a6769..0000000000000000000000000000000000000000
--- a/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_monticar_embedded_montiarc_0_0_10_SNAPSHOT.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_monticar_embedded_montiarc_math_0_0_10_SNAPSHOT.xml b/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_monticar_embedded_montiarc_math_0_0_10_SNAPSHOT.xml
index 662f233f9388b51e554e8df3f3685af15fc5efbf..674d52fbd1d74bd91d0251aa0dbf7e1129bcf25f 100644
--- a/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_monticar_embedded_montiarc_math_0_0_10_SNAPSHOT.xml
+++ b/TorcsEMAMGenerator/.idea/libraries/Maven__de_monticore_lang_monticar_embedded_montiarc_math_0_0_10_SNAPSHOT.xml
@@ -1,13 +1,13 @@
-
+
-
+
-
+
\ No newline at end of file
diff --git a/TorcsEMAMGenerator/.idea/misc.xml b/TorcsEMAMGenerator/.idea/misc.xml
index d30d09e204ed7b99f11b1af2bd0f33d1a72375d0..05acc578e848a8cf214d6cb9c3a4fc84186bd09d 100644
--- a/TorcsEMAMGenerator/.idea/misc.xml
+++ b/TorcsEMAMGenerator/.idea/misc.xml
@@ -1,5 +1,8 @@
+
+
+
-
+
\ No newline at end of file
diff --git a/TorcsEMAMGenerator/.idea/workspace.xml b/TorcsEMAMGenerator/.idea/workspace.xml
index f9bb74b7f57d2622e0f58f61868234352ef7c313..4b85ead829bfefc9708a1391d3e5d226bdb3c95c 100644
--- a/TorcsEMAMGenerator/.idea/workspace.xml
+++ b/TorcsEMAMGenerator/.idea/workspace.xml
@@ -2,20 +2,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -23,6 +24,9 @@
+
+
+
@@ -35,34 +39,22 @@
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -95,8 +87,12 @@
-
+
+
+
+
+
@@ -106,29 +102,81 @@
true
DEFINITION_ORDER
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -144,73 +192,93 @@
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
+
+
+
+
+
+
+
+
+
@@ -223,15 +291,8 @@
-
-
-
-
-
-
-
-
-
+
+
@@ -239,9 +300,9 @@
-
-
-
+
+
+
@@ -249,25 +310,46 @@
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -282,6 +364,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -302,48 +408,102 @@
+
-
-
-
-
-
-
-
-
+
-
-
-
-
+
+
-
-
-
+
-
-
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -352,14 +512,67 @@
-
-
-
-
-
+
+
-
+
+ project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -370,9 +583,16 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
@@ -385,9 +605,17 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -400,21 +628,45 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -433,256 +685,359 @@
+
+
+
+
-
+
-
-
+
+
-
-
-
-
+
-
+
-
-
-
-
+
+
+
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
+
-
+
-
-
+
+
+
-
+
-
-
+
+
-
+
-
-
+
+
+
-
+
-
+
-
-
-
-
-
-
-
-
+
-
-
+
+
+
-
-
-
-
-
-
-
-
-
+
-
-
+
+
+
-
+
-
-
+
+
-
-
+
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
+
-
+
-
-
+
+
+
-
+
-
-
+
+
+
-
+
-
-
+
+
+
-
+
-
-
+
+
+
-
+
-
-
+
+
+
-
+
-
-
+
+
+
-
+
-
-
+
+
+
-
+
-
+
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TorcsEMAMGenerator/experiments.iml b/TorcsEMAMGenerator/experiments.iml
index 725b009c06a5b069ae5ad33e4c150c6d26ffad1d..498fe8de7a53450e43ccc75b18cf61a535cb9289 100644
--- a/TorcsEMAMGenerator/experiments.iml
+++ b/TorcsEMAMGenerator/experiments.iml
@@ -1,6 +1,6 @@
-
+
@@ -49,7 +49,7 @@
-
+
@@ -81,5 +81,8 @@
+
+
+
\ No newline at end of file
diff --git a/TorcsEMAMGenerator/generated/build.sh b/TorcsEMAMGenerator/generated/build.sh
deleted file mode 100755
index bc739930fe056d2190607047421b4cbe4aa30b16..0000000000000000000000000000000000000000
--- a/TorcsEMAMGenerator/generated/build.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-%!/bin/bash
-
-echo "Building DriverController"
-cd Drivercontroller
-mkdir -p build
-cd build
-cmake ..
-make -j
-cd ../../
-
-echo "Building SafetyController"
-cd Safetycontroller
-mkdir -p build
-cd build
-cmake ..
-make -j
-cd ../../
-
-echo "Building FeatureExtraction"
-cd Featureextraction
-mkdir -p build
-cd build
-cmake ..
-make -j
-cd ../../
-
-echo "Building ImagePreprocessing"
-cd Imagepreprocessing
-mkdir -p build
-cd build
-cmake ..
-make -j
-cd ../../
-
-echo
-echo "Well done!"
-echo "Run ./run_all.sh to run all."
-
diff --git a/TorcsEMAMGenerator/generated/run_all.sh b/TorcsEMAMGenerator/generated/run_all.sh
deleted file mode 100755
index 4ad2cfc367165bb47a38a78e7f893839feb53761..0000000000000000000000000000000000000000
--- a/TorcsEMAMGenerator/generated/run_all.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-%!/bin/bash
-
-xterm -T DriverController -e Drivercontroller/build/coordinator/Coordinator_dp_drivercontroller &
-
-xterm -T SafetyController -e Safetycontroller/build/coordinator/Coordinator_dp_safetycontroller &
-
-xterm -T FeatureExtraction -e Featureextraction/build/coordinator/Coordinator_dp_featureextraction &
-
-xterm -T ImagePreprocessing -e Imagepreprocessing/build/coordinator/Coordinator_dp_imagepreprocessing &
-
diff --git a/TorcsEMAMGenerator/pom.xml b/TorcsEMAMGenerator/pom.xml
index d3664db0e7c3e34ce7c44ef43db44bb0f93ff80a..4a2f8d621a20b75d08ae386ff406dda438df845c 100644
--- a/TorcsEMAMGenerator/pom.xml
+++ b/TorcsEMAMGenerator/pom.xml
@@ -41,6 +41,11 @@
embedded-montiarc-math-middleware-generator
0.0.1-SNAPSHOT
+
+ de.monticore.lang.monticar
+ embedded-montiarc-deeplearning
+ 0.2.0-SNAPSHOT
+
\ No newline at end of file
diff --git a/TorcsEMAMGenerator/src/main/java/de/monticore/lang/monticar/torcs_dl/Experiments.java b/TorcsEMAMGenerator/src/main/java/de/monticore/lang/monticar/torcs_dl/Experiments.java
index abebbbba163349356cc059f4295edf64d445d52f..6a86b2e7b4a294ca7a05517dc102dfaf2d22a8f5 100644
--- a/TorcsEMAMGenerator/src/main/java/de/monticore/lang/monticar/torcs_dl/Experiments.java
+++ b/TorcsEMAMGenerator/src/main/java/de/monticore/lang/monticar/torcs_dl/Experiments.java
@@ -2,6 +2,7 @@ package de.monticore.lang.monticar.torcs_dl;
import de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.ExpandedComponentInstanceSymbol;
import de.monticore.lang.embeddedmontiarc.tagging.RosToEmamTagSchema;
+import de.monticore.lang.monticar.emadl.generator.Generator;
import de.monticore.lang.monticar.generator.middleware.MiddlewareGenerator;
import de.monticore.lang.monticar.generator.middleware.impls.CPPGenImpl;
import de.monticore.lang.monticar.generator.middleware.impls.RosCppGenImpl;
@@ -15,27 +16,25 @@ import de.monticore.lang.monticar.generator.order.nfp.TagThresholdTagSchema.TagT
import de.monticore.lang.monticar.generator.roscpp.helper.TagHelper;
import de.monticore.lang.tagging._symboltable.TaggingResolver;
import de.monticore.symboltable.Scope;
+import freemarker.template.TemplateException;
import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.Arrays;
import java.util.LinkedList;
import static de.monticore.lang.monticar.generator.order.simulator.AbstractSymtab.createSymTab;
public class Experiments {
+
+ public static final String TARGET_PATH_GENERATED = "./target/generated-sources-torcs-dl/";
+ public static final String MODELS_PATH = "src/main/models/";
+
public static void main(String[] args) {
- System.out.println("Experiments!");
-
- Scope scope = createSymTab("resources");
- TaggingResolver taggingResolver = new TaggingResolver(scope, Arrays.asList("resources"));
- TagMinMaxTagSchema.registerTagTypes(taggingResolver);
- TagTableTagSchema.registerTagTypes(taggingResolver);
- TagBreakpointsTagSchema.registerTagTypes(taggingResolver);
- TagExecutionOrderTagSchema.registerTagTypes(taggingResolver);
- TagInitTagSchema.registerTagTypes(taggingResolver);
- TagThresholdTagSchema.registerTagTypes(taggingResolver);
- TagDelayTagSchema.registerTagTypes(taggingResolver);
+ System.out.println("Starting code generation...");
+ TaggingResolver taggingResolver = createSymTabAndTaggingResolver(MODELS_PATH);
RosToEmamTagSchema.registerTagTypes(taggingResolver);
MiddlewareGenerator middlewareGenerator = new MiddlewareGenerator();
@@ -57,7 +56,7 @@ public class Experiments {
TagHelper.resolveTags(taggingResolver, componentInstanceSymbol);
- middlewareGenerator.setGenerationTargetPath("generated/"+inpu);
+ middlewareGenerator.setGenerationTargetPath(TARGET_PATH_GENERATED +inpu);
middlewareGenerator.generate(componentInstanceSymbol, taggingResolver);
}
@@ -65,4 +64,24 @@ public class Experiments {
e.printStackTrace();
}
}
+
+ public static TaggingResolver createSymTabAndTaggingResolver(String... modelPath) {
+ Scope scope = createSymTab(modelPath);
+ TaggingResolver tagging = new TaggingResolver(scope, Arrays.asList(modelPath));
+ TagMinMaxTagSchema.registerTagTypes(tagging);
+ TagTableTagSchema.registerTagTypes(tagging);
+ TagBreakpointsTagSchema.registerTagTypes(tagging);
+ TagExecutionOrderTagSchema.registerTagTypes(tagging);
+ TagInitTagSchema.registerTagTypes(tagging);
+ TagThresholdTagSchema.registerTagTypes(tagging);
+ TagDelayTagSchema.registerTagTypes(tagging);
+ return tagging;
+ }
+
+
+ private void generateEMADL(String qualifiedName) throws IOException, TemplateException {
+ Path modelPath = Paths.get(MODELS_PATH);
+ Generator gen = new Generator();
+ gen.generate(modelPath, qualifiedName);
+ }
}
diff --git a/TorcsEMAMGenerator/src/main/models/dp/Alexnet.emadl b/TorcsEMAMGenerator/src/main/models/dp/Alexnet.emadl
new file mode 100644
index 0000000000000000000000000000000000000000..e3b1ee3452534221e66e47d33d4d8cfef5ec35ad
--- /dev/null
+++ b/TorcsEMAMGenerator/src/main/models/dp/Alexnet.emadl
@@ -0,0 +1,47 @@
+component Alexnet{
+ ports in Z(0:255)^{3, 224, 224} image,
+ out Q(0:1)^{10,1,1} predictions;
+
+ implementation CNN {
+
+ def split1(i){
+ [i] ->
+ Convolution(kernel=(5,5), channels=128) ->
+ Lrn(nsize=5, alpha=0.0001, beta=0.75) ->
+ Pooling(pool_type="max", kernel=(3,3), stride=(2,2), padding="no_loss") ->
+ Relu()
+ }
+ def split2(i){
+ [i] ->
+ Convolution(kernel=(3,3), channels=192) ->
+ Relu() ->
+ Convolution(kernel=(3,3), channels=128) ->
+ Pooling(pool_type="max", kernel=(3,3), stride=(2,2), padding="no_loss") ->
+ Relu()
+ }
+ def fc(){
+ FullyConnected(units=4096) ->
+ Relu() ->
+ Dropout()
+ }
+
+ image ->
+ Convolution(kernel=(11,11), channels=96, stride=(4,4), padding="no_loss") ->
+ Lrn(nsize=5, alpha=0.0001, beta=0.75) ->
+ Pooling(pool_type="max", kernel=(3,3), stride=(2,2), padding="no_loss") ->
+ Relu() ->
+ Split(n=2) ->
+ split1(i=[0|1]) ->
+ Concatenate() ->
+ Convolution(kernel=(3,3), channels=384) ->
+ Relu() ->
+ Split(n=2) ->
+ split2(i=[0|1]) ->
+ Concatenate() ->
+ fc(->=2) ->
+ FullyConnected(units=10) ->
+ Softmax() ->
+ predictions
+
+ }
+}
\ No newline at end of file
diff --git a/TorcsEMAMGenerator/resources/dp/Drivercontroller.emam b/TorcsEMAMGenerator/src/main/models/dp/Drivercontroller.emam
similarity index 100%
rename from TorcsEMAMGenerator/resources/dp/Drivercontroller.emam
rename to TorcsEMAMGenerator/src/main/models/dp/Drivercontroller.emam
diff --git a/TorcsEMAMGenerator/resources/dp/Drivercontroller.tag b/TorcsEMAMGenerator/src/main/models/dp/Drivercontroller.tag
similarity index 100%
rename from TorcsEMAMGenerator/resources/dp/Drivercontroller.tag
rename to TorcsEMAMGenerator/src/main/models/dp/Drivercontroller.tag
diff --git a/TorcsEMAMGenerator/resources/dp/Featureextraction.emam b/TorcsEMAMGenerator/src/main/models/dp/Featureextraction.emam
similarity index 100%
rename from TorcsEMAMGenerator/resources/dp/Featureextraction.emam
rename to TorcsEMAMGenerator/src/main/models/dp/Featureextraction.emam
diff --git a/TorcsEMAMGenerator/resources/dp/Featureextraction.tag b/TorcsEMAMGenerator/src/main/models/dp/Featureextraction.tag
similarity index 100%
rename from TorcsEMAMGenerator/resources/dp/Featureextraction.tag
rename to TorcsEMAMGenerator/src/main/models/dp/Featureextraction.tag
diff --git a/TorcsEMAMGenerator/resources/dp/Imagepreprocessing.emam b/TorcsEMAMGenerator/src/main/models/dp/Imagepreprocessing.emam
similarity index 100%
rename from TorcsEMAMGenerator/resources/dp/Imagepreprocessing.emam
rename to TorcsEMAMGenerator/src/main/models/dp/Imagepreprocessing.emam
diff --git a/TorcsEMAMGenerator/resources/dp/Imagepreprocessing.tag b/TorcsEMAMGenerator/src/main/models/dp/Imagepreprocessing.tag
similarity index 100%
rename from TorcsEMAMGenerator/resources/dp/Imagepreprocessing.tag
rename to TorcsEMAMGenerator/src/main/models/dp/Imagepreprocessing.tag
diff --git a/TorcsEMAMGenerator/resources/dp/Safetycontroller.emam b/TorcsEMAMGenerator/src/main/models/dp/Safetycontroller.emam
similarity index 100%
rename from TorcsEMAMGenerator/resources/dp/Safetycontroller.emam
rename to TorcsEMAMGenerator/src/main/models/dp/Safetycontroller.emam
diff --git a/TorcsEMAMGenerator/resources/dp/Safetycontroller.tag b/TorcsEMAMGenerator/src/main/models/dp/Safetycontroller.tag
similarity index 100%
rename from TorcsEMAMGenerator/resources/dp/Safetycontroller.tag
rename to TorcsEMAMGenerator/src/main/models/dp/Safetycontroller.tag