EmbeddedMontiArc issueshttps://git.rwth-aachen.de/groups/monticore/EmbeddedMontiArc/-/issues2019-06-14T12:30:29+02:00https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/9Add Env variable to specify where mqtt is installed2019-06-14T12:30:29+02:00Alexander David HellwigAdd Env variable to specify where mqtt is installedGeorg VinogradovGeorg Vinogradovhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/server/-/issues/28Set Charging Station as new target2019-10-09T10:50:39+02:00Simon KißmannSet Charging Station as new targetImplement a method that saves the current target and sets the nearest charging station as the new target to navigate to. Once the vehicle is fully charged and can leave the station, the saved original target is set as the new target.Implement a method that saves the current target and sets the nearest charging station as the new target to navigate to. Once the vehicle is fully charged and can leave the station, the saved original target is set as the new target.Simon KißmannSimon Kißmannhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/server/-/issues/27Flag for pausing the autopilot2019-10-09T10:50:53+02:00Simon KißmannFlag for pausing the autopilotSet Flag (boolean charging) that pauses the autopilot (and the car) while in the charging station. Either set by the autopilot or charging station. Unchecked when charging process is finished (battery charge = 100%?)Set Flag (boolean charging) that pauses the autopilot (and the car) while in the charging station. Either set by the autopilot or charging station. Unchecked when charging process is finished (battery charge = 100%?)Simon KißmannSimon Kißmannhttps://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/applications/mnistcalculator/-/issues/6Create integration test for tensorflow2019-09-26T14:00:35+02:00Evgeny KusmenkoCreate integration test for tensorflow- create integration test
- add information about tensorflow backend in accordance with the other backends- create integration test
- add information about tensorflow backend in accordance with the other backendsFelix HermsenFelix Hermsenhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/11Dependency Issue2020-10-29T16:21:54+01:00Evgeny KusmenkoDependency Issuemvn clean install -s settings.xml can't get monticar commons dependencymvn clean install -s settings.xml can't get monticar commons dependencyhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/hardware_emulator/-/issues/2Hardware Emulator can only be used once before restart2019-06-24T12:31:48+02:00Hengwen Zhanghengwen.zhang@rwth-aachen.deHardware Emulator can only be used once before restartThe bug should be at
https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/hardware_emulator/blob/master/hardware_emulator/src/emulator/hardware_emulator.cpp#L157
The `manager.path` should be copied before calling `append`.The bug should be at
https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/hardware_emulator/blob/master/hardware_emulator/src/emulator/hardware_emulator.cpp#L157
The `manager.path` should be copied before calling `append`.Jean MeuriceJean Meuricehttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/server/-/issues/26Error when Pushing: "... not allowed to push code to protected branches on th...2019-10-09T10:52:05+02:00ulfetError when Pushing: "... not allowed to push code to protected branches on this project"I created a subproject on Maven, and added my code, as we talked with Mr. Kusmenko.
However, when I try to push, I get the following errors:
`remote: GitLab: You are not allowed to push code to protected branches on this project.`
Norm...I created a subproject on Maven, and added my code, as we talked with Mr. Kusmenko.
However, when I try to push, I get the following errors:
`remote: GitLab: You are not allowed to push code to protected branches on this project.`
Normally, I would have created another branch and would push there, but as far as I remember, this is not what I told by Kusmenko.
For a temporary fix,
I am temporarily creating a branch for BatteryInterface group and I will push my code there.Evgeny KusmenkoulfetEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/server/-/issues/25Not Able to Build Project after Changes2019-06-02T01:27:17+02:00ulfetNot Able to Build Project after ChangesGreetings Mr. Kusmenko,
After (I believe) the changes that are made to Maven dependency nexus,
we are not able to run commands such as "mvn install", as it produces messages along the lines:
`Could not resolve dependencies for project...Greetings Mr. Kusmenko,
After (I believe) the changes that are made to Maven dependency nexus,
we are not able to run commands such as "mvn install", as it produces messages along the lines:
`Could not resolve dependencies for project montisim:server:jar:1.0.7: The following artifacts could not be resolved: de.se_rwth.commons:se-commons-logging:jar:1.7.8, montisim:commons:jar:1.0.6, montisim-controller:library:jar:1.0.1, montisim-controller:control:jar:1.0.1, montisim-controller:navigation:jar:1.0.1, montisim-simulation:environment:jar:1.0.7, montisim-simulation:vehicle:jar:1.0.7, montisim-simulation:sensors:jar:1.0.7, montisim-simulation:network:jar:1.0.7, montisim-simulation:simulator:jar:1.0.7, montisim:rmi-model-server:jar:1.1.0, montisim:example-autopilot-ema:jar:0.0.5, de.monticore.lang.montisim:SimLang:jar:1.0.1, de.monticore.lang.montisim:Util:jar:1.0.1, de.monticore.lang.montisim:Weather:jar:1.0.1: Failure to find de.se_rwth.commons:se-commons-logging:jar:1.7.8 in http://repository.jboss.org/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss-public-repository has elapsed or updates are forced`
I was trying to create subprojects for server, yet I have seen this problem, and stalled my progress, as I cannot double check if I am doing it right or not.
(assigning issue to your account too to notify you)Evgeny KusmenkoulfetEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/CNNArch2Gluon/-/issues/3SLE: use tagging for training generation2020-07-01T13:24:12+02:00Evgeny KusmenkoSLE: use tagging for training generationuse data from symboltable to generate training
component instance tags override component tags
Gluon inherits from MxNet generatoruse data from symboltable to generate training
component instance tags override component tags
Gluon inherits from MxNet generatorBaran DalgicAbdallah AtouaniBaran Dalgichttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/CNNArch2MXNet/-/issues/1SLE: Use tags to generate training2020-07-01T13:24:00+02:00Evgeny KusmenkoSLE: Use tags to generate traininguse data from symboltable to generate training
component instance tags override component tagsuse data from symboltable to generate training
component instance tags override component tagsBaran DalgicAbdallah AtouaniBaran Dalgichttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/languages/CNNArchLang/-/issues/3SLE: Tag Symboltable2020-07-01T13:23:47+02:00Evgeny KusmenkoSLE: Tag SymboltableAdd Tagging information to symbol tableAdd Tagging information to symbol tableBaran DalgicAbdallah AtouaniBaran Dalgichttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/applications/mnistcalculator/-/issues/4Readme doesn't fit to current folder structure2019-07-25T15:42:38+02:00Jonas EckhardtReadme doesn't fit to current folder structure## Issue
Readme.md for caffe2 currently states this command for using the DigitCalculator:
`./build/src/cpp/DigitCalculator test_img/2.jpg test_img/3.jpg test_img/4.png test_img/6.png test_img/2.jpg test_img/3.jpg`
With a clean clone o...## Issue
Readme.md for caffe2 currently states this command for using the DigitCalculator:
`./build/src/cpp/DigitCalculator test_img/2.jpg test_img/3.jpg test_img/4.png test_img/6.png test_img/2.jpg test_img/3.jpg`
With a clean clone of the repository the folder `test_img` is not available and therefore images cannot be loaded.
## Possible solutions:
* Change the command in the Readme.md file to:
`./build/src/cpp/DigitCalculator resources/images/2.jpg resources/images/3.jpg resources/images/4.png resources/images/6.png resources/images/2.jpg resources/images/3.jpg`
* create folder test_img with images insideEvgeny KusmenkoJonas EckhardtEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/server/-/issues/20ChargingStation model (visualisation)2019-10-09T10:50:59+02:00Markus HorlemannChargingStation model (visualisation)ChargingStation model for the visualisationChargingStation model for the visualisationSabrina WolffMarkus HorlemannUta SkorzinskiSabrina Wolffhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/server/-/issues/19Check Battery reach after a certain amount of time2019-10-09T10:51:07+02:00Ghost UserCheck Battery reach after a certain amount of timeOne Method which checks the Battery reach and the distance to the target and if the reach is lower then the distance to the target, then call a method which change the behavior.
Plus checks if battery state is lower than a certain perce...One Method which checks the Battery reach and the distance to the target and if the reach is lower then the distance to the target, then call a method which change the behavior.
Plus checks if battery state is lower than a certain percentage (20%?).
Checks once at the start of the trip (setting the first target) and updates together with actuator update?Simon KißmannSimon Kißmannhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/server/-/issues/18Create a CharingStation class2019-06-19T11:07:51+02:00Markus HorlemannCreate a CharingStation classChargingStation class with attributs:
- location
- state (occupied/or not)
- timeLeft until it is not longer occupied
- consumption
methods:
- getter/setter
- calculate new consumption
- communication with the environment (map/autopilot)ChargingStation class with attributs:
- location
- state (occupied/or not)
- timeLeft until it is not longer occupied
- consumption
methods:
- getter/setter
- calculate new consumption
- communication with the environment (map/autopilot)Sabrina WolffMarkus HorlemannUta SkorzinskiSabrina Wolffhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/simulators/server/-/issues/17Create a Charging Station Map2019-08-29T12:13:14+02:00Sabrina WolffCreate a Charging Station MapWork with OpenStreetMap to integrate the Charging Station.Work with OpenStreetMap to integrate the Charging Station.Sabrina WolffMarkus HorlemannUta SkorzinskiSabrina Wolffhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/30Execute with logging: Name collision2019-05-23T16:10:24+02:00Alexander David HellwigExecute with logging: Name collisionfunction arma::log(as in logarithm) has a name collision with log(as in write to log)function arma::log(as in logarithm) has a name collision with log(as in write to log)Alexander David HellwigAlexander David Hellwighttps://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/applications/carlacomponents/-/issues/10Create a emam component that reads and writes to carla using ROS2019-06-14T14:16:59+02:00Alexander David HellwigCreate a emam component that reads and writes to carla using ROSE.g. Accelerate and stop on collisionE.g. Accelerate and stop on collision