EmbeddedMontiArc issueshttps://git.rwth-aachen.de/groups/monticore/EmbeddedMontiArc/-/issues2019-11-07T21:31:09+01:00https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/RMIModelServer/-/issues/7Runtime model exchange2019-11-07T21:31:09+01:00Evgeny KusmenkoRuntime model exchangeCurrent situation: dll/so is fixed; if a new autopilot model is provided RmiModelServer needs to be recompiled.
Goal: Make the RMIModelServer parameterizable, e.g. via its command line interface with a new model, so that we don't need t...Current situation: dll/so is fixed; if a new autopilot model is provided RmiModelServer needs to be recompiled.
Goal: Make the RMIModelServer parameterizable, e.g. via its command line interface with a new model, so that we don't need to rebuild the RMIModelServer, whenever we want to test a new autopilot.
@jean.meurice for infoWei LuWei Lu2019-11-08https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/32Issues with dynamic using2019-07-11T17:19:56+02:00Wei XuIssues with dynamic usingSome bugs occurred when dynamic ports are used in cooperative Autopilot development.
1. Generation of connecting method<br>
Duplicate Method for the copy of dynamic message inputs shows as follows:<br>
```js
dynamic component St...Some bugs occurred when dynamic ports are used in cooperative Autopilot development.
1. Generation of connecting method<br>
Duplicate Method for the copy of dynamic message inputs shows as follows:<br>
```js
dynamic component Statusduplicate{
ports
// copy statusmessage for dupilcate in ports
dynamic in Statusmessage status_msg[0:32],
dynamic out Statusmessage status_msg1[0:32],
...
out Statusmessage smsg;
@ status_msg::connect{/*interface for dynamic ports*/}
implementation Math{
for i = 1:32
if is_connected(status_msg,i)
smsg = status_msg(i);
if ports_connect(status_msg1, i, smsg)
status_msg1(i) = smsg;
end
....
end
end
}
}
```
Once the Statusduplicate component is instantiated is the structure like follows
```js
dynamic component Autopilot{
ports
dynamic in Statusmessage status_msg[0:32],
...
instance Statusduplicate s_dup;
instance Autopilot1 ap1;
@ status_msg::connect{
connect status_msg[?] -> s_dup.status_msg[?];
}
@ s_dup.status_msg1::connect{
connect s_dup.status_msg1 -> ap1.status_msg[?];
}
}
dynamic component Autopilot1{
ports
dynamic in Statusmessage status_msg[0:32],
...
instance Statusduplicate s_dup;
@ status_msg::connect{
connect status_msg[?] -> s_dup.status_msg[?];
}
}
```
the generated c++ file of Statusduplicate instance in Autopilot1 wont't contain the ports_connect methods.
2. When there are dynamic connects and static connects in one component, sometimes the execution order in generated c++ file is not correct, but it happens irregularly, so current the detailed problems cannot locate.
3. Generation of C++ files costs too long time when there are dynamic ports and connects in the model, the generation of around 4000 lines component costs over 10 hours(without dynamic using only 10 - 20 minutes), it may due to some redundant processes. Evgeny KusmenkoEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/EmbeddedMontiArcDL/-/issues/6referenced components have an empty package name2019-07-01T11:34:40+02:00Baran Dalgicreferenced components have an empty package name## Problem
The type attribute of *EMAComponentInstanceSymbol* objects always returns a reference with an empty package name (empty string). This is also the case if the parent component has an explicit package. As a result, we are not a...## Problem
The type attribute of *EMAComponentInstanceSymbol* objects always returns a reference with an empty package name (empty string). This is also the case if the parent component has an explicit package. As a result, we are not able to assign tags
without fully qualifying the instance type.
## Example
The combination of this two models leads to an Alexnet instance with an empty package name instead of *tagging*.
[Alexnet.emadl](/uploads/83565010f980da674398a4cfe9ccc4a0/Alexnet.emadl)
[Parent.emadl](/uploads/7654661f3843f793c1ccb13043f19fb2/Parent.emadl)Evgeny KusmenkoEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/31Issues of dynamic port and connect2019-06-06T10:56:43+02:00Wei XuIssues of dynamic port and connectProblems occurs when the dynamic port and connect are applied in the Autopilot model.<br>
1. Dynamic ports free problem <br>
After every execution of Autopilot model, dynamic input and output ports should be free by the `free_#port_n...Problems occurs when the dynamic port and connect are applied in the Autopilot model.<br>
1. Dynamic ports free problem <br>
After every execution of Autopilot model, dynamic input and output ports should be free by the `free_#port_name#` method in Autopilot.h, which is called in AutopilotAdapter.cpp. <br>
For simple component like:<br>
```js
dynamic component Autopilot {
port
dynamic in Q input[0:32],
dynamic out Q output[0:32];
@input::connect{
connect input[?] -> output[?];
}
}
```
Free of dynamic inputs and outputs works, when we use the `free_input` method of autopilot.h in AutopilotAdapter.cpp, like follows:<br>
```js
bool free_input(int input_indexref)
{
if( (input_indexref < 0) || (32 <= input_indexref) || (!__input_connected[input_indexref]) ){ return false;}
__input_free_request.push(input_indexref);
dynamicfree();
return true;
}
```
It‘s because in the `dynamicfree()` method, `__output_free_request` will be pushed and then free, when it connects to in the dynamic input port.
```js
void __event_body_free_EventHandler_1_(){
while(input_has_free_request()){
int _input_dynPortID = input_free_request_front();
for(long i = __event_connects_EventHandler_1_.size()-1; i >= 0; --i){
int* _connected_idxs = __event_connects_EventHandler_1_.at(i);
if( (_input_dynPortID == _connected_idxs[0]) ){
int _output_dynPortID = _connected_idxs[1]; __output_free_request.push(_output_dynPortID);
if(__parent != NULL){__parent_dynamic(__parent, false, true);}
if(__output_free_request.front() == _output_dynPortID){ __output_free_request.pop(); }
dynamicconnect_remove(&__dynamic_double_connect, NULL, &(input[_input_dynPortID]), &(output[_output_dynPortID]));
__event_connects_EventHandler_1_.erase(__event_connects_EventHandler_1_.begin()+i);
__output_connected[_output_dynPortID] = false;
free(_connected_idxs);
}
}
}
}
```
But when component is defined as follows:
```js
dynamic component Autopilot {
port
dynamic in Q input[0:32],
dynamic out Q output[0:32];
instance Autopilot1 ap1;
@ input::connect{
connect input[?] -> ap1.input[?];
}
@ ap1.output1::connect{
connect ap1.output1[?] -> output[?];
}
}
```
```js
dynamic component Autopilot1{
port
dynamic in Q input[0:32],
dynamic out Q output1[0:32],
dynamic out Q output2[0:32];
@ input::connect{}
implementation Math{
for i = 1:32
if is_connected(input,i)
if ports_connect(output1, i, input(i))
output1(i) = input(i);
end
if ports_connect(output2, i, input(i))
output2(i) = input(i);
end
end
end
}
}
```
Free of dynamic output ports depends on the free event:
```js
void __event_body_free_EventHandler_3_(){
while(ap1.output1_has_free_request()){
int _ap1_output1_dynPortID = ap1.output1_free_request_front();
for(long i = __event_connects_EventHandler_3_.size()-1; i >= 0; --i){
int* _connected_idxs = __event_connects_EventHandler_3_.at(i);
if( (_ap1_output1_dynPortID == _connected_idxs[0]) ){
int _output_dynPortID = _connected_idxs[1]; __output_free_request.push(_output_dynPortID);
if(__parent != NULL){__parent_dynamic(__parent, false, true);}
if(__output_free_request.front() == _output_dynPortID){ __output_free_request.pop(); }
dynamicconnect_remove(&__dynamic_double_connect, NULL, &(ap1.output1[_ap1_output1_dynPortID]), &(output[_output_dynPortID]));
__event_connects_EventHandler_3_.erase(__event_connects_EventHandler_3_.begin()+i);
__output_connected[_output_dynPortID] = false;
free(_connected_idxs);
}
}
}
}
```
But, the `ap1.output1_has_free_request()` is never pushed in instance ap1, because there is no connect between the dynamic input ports and output1 ports in instance ap1, so dynamic output ports of Autopilot can not be free correctly.<br>
When we use the ports_free method in Autopilot1 component:
```js
dynamic component Autopilot1{
port
dynamic in Q input[0:32],
dynamic out Q output1[0:32],
dynamic out Q output2[0:32];
@ input::connect{}
implementation Math{
for i = 1:32
if is_connected(input,i)
if ports_connect(output1, i, input(i))
output1(i) = input(i);
end
Z r = ports_free(output1,i);
if ports_connect(output2, i, input(i))
output2(i) = input(i);
end
Z r = ports_free(output2,i);
end
end
}
}
```
The free request can be pushed into `ap1.output1_has_free_request()` with `__ports_free_1` method:
```js
bool __ports_free_1(int idx0){
if((idx0 < 0) || (32 <= idx0) || (!__output1_connected[idx0])){return false;}__output1_free_request.push(idx0);
if(__parent != NULL){__parent_dynamic(__parent, false, true);}
__output1_connected[idx0] = false;
return true;
}
```
Problem is that `__output1_connected[idx0]` can not be set to false in this method, it means this port is free now and next connect will occupy this port, which leads to error that no matter how many inputs request there is just one output connect request.<br>
Also, when component like follows, there are two Autopilot1 instances:
```js
dynamic component Autopilot {
port
dynamic in Q input[0:32],
dynamic out Q output[0:32];
instance Autopilot1 ap1,ap2;
@ input::connect{
connect input[?] -> ap1.input[?];
}
@ ap1.output1::connect{
connect ap1.output1[?] -> ap2.input[?];
}
@ ap2.output1::connect{
connect ap2.output1[?] -> output[?];
}
}
```
```js
dynamic component Autopilot1{
port
dynamic in Q input[0:32],
dynamic out Q output1[0:32],
dynamic out Q output2[0:32];
@ input::connect{}
implementation Math{
for i = 1:32
if is_connected(input,i)
if ports_connect(output1, i, input(i))
output1(i) = input(i);
end
Z r = ports_free(output1,i);
if ports_connect(output2, i, input(i))
output2(i) = input(i);
end
Z r = ports_free(output2,i);
end
end
}
}
```
Free of dynamic output ports depends on the free event:
```js
void __event_body_free_EventHandler_4_(){
while(ap2.output1_has_free_request()){
int _ap2_output1_dynPortID = ap2.output1_free_request_front();
for(long i = __event_connects_EventHandler_4_.size()-1; i >= 0; --i){
int* _connected_idxs = __event_connects_EventHandler_4_.at(i);
if( (_ap2_output1_dynPortID == _connected_idxs[0]) ){
int _output_dynPortID = _connected_idxs[1]; __output_free_request.push(_output_dynPortID);
if(__parent != NULL){__parent_dynamic(__parent, false, true);}
if(__output_free_request.front() == _output_dynPortID){ __output_free_request.pop(); }
dynamicconnect_remove(&__dynamic_double_connect, NULL, &(ap2.output1[_ap2_output1_dynPortID]), &(output[_output_dynPortID]));
__event_connects_EventHandler_4_.erase(__event_connects_EventHandler_4_.begin()+i);
__output_connected[_output_dynPortID] = false;
free(_connected_idxs);
}
}
}
}
```
Free of dynamic output port in Autopilot depends on `ap2.output1_has_free_request()`, although ports_free method is defined in Autopilot1, there is no `__ports_free#number#` method in generated autopilot_ap2.h file. It means that ports_free method can just be converted in the outer layer of the whole component.<br>
The structure like this problem occurs component is very important in the autopilot. Because there are several subcomponents, which all need the content of dynamic input. But once dynamic input port connects to the dynamic port in sub-component, connect request of dynamic input will be pop, so we need the component like Autopilot1, which aims to copy the connect request of dynamic input port.<br>
When the dynamic port in Autopilot can not be free, after several frames of simulation, all ports will be occupied and over flow. JVM is broken down and shows RUNTIME error.
2. Problems in instance ports<br>
When the structure of Autopilot Model like follows:
```js
dynamic component Autopilot {
port
dynamic in Q input[0:32],
dynamic out Q output[0:32];
instance Autopilot1 ap1[0:32];
instance Autopilot2 ap2[0:32];
instance Autopilot3 ap3;
@ input::connect{
connect input[?] -> ap1[?].input;
connect ap1[?].output1 -> ap3.input1[?];
connect ap1[?].output2 -> ap3.input2[?];
connect input[?] -> ap2[?].input;
connect ap2[?].output3 -> ap3.input3[?];
connect ap2[?].output4 -> ap3.input4[?];
}
@ ap3.output1::connect{
connect ap3.output1[?] -> output[?];
}
@ ap3.output2::connect{
connect ap3.output2[?] -> output[?];
}
}
```
```js
component Autopilot1{
port
in Q input,
out Q output1,
out Q output2;
implementation Math{
output1 = input;
output2 = input;
}
}
```
```js
component Autopilot2{
port
in Q input,
out Q output3,
out Q output4;
implementation Math{
output3 = input;
output4 = input;
}
}
```
```js
dynamic component Autopilot4{
port
dynamic in Q input1[0:32],
dynamic in Q input2[0:32],
dynamic out Q output[0:32];
@input1::connect{}
@input2::connect{}
implementation Math{
for i = 1:32
if is_connected(input1,i)&&is_connected(input2,i)
if ports_connect(output,i,42.123)
output(i) = input1(i) + input2(i);
end
end
end
}
}
```
```js
dynamic component Autopilot3{
port
dynamic in Q input1[0:32],
dynamic in Q input2[0:32],
dynamic in Q input3[0:32],
dynamic in Q input4[0:32],
dynamic out Q output1[0:32],
dynamic out Q output2[0:32];
instance Autopilot4 ap4,ap5;
@ input1::connect{
connect input1[?] -> ap4.input1[?];
}
@ input2::connect{
connect input2[?] -> ap4.input2[?];
}
@ ap4.output::connect{
connect ap4.output[?] -> output1[?];
}
@ input3::connect{
connect input3[?] -> ap5.input1[?];
}
@ input4::connect{
connect input4[?] -> ap5.input2[?];
}
@ ap5.output::connect{
connect ap5.output[?] -> output2[?];
}
}
```
The structure can be shown in a Figure:![Structure](/uploads/4e347387c743ee3060d235ac372904c3/Structure.png)
In the generated c++ file of autopilot, there is a undefined connect method `ap3.connect_input1_input2_input3_input4`, which is called in autopilot.h. This leads to the error when c++ files are compiled to dll file.
```js
void __event_body_EventHandler_9_()
{
while(__event_condition_EventHandler_9_()){
int* _connected_idxs = (int *)calloc(7, sizeof(int));
int _input_dynPortID = __input_connect_request.front(); __input_connect_request.pop(); _connected_idxs[0] = _input_dynPortID;
int _ap2_dynINSTID = dynamicconnect(32, __ap2_connected); if( _ap2_dynINSTID < 0 ){ free(_connected_idxs); return; } _connected_idxs[1] = _ap2_dynINSTID;
int _ap1_dynINSTID = dynamicconnect(32, __ap1_connected); if( _ap1_dynINSTID < 0 ){ free(_connected_idxs); return; } _connected_idxs[2] = _ap1_dynINSTID;
int _ap3_input1_dynPortID = -1;
int _ap3_input2_dynPortID = -1;
int _ap3_input3_dynPortID = -1;
int _ap3_input4_dynPortID = -1;
if(!ap3.connect_input1_input2_input3_input4(&_ap3_input1_dynPortID, ap1[_ap1_dynINSTID].output1, &_ap3_input2_dynPortID, ap1[_ap1_dynINSTID].output2, &_ap3_input3_dynPortID, ap2[_ap2_dynINSTID].output3, &_ap3_input4_dynPortID, ap2[_ap2_dynINSTID].output4)){ free(_connected_idxs); return ;}
_connected_idxs[3] = _ap3_input1_dynPortID;_connected_idxs[4] = _ap3_input2_dynPortID;_connected_idxs[5] = _ap3_input3_dynPortID;_connected_idxs[6] = _ap3_input4_dynPortID;
__dynamic_double_connect.push_back({&ap1[_ap1_dynINSTID], &(input[_input_dynPortID]), &(ap1[_ap1_dynINSTID].input)});
__dynamic_double_connect.push_back({&ap3, &(ap1[_ap1_dynINSTID].output1), &(ap3.input1[_ap3_input1_dynPortID])});
__dynamic_double_connect.push_back({&ap3, &(ap1[_ap1_dynINSTID].output2), &(ap3.input2[_ap3_input2_dynPortID])});
__dynamic_double_connect.push_back({&ap2[_ap2_dynINSTID], &(input[_input_dynPortID]), &(ap2[_ap2_dynINSTID].input)});
__dynamic_double_connect.push_back({&ap3, &(ap2[_ap2_dynINSTID].output3), &(ap3.input3[_ap3_input3_dynPortID])});
__dynamic_double_connect.push_back({&ap3, &(ap2[_ap2_dynINSTID].output4), &(ap3.input4[_ap3_input4_dynPortID])});
__event_connects_EventHandler_9_.push_back(_connected_idxs);
}
}
```
3. Port free in Streamtest<br>
Dynamic ports can not be free in current Streamtest project, when dynamic component is tested with TestWrapper and Stream File. Because free_methods of dynamic component are not called. So, the length of Stream data can just be one. Otherwise, it leads to error when tests second group of stream data, the reason is that last used ports are not free.Evgeny KusmenkoEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/RMIModelServer/-/issues/6Exchangeability of HW-Emulator2019-11-14T18:29:19+01:00Evgeny KusmenkoExchangeability of HW-Emulatorden RMI Server so umbauen, dass man per Flag einen Emulator auswählen kann:
- Unicorn
- None
- Predefined (Latenz=const)
Alle Emulatoren müssen von einer gemeinsamen Klasse erben oder ein Emulator-Interface implementieren, um Austauschba...den RMI Server so umbauen, dass man per Flag einen Emulator auswählen kann:
- Unicorn
- None
- Predefined (Latenz=const)
Alle Emulatoren müssen von einer gemeinsamen Klasse erben oder ein Emulator-Interface implementieren, um Austauschbarkeit zu erlauben.
Auch müssen die Parameter auf Sinnhaftigkeit geprüft werden (jeder Emulator braucht ein bestimmtes Set, manche Params schließen andere aus, z.B. macht no_time keinen Sinn in Verbindung mit CPU_freq-Angabe).Jean MeuriceJean Meurice2019-06-12https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/32Autotraining EMADL2CPP2019-05-15T11:33:43+02:00Nicola GattoAutotraining EMADL2CPPThe new version of EMADL2CPP supports the option to start the training of a CNN component automatically. For each CNN component, the training outputs two files: the symbol.json and the parameter file of the neural network. In order to us...The new version of EMADL2CPP supports the option to start the training of a CNN component automatically. For each CNN component, the training outputs two files: the symbol.json and the parameter file of the neural network. In order to use the autotraining function of EMADL2CPP in EMAM2Middleware generator, a cli option is needed to activate it. Furthermore, the compiled executable expects the two output files to be at the relative path "model/name.of.cnnarch.component/". This means, the generated compile.sh should ensure that these files are moved to the correct place.Evgeny KusmenkoEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/9Internal State may prevent multiple sequential executions2019-02-24T20:50:07+01:00Christopher Jan-Steffen BrixInternal State may prevent multiple sequential executionsThere seems to be some internal state which is stored across multiple executions of the `main` in the `EMADLGeneratorCli`.
This causes the following effect: Usually, the unit test `testMultipleInstances` passes without problems. However...There seems to be some internal state which is stored across multiple executions of the `main` in the `EMADLGeneratorCli`.
This causes the following effect: Usually, the unit test `testMultipleInstances` passes without problems. However, adding a [certain new test](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/blob/oneclick_nn_training/src/test/java/de/monticore/lang/monticar/emadl/GenerationTest.java#L205) (which passes) causes it to fail. It now throws a NullPointerException.Evgeny KusmenkoEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/19Interactive overview of clustering results/chooser2019-02-03T11:00:54+01:00Alexander David HellwigInteractive overview of clustering results/chooser```
+-------------------------------+---------+
| | algo1 |
| <visualization of cluster> | >algo2 |
| | ... |
| | |
+------------...```
+-------------------------------+---------+
| | algo1 |
| <visualization of cluster> | >algo2 |
| | ... |
| | |
+-------------------------------+---------+
| |continue |
|<extra info for choosen algo> |cancel |
| | |
+-----------------------------------------+
```https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/server/-/issues/14SFS crash with new physics2019-01-18T01:30:35+01:00Michael OsetinskiSFS crash with new physicsFor a collision visualization I corrected the type check in this line: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/simulation/blob/master/vehicle/src/main/java/simulation/vehicle/PhysicsEngine.java#L77 as described i...For a collision visualization I corrected the type check in this line: https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/simulation/blob/master/vehicle/src/main/java/simulation/vehicle/PhysicsEngine.java#L77 as described in https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/simulation/issues/12 . Then I tried to run a simulation with 2 cars, which collide at an intersection, while having useNewPhysics in `rwth.server.simulation.SimulationController` set to true. This leads to a crash of the SmartFoxServer. I used a custom map, which I appended below. The log of the server console is appended as well.
If I change useNewPhysics to false, the simulation and visualization runs without problems.
[crashLog.txt](/uploads/bd47da5a3ce0bfdfddcbccb4a6c63936/crashLog.txt)
[map.osm](/uploads/a3338003411fce6c9d9cfcb6d2573585/map.osm)https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/16Compare Clustering of flatt Model with previous (Sub)component division2019-01-08T17:17:09+01:00Alexander David HellwigCompare Clustering of flatt Model with previous (Sub)component divisionhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/visualization/-/issues/2Bonus: Develop a GUI to setup simulation2018-12-17T16:28:06+01:00Evgeny KusmenkoBonus: Develop a GUI to setup simulationCurrently, the user is confronted with the simulation screen right away.
Please extend the visualization by a GUI such that:
- the user can set up a new simulation with arbitrarily many vehicles (and vehicle types)
- the user can see a...Currently, the user is confronted with the simulation screen right away.
Please extend the visualization by a GUI such that:
- the user can set up a new simulation with arbitrarily many vehicles (and vehicle types)
- the user can see available maps
- the user can see available simulations (and use them as a template for new simulations)
- the user can download the created simulation as a sim file
- the user can see and replay available simulations
Note: some of the functionality is not provided by the back end yet which is OK.Michael OsetinskiDanilo TrottaMichael Osetinski2019-01-21https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/visualization/-/issues/1deploy.bat2018-12-10T18:01:52+01:00Danilo Trottadeploy.batIn the deploy.bat the line:
`SET TARGET_DIR=target\visualization-1.0.0`
needs to be updated to the newest version.
In my case: `SET TARGET_DIR=target\visualization-1.0.1-SNAPSHOT`
otherwise the files in the target directionary will not...In the deploy.bat the line:
`SET TARGET_DIR=target\visualization-1.0.0`
needs to be updated to the newest version.
In my case: `SET TARGET_DIR=target\visualization-1.0.1-SNAPSHOT`
otherwise the files in the target directionary will not be deployed correctly.
Perhaps adding that information to the Readme would be a good idea.Michael OsetinskiMichael Osetinskihttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/EMAM-showcase/-/issues/2running main.bat error2018-12-10T17:44:03+01:00Danilo Trottarunning main.bat errorAfter the last commit 4 days ago, running the main.bat does not generate the autopilotadapter.dll, instead a error message appears.
With a old PULL from a few weeks ago the main.bat runs fine.After the last commit 4 days ago, running the main.bat does not generate the autopilotadapter.dll, instead a error message appears.
With a old PULL from a few weeks ago the main.bat runs fine.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/EMAM-showcase/-/issues/1Links broken in ReadMe2018-12-10T13:50:18+01:00Danilo TrottaLinks broken in ReadMeAll links in the ReadMe are linking to the old Github page which cannot be found anymore.
ROOT.war cannot be downloaded this way.All links in the ReadMe are linking to the old Github page which cannot be found anymore.
ROOT.war cannot be downloaded this way.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/26Invalid MontiMath functions do not throw an error2022-04-28T12:57:50+02:00Alexander David HellwigInvalid MontiMath functions do not throw an errore.g. `out1 = ... + rand()` generates, but cannot be compiled(as rand is not specific)e.g. `out1 = ... + rand()` generates, but cannot be compiled(as rand is not specific)Jan Philipp HallerJan Philipp Hallerhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/22Automatic stream test generation2018-08-16T17:41:34+02:00Sascha Niklas SchneidersAutomatic stream test generationThe generator should be able to generate a stream test for a given emam model.
This functionality can then be used to add tests for every component.
Together with #23 starting from the version this feature was added, it can be ensured t...The generator should be able to generate a stream test for a given emam model.
This functionality can then be used to add tests for every component.
Together with #23 starting from the version this feature was added, it can be ensured that the generator still behaves the same without comparing the generated source code directly.Sascha Niklas SchneidersSascha Niklas Schneidershttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/21Update EMAM2Cpp in Emam2Wasm2020-07-02T19:24:35+02:00Malte HeithoffUpdate EMAM2Cpp in Emam2WasmIs someone able to include the current version of emam2cpp in emam2wasm?Is someone able to include the current version of emam2cpp in emam2wasm?https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/EmbeddedMontiArcStudio/-/issues/9Failed to start Studio when saved to secondary harddrive2018-07-25T10:40:56+02:00Markus Philipp BauerFailed to start Studio when saved to secondary harddriveMontiArcStudio doesn´t open when it is saved to my secondary harddrive and instead throws out this error message.
```D:\uni\Bachelor arbeit\EmbeddedMontiArcStudioV1.5.2>cd "EmbeddedMontiArcStudio\scripts"
D:\uni\Bachelor arbeit\Embedd...MontiArcStudio doesn´t open when it is saved to my secondary harddrive and instead throws out this error message.
```D:\uni\Bachelor arbeit\EmbeddedMontiArcStudioV1.5.2>cd "EmbeddedMontiArcStudio\scripts"
D:\uni\Bachelor arbeit\EmbeddedMontiArcStudioV1.5.2\EmbeddedMontiArcStudio\scripts>call ide.bat
module.js:559
throw err;
Error: Cannot find module 'D:\uni\Bachelor'
at Function.Module._resolveFilename (module.js:557:15)
at Function.Module._load (module.js:484:25)
at Function.Module.runMain (module.js:703:10)
at startup (bootstrap_node.js:193:16)
at bootstrap_node.js:665:3
child_process.js:614
throw err;
Error: Command failed: "D:\\uni\\Bachelor arbeit\\EmbeddedMontiArcStudioV1.5.2\\EmbeddedMontiArcStudio\\nodejs\\node.exe" D:\uni\Bachelor arbeit\EmbeddedMontiArcStudioV1.5.2\EmbeddedMontiArcStudio\ide\node_modules\get-port-cli\cli.js
module.js:559
throw err;
Error: Cannot find module 'D:\uni\Bachelor'
at Function.Module._resolveFilename (module.js:557:15)
at Function.Module._load (module.js:484:25)
at Function.Module.runMain (module.js:703:10)
at startup (bootstrap_node.js:193:16)
at bootstrap_node.js:665:3
at checkExecSyncError (child_process.js:574:11)
at Object.execSync (child_process.js:611:13)
at module.exports (D:\uni\Bachelor arbeit\EmbeddedMontiArcStudioV1.5.2\EmbeddedMontiArcStudio\ide\node_modules\find-port-sync\index.js:1:112)
at Object.<anonymous> (D:\uni\Bachelor arbeit\EmbeddedMontiArcStudioV1.5.2\EmbeddedMontiArcStudio\ide\server\constants.js:96:16)
at Module._compile (module.js:662:30)
at Object.Module._extensions..js (module.js:673:10)
at Module.load (module.js:575:32)
at tryModuleLoad (module.js:515:12)
at Function.Module._load (module.js:507:3)
at Module.require (module.js:606:17)
```https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/visualisation/-/issues/8Rotate component instance text in Layer 22018-07-19T20:03:11+02:00vonWencksternRotate component instance text in Layer 2see https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/visualisation/issues/6#note_585697
this would save much space for Layer 2see https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/visualisation/issues/6#note_585697
this would save much space for Layer 2toezen1toezen1https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/visualisation/-/issues/7[Bug] Types are displayed wrong at Layer 42018-07-19T23:08:02+02:00vonWenckstern[Bug] Types are displayed wrong at Layer 4@toezen1 You print every matrix type just as `CommonMatrixType` instead of printing the correct type.
Please ask @jean\-marc.ronck how he printed the correct matrix types (e.g. at https://embeddedmontiarc.github.io/MathPrettyPrinter/mon...@toezen1 You print every matrix type just as `CommonMatrixType` instead of printing the correct type.
Please ask @jean\-marc.ronck how he printed the correct matrix types (e.g. at https://embeddedmontiarc.github.io/MathPrettyPrinter/montimath/vanilla/MatrixWithMathExpression/index.html in l. 6 or l. 8)
![image](/uploads/62dbc534db8a1a513e47b1ffd475176a/image.png)
https://embeddedmontiarc.github.io/VisualizationEMAM/models/ObjectDetector/index.html#detection.objectDetector4.spectralClusterer[4]:0toezen1toezen1