EmbeddedMontiArc issueshttps://git.rwth-aachen.de/groups/monticore/EmbeddedMontiArc/-/issues2022-07-08T15:51:43+02:00https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/35Generation Test fails2022-07-08T15:51:43+02:00Evgeny KusmenkoGeneration Test fails@nils_baumann the generation test fails in master, please fix the expected target code@nils_baumann the generation test fails in master, please fix the expected target codeNils BaumannNils Baumannhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/CNNArch2Gluon/-/issues/7Generalize classification specific code to be able to tackle regression tasks...2022-05-04T14:02:01+02:00Jonas RitzGeneralize classification specific code to be able to tackle regression tasks as wellhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/CNNArch2Gluon/-/blob/master/src/main/resources/templates/gluon/CNNSupervisedTrainer.ftl#L608
This code line e.g. will cause a termination when training a regression task n...https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/CNNArch2Gluon/-/blob/master/src/main/resources/templates/gluon/CNNSupervisedTrainer.ftl#L608
This code line e.g. will cause a termination when training a regression task network.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/34MXNet Docker Build fails2022-07-08T15:52:15+02:00Evgeny KusmenkoMXNet Docker Build failsEvgeny KusmenkoEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/28link to docker files not working2021-11-10T11:05:51+01:00Jonas Ritzlink to docker files not workingThe link to the docker files in the first line of subsection Prerequisites in readme.md does not seem to work properly. (404)The link to the docker files in the first line of subsection Prerequisites in readme.md does not seem to work properly. (404)https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/basic-simulator/-/issues/5OpenGL visualization2021-10-20T17:38:42+02:00Jean MeuriceOpenGL visualization## Problem
- Right now, the 2D visualization of the maps and vehicles uses the `Graphics2D` java class inside the `Swing` components.
- This is not a very efficient rendering method, especially for large scale cities.
- It is also not p...## Problem
- Right now, the 2D visualization of the maps and vehicles uses the `Graphics2D` java class inside the `Swing` components.
- This is not a very efficient rendering method, especially for large scale cities.
- It is also not precise: the polygon geometry can only be passed with integer pixel positions.
## Solution
Use OpenGL rendering.
- As OpenGL library (for example): [JOGL](https://jogamp.org/jogl/www/)
- [JOGL in Swing](https://www.tutorialspoint.com/jogl/jogl_canvas_with_swing.htm) (Still up-to-date ?)
- [OpenGL 4 JOGL sample](https://github.com/jvm-graphics-labs/hello-triangle)
- TODOs:
- Test a simple 2D triangle with a basic shader.
- Make it build and run using the JOGL maven artifacts.
- Make a *colored triangle* shader with an orthogonal view matrix, test binding it to the map controls (position, zoom). Render a simple triangle (or 2)
- Make a *colored line* shader, same view matrix, test a simple outline.
- Generate the building geometry in one VBO/VAO/EBO set.
- Use the already split convex parts
- The *convex* polygon parts can be rendered using the `GL_TRIANGLE_FAN` drawing mode
- In combination with the [Primitive Restart](https://stackoverflow.com/questions/4386861/opengl-jogl-multiple-triangle-fans-in-a-vertex-array)
- Use an Element-Buffer
- Use the `PRIMITIVE_RESTART` index to separate triangle fans for different polygons
- Since we only want to draw contiguous vertices, the `glMultiDrawElements()` method can be useful
- Generate the road geometry (or visualization lines)
- Generate the vehicle geometry (one VBO/EBO/VAO set)
- Same triangle shader, but give it a view+model matrix (pre-multiplied)
- All the debug lines/elements (AABB, building outlines, ...) can be in their own VBO/EBO/VAO.
- **Check the thread interaction between Swing and OpenGL**. The OpenGL calls are not thread-safe for a given context. Be sure that the OpenGL calls happen in the correct thread.
- [Swing Threads](http://www.javapractices.com/topic/TopicAction.do?Id=153)
**Note**: The existing visualization already "pre-generates" the geometry in some way to save computation. Changing to save this geometry in OpenGL buffer would not be a big change.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/27Data loader Target code updaten2021-11-19T14:58:24+01:00Evgeny KusmenkoData loader Target code updatenPaul SchlackPaul Schlackhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/basic-simulator/-/issues/4Time-control bugs2021-10-20T17:39:36+02:00Jean MeuriceTime-control bugs## Problem
The time-control of the visualization does not seem to be correct.
For example, with the "simulation-speed" set to low values (1/4, 1/8, ...) the control loop can stop advancing the simulation.
Generally, the visualization ...## Problem
The time-control of the visualization does not seem to be correct.
For example, with the "simulation-speed" set to low values (1/4, 1/8, ...) the control loop can stop advancing the simulation.
Generally, the visualization does not handle the rendering time well in order to prioritize the simulation speed.
## Fixes
A correct time-control loop should adapt the FPS to keep-up the desired simulation speed up to a certain minimum FPS limit.
Right now, the updates are handled in a java `Timer` callback. This is used in order to be in the GUI thread. However this makes the control loop logic hard. Ideally, the control logic should be as presented [here](https://gafferongames.com/post/fix_your_timestep/) (with fixed time-steps).
**If the [Async Simulation and Visualization](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/basic-simulator/-/issues/3) are implemented again**, the visualization control loop would be completely different since the simulation would not have to be updated in parallel.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/commons/-/issues/2JSON extensions2021-10-20T17:32:39+02:00Jean MeuriceJSON extensionsImprove the usability of the JSON system for the configuration and scenarios.
Ideas:
- Support hex & binary
- Allow comments
- Units
- Duration: alternative representations (with units)
- Reference to other files: A special tag could be...Improve the usability of the JSON system for the configuration and scenarios.
Ideas:
- Support hex & binary
- Allow comments
- Units
- Duration: alternative representations (with units)
- Reference to other files: A special tag could be used to refer to a file relative to the current one. It would then be substituted. This mechanism could also be used as "template". The referred file would be loaded first, but the 'calling' file could still specify fields that would override the loaded file.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/simulation/-/issues/23Async Simulation and Visualization + Data-Export system2021-10-20T17:43:40+02:00Jean MeuriceAsync Simulation and Visualization + Data-Export systemSee [basic-sim issue](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/basic-simulator/-/issues/3)See [basic-sim issue](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/basic-simulator/-/issues/3)https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/basic-simulator/-/issues/3Async Simulation and Visualization + Data-Export system2021-10-20T17:40:34+02:00Jean MeuriceAsync Simulation and Visualization + Data-Export systemIdea: Run the simulations in another thread.
Advantages:
- Some performance improvement since one thread can run the simulation full speed, the other render the visualization.
- (Re-)develop the simulation data exporting. The relevant s...Idea: Run the simulations in another thread.
Advantages:
- Some performance improvement since one thread can run the simulation full speed, the other render the visualization.
- (Re-)develop the simulation data exporting. The relevant simulation data-points are saved per frame (can be a different rate then the simulation rate). The simulation "client" would register which data-points should be exported (to save bandwidth).
- The basic-sim can store the frames for a simulation. This allows to watch a simulation as it is simulated, but also to watch back/navigate the simulation using a timeline.
- This simplifies the time control logic between visualization and simulation.
- The data-export system can also directly be used to save simulation results.
- The data-export system could also be used to watch simulations remotely (would update the *visualization* project)
- A solid data-export system would make exporting any data (also inspection data for plotting, ...) cleaner and more generic.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/basic-simulator/-/issues/2Feature Request: Scenario folders2021-10-20T17:57:37+02:00TamfaetFeature Request: Scenario foldersIt would be really convenient to provide a path to other scenario files. Thus project files can be contained in their corresponding projects and no need for copy-pasting would be needed.It would be really convenient to provide a path to other scenario files. Thus project files can be contained in their corresponding projects and no need for copy-pasting would be needed.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/basic-simulator/-/issues/1Laggy simulation2021-10-20T17:46:55+02:00TamfaetLaggy simulationIt seems, that the simulator needs to wait internally for things. When I run it, my CPU utilization is at maximum at 15 %. Still the Simulator is not able to reach 30 FPS.
Maybe some parallelization could help there.It seems, that the simulator needs to wait internally for things. When I run it, my CPU utilization is at maximum at 15 %. Still the Simulator is not able to reach 30 FPS.
Maybe some parallelization could help there.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/simulation/-/issues/22Improve the "Running"-Part for the basic simulator2021-02-26T16:24:51+01:00Ahmed DiabImprove the "Running"-Part for the basic simulator- For people who are not familiar with the term "compiling", it will be difficult to realize that the `install.sh` file in the root directory is meant by it.
- Also, you will have to double-check that the contents of this file is for co...- For people who are not familiar with the term "compiling", it will be difficult to realize that the `install.sh` file in the root directory is meant by it.
- Also, you will have to double-check that the contents of this file is for compiling, since the term `install.sh` is not mentioned in the wiki.
see -> [The basic simulator](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/simulation/-/wikis/user-docs/The-basic_simulator#running)
I would prefer to mention for the compiling file with the term `install.sh` or `install.bat`Evgeny KusmenkoEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/16Generator cannot resolve port2020-11-11T13:13:04+01:00Mattis HoppeGenerator cannot resolve portI have 3 emadl files containing:
```
component Add{
ports
in Q num1,
in Q num2,
out Q erg;
implementation Math{
erg = num1 + num2;
}
}
```
```
component Add1{
ports
in Q testin,
out Q testout;
instance Add add;
connect te...I have 3 emadl files containing:
```
component Add{
ports
in Q num1,
in Q num2,
out Q erg;
implementation Math{
erg = num1 + num2;
}
}
```
```
component Add1{
ports
in Q testin,
out Q testout;
instance Add add;
connect testin -> add.num1;
connect testin -> add.num2;
connect add.erg -> testout;
}
```
```
component Add2{
ports
in Q test1,
out Q test2;
instance Add1 adder;
connect test1 -> adder.testin;
connect adder.testout -> test2;
}
```
Building Add and Add1 works just fine, but as soon as I try to build Add2 I get following Error-message:
```
[WARN] name of connector's source/target does has two parts: instance.port, cannot resolve port
Exception in thread "main" java.lang.NullPointerException
at de.monticore.lang.monticar.generator.cpp.converter.PortConverter.convertPortSymbolToVariable(PortConverter.java:59)
at de.monticore.lang.monticar.generator.cpp.converter.PortConverter.convertPortSymbolToVariable(PortConverter.java:48)
at de.monticore.lang.monticar.generator.cpp.converter.PortConverter.getVariableForPortSymbol(PortConverter.java:33)
at de.monticore.lang.monticar.generator.cpp.converter.ComponentConverterMethodGeneration.generateConnectors(ComponentConverterMethodGeneration.java:85)
at de.monticore.lang.monticar.generator.cpp.converter.ComponentConverterMethodGeneration.generateExecuteMethodInner(ComponentConverterMethodGeneration.java:70)
at de.monticore.lang.monticar.generator.cpp.converter.ComponentConverterMethodGeneration.generateExecuteMethod(ComponentConverterMethodGeneration.java:61)
at de.monticore.lang.monticar.generator.cpp.converter.ComponentConverter.convertComponentSymbolToBluePrint(ComponentConverter.java:99)
at de.monticore.lang.monticar.generator.cpp.converter.ComponentConverter.convertComponentSymbolToBluePrint(ComponentConverter.java:368)
at de.monticore.lang.monticar.generator.cpp.LanguageUnitCPP.generateBluePrints(LanguageUnitCPP.java:64)
at de.monticore.lang.monticar.generator.cpp.GeneratorCPP.generateString(GeneratorCPP.java:159)
at de.monticore.lang.monticar.emadl.generator.EMADLGenerator.generateSubComponents(EMADLGenerator.java:636)
at de.monticore.lang.monticar.emadl.generator.EMADLGenerator.generateComponent(EMADLGenerator.java:549)
at de.monticore.lang.monticar.emadl.generator.EMADLGenerator.generateSubComponents(EMADLGenerator.java:648)
at de.monticore.lang.monticar.emadl.generator.EMADLGenerator.generateComponent(EMADLGenerator.java:549)
at de.monticore.lang.monticar.emadl.generator.EMADLGenerator.generateStrings(EMADLGenerator.java:395)
at de.monticore.lang.monticar.emadl.generator.EMADLGenerator.generateFiles(EMADLGenerator.java:219)
at de.monticore.lang.monticar.emadl.generator.EMADLGenerator.generate(EMADLGenerator.java:125)
at de.monticore.lang.monticar.emadl.generator.EMADLGeneratorCli.runGenerator(EMADLGeneratorCli.java:148)
at de.monticore.lang.monticar.emadl.generator.EMADLGeneratorCli.main(EMADLGeneratorCli.java:72)
```
Changing variablenames etc. does not work either. For building I am using version 0.4.3 of the generatorEvgeny KusmenkoEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/applications/mnistcalculator/-/issues/10Caffe 2 and MXNet backends fail2021-12-07T12:52:33+01:00Evgeny KusmenkoCaffe 2 and MXNet backends failCaffe 2 and MXNet versions fail and the pipeline has been disabledCaffe 2 and MXNet versions fail and the pipeline has been disabledhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/simulation/-/issues/20Scenario/Tasks/Objectives2020-11-17T17:08:54+01:00Jean MeuriceScenario/Tasks/Objectives## Goal
Design and implement the internal objects for describing simulation and vehicle goals.
## Ideas
- A scenario contains **Tasks** for every Vehicle.
- The Tasks are embedded in the VehicleConfig and initiated by the **VehicleBuilde...## Goal
Design and implement the internal objects for describing simulation and vehicle goals.
## Ideas
- A scenario contains **Tasks** for every Vehicle.
- The Tasks are embedded in the VehicleConfig and initiated by the **VehicleBuilder**.
- The simulator keeps a reference list to "TaskRunners" (Vehicle would implement that interface) to check their completion status (or failure).
- The simulator calls "Status checks" on all the registered task runners after every simulation step.
- The Simulator.finished() method checks whether tasks are still pending or the maximum simulation duration is elapsed.Evgeny KusmenkoHengwen Zhanghengwen.zhang@rwth-aachen.deJean MeuriceEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/MontiMath/-/issues/5Rename Rules2020-08-06T14:36:31+02:00Evgeny KusmenkoRename RulesStatement -> EMAStatement
Expression -> EMAExpression
@christian.kirchhof fyiStatement -> EMAStatement
Expression -> EMAExpression
@christian.kirchhof fyiHan ZhangHan Zhanghttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/utilities/monticore-lsp-commons/-/issues/3Multiple models bases in same workspace2020-03-08T13:35:26+01:00Alexander David HellwigMultiple models bases in same workspaceSituation:
```
workspace_root
+ model_root_a
+ /pack/a/model.lang <- includes package pack.a;
...
+ model_root_b
+ /other/pack/b/model2.lang <- includes package other.pack.b;
```
- [x] ModelFileCache creates temp Paths for each ...Situation:
```
workspace_root
+ model_root_a
+ /pack/a/model.lang <- includes package pack.a;
...
+ model_root_b
+ /other/pack/b/model2.lang <- includes package other.pack.b;
```
- [x] ModelFileCache creates temp Paths for each model root
- [x] Symtabs are created accordinglyhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/utilities/monticore-lsp-commons/-/issues/2Catch UnsupportedOperation in MutliLangDocumentService2020-03-07T18:18:46+01:00Alexander David HellwigCatch UnsupportedOperation in MutliLangDocumentServicehttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/45add largestContour command2020-01-13T14:14:20+01:00Ahmed Diabadd largestContour commandEvgeny KusmenkoAhmed DiabEvgeny Kusmenko