Skip to content

Instantly share code, notes, and snippets.

@tasosxak
Created April 28, 2022 13:00
Show Gist options
  • Save tasosxak/d3cdb95eb1c73ae0047621d818a83d0a to your computer and use it in GitHub Desktop.
Save tasosxak/d3cdb95eb1c73ae0047621d818a83d0a to your computer and use it in GitHub Desktop.
FMI Master with runtime monitor in C++ (DEPLOY_TEMPLATE.cpp)
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <string>
#include <cstring>
#include <fmi2Functions.h>
#include <fmi2FunctionTypes.h>
#include <iostream>
#include <jni.h>
using namespace std;
int main(int argc, char **argv) {
/* Create JVM instance in order to load scala code */
JavaVM *jvm; /* denotes a Java VM */
JNIEnv *env; //<!-- same as yours
JavaVMInitArgs vm_args; /* JDK/JRE 6 VM initialization arguments */
JavaVMOption* options = new JavaVMOption[1];
options[0].optionString = "-Djava.class.path=/usr/lib/java:/home/siemens/dejavu/dir/dejavu.jar:/usr/share/scala-2.11/lib/scala-library.jar :/home/siemens/dejavu/out/examples/speedlimit/TraceMonitor.jar";
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 1;
vm_args.options = options;
vm_args.ignoreUnrecognized = false;
/* load and initialize a Java VM, return a JNI interface
* pointer in env */
JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
// First get the class that contains the method you need to call
jclass tracemonitor_class = env->FindClass("TraceMonitor");
// Get the method that you want to call
jmethodID main_method = env->GetStaticMethodID(tracemonitor_class, "eval", "(Ljava/lang/String;)Z");
int ret = EXIT_SUCCESS;
fmi2Real tstart = 0.0;
fmi2Real tcur = tstart;
fmi2Real hstep = 0.2;
fmi2Real tend = 7.0;
void *handle;
fmi2InstantiateTYPE* (fmi2Instantiate);
fmi2EnterInitializationModeTYPE* (fmi2EnterInitializationMode);
fmi2ExitInitializationModeTYPE* (fmi2ExitInitializationMode);
fmi2SetRealTYPE* (fmi2SetReal);
fmi2GetRealTYPE* (fmi2GetReal);
fmi2DoStepTYPE* (fmi2DoStep);
void (*set_inverted_map)(int,string);
char *error;
handle = dlopen ("bip_example/binaries/linux64/bip_example.so", RTLD_LAZY);
if (!handle) {
fprintf (stderr, "%s\n", dlerror());
exit(1);
}
dlerror(); /* Clear any existing error */
fmi2Instantiate = (fmi2InstantiateTYPE*) dlsym(handle, "fmi2Instantiate");
fmi2EnterInitializationMode = (fmi2EnterInitializationModeTYPE*) dlsym(handle, "fmi2EnterInitializationMode");
fmi2ExitInitializationMode = (fmi2ExitInitializationModeTYPE*) dlsym(handle, "fmi2ExitInitializationMode");
fmi2SetReal = (fmi2SetRealTYPE*) dlsym(handle, "fmi2SetReal");
fmi2GetReal = (fmi2GetRealTYPE*) dlsym(handle, "fmi2GetReal");
fmi2DoStep = (fmi2DoStepTYPE*) dlsym(handle, "fmi2DoStep");
set_inverted_map = (void (*)(int, std::string)) dlsym(handle, "set_inverted_map");
if ((error = dlerror()) != NULL) {
fprintf (stderr, "%s\n", error);
exit(1);
}
cout<<"CALL fmi2Instantiate...\n";
fmi2Component c = (*fmi2Instantiate)("prModel", fmi2CoSimulation , "prModel", "resource/location", NULL, true, true);
(*set_inverted_map)(100, "ROOT.environment._id__inputIndex");
//(*set_inverted_map)(101, "ROOT.environment._id__time");
(*set_inverted_map)(102, "ROOT.camera._id__inputIndex");
(*set_inverted_map)(103, "ROOT.perception._id__inputIndex");
(*set_inverted_map)(104, "ROOT.perception._id__result");
(*set_inverted_map)(105, "ROOT.controller._id__speed");
(*set_inverted_map)(106, "ROOT.controller._id__speedLimit");
(*set_inverted_map)(107, "ROOT.controller._id__deltaSpeed");
(*set_inverted_map)(108, "ROOT.controller._id__zero");
(*set_inverted_map)(109, "ROOT.brake._id__deltaSpeed");
(*set_inverted_map)(110, "ROOT.throttle._id__deltaSpeed");
(*set_inverted_map)(111, "ROOT.speedSensor._id__speed");
(*set_inverted_map)(112, "ROOT.speedSensor._id__deltaSpeed");
const unsigned int vr[] = {100,/*101,*/ 102,103,104,105,106,107,108,109,110,111,112};
fmi2Real values[] = {1,/*10,*/ 0,0,0,0,0,0,0,0,0,100,0};
cout<<"CALL fmi2SetReal...\n";
(*fmi2SetReal)(c, vr, 12, values);
cout<<"CALL fmi2EnterInitializationMode...\n";
(*fmi2EnterInitializationMode)(c);
cout<<"CALL fmi2ExitInitializationMode...\n";
(*fmi2ExitInitializationMode)(c);
tcur = tstart;
while(tcur<tend){
fmi2Boolean newStep = fmi2True;
fmi2Real val[12];
cout<<"tcur: "<<tcur<<'\n';
//cout<<"CALL fmi2DoStep...\n";
fmi2DoStep(c, tcur,hstep, newStep);
//cout<<"CALL fmi2GetReal...\n";
fmi2GetReal(c, vr, 12, val);
cout<<"Speed:"<<val[4]<<endl;
cout<<"Speed Limit:"<<val[5]<<endl;
tcur += hstep;
/* SEND EVENT TO RUNTIME MONITOR */
string nativeString;
nativeString+="speed,";
nativeString+=to_string((int)(val[5]-val[4]));
/* call scala function 'eval' for the evaluation of the property */
env->CallStaticBooleanMethod(tracemonitor_class, main_method, env->NewStringUTF(nativeString.c_str()));
}
cout<<"Simulation finished.\n";
dlclose(handle);
return ret;
}
@tasosxak
Copy link
Author

I defined a property for the vehicle in order to keep the speed lower or equal than speed limit of the current traffic sign.

// speed(carspeed-speedlimit)
prop speed : exists diff . (speed(diff) & (diff  >= 0))

The log of the Master + Runtime monitor:


ADDPORTsendInputADDPORTgetInputADDPORTgetInputInitialADDPORTnoInputADDPORTcaptureADDPORTsendInputADDPORTgetInputADDPORTsendResultADDPORTnoDetectionADDPORTinferenceADDPORTgetSpeedLimitADDPORTgetSpeedADDPORTbrakeADDPORTthrottleADDPORTnoSpeedChangeADDPORTbrakeADDPORTchangeSpeedADDPORTthrottleADDPORTchangeSpeedADDPORTgetSpeedADDPORTchangeSpeedCALL fmi2Instantiate...
logAll ~ fmi2Instantiate: Model instance created.
CALL fmi2SetReal...
fmi2SetReal: (Value Reference 100, Name: ROOT.environment._id__inputIndex Value: 1)
fmi2SetReal: (Value Reference 102, Name: ROOT.camera._id__inputIndex Value: 0)
fmi2SetReal: (Value Reference 103, Name: ROOT.perception._id__inputIndex Value: 0)
fmi2SetReal: (Value Reference 104, Name: ROOT.perception._id__result Value: 0)
fmi2SetReal: (Value Reference 105, Name: ROOT.controller._id__speed Value: 0)
fmi2SetReal: (Value Reference 106, Name: ROOT.controller._id__speedLimit Value: 0)
fmi2SetReal: (Value Reference 107, Name: ROOT.controller._id__deltaSpeed Value: 0)
fmi2SetReal: (Value Reference 108, Name: ROOT.controller._id__zero Value: 0)
fmi2SetReal: (Value Reference 109, Name: ROOT.brake._id__deltaSpeed Value: 0)
fmi2SetReal: (Value Reference 110, Name: ROOT.throttle._id__deltaSpeed Value: 0)
fmi2SetReal: (Value Reference 111, Name: ROOT.speedSensor._id__speed Value: 100)
fmi2SetReal: (Value Reference 112, Name: ROOT.speedSensor._id__deltaSpeed Value: 0)
CALL fmi2EnterInitializationMode...
logAll ~ fmi2EnterInitializationMode: Go into initialization mode.
progress ~ Starting initialization.
Launcher address: 0x56431a188470
Launcher initialize()
Launcher initialize(): New reference engine...creation
Launcher initialize(): New reference engine...completed
Launcher initialize(): New logger...creation
Launcher initialize(): New logger...completed
Launcher initialize(): New random scheduler...creation
Launcher initialize(): New random scheduler...completed
Launcher initialize(): scheduler initialize...creation
[BIP ENGINE]: BIP Engine (version 2022.04.141246-DEV )
[BIP ENGINE]: 
[BIP ENGINE]: initialize components...
[BIP ENGINE]: random scheduling based on seed=1651151092
Launcher initialize(): scheduler initialize...completed
Launcher initialize(): completed
Launcher initialization completed
progress ~ Initialization complete.
CALL fmi2ExitInitializationMode...
logAll ~ fmi2ExitInitializationMode: Go out from initialization mode.
tcur: 0
[BIP ENGINE]: state #0: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getInputInitial: environment.getInputInitial()
[BIP ENGINE]: -> choose [0] ROOT.getInputInitial: environment.getInputInitial()
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 0)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 0)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 0)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 0)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 0)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 0)
Speed:0
Speed Limit:0
Could not load BDD package buddy: Can't load library: /home/siemens/bip/examples/master_example/libbuddy.so
tcur: 0.2
[BIP ENGINE]: state #1: 1 interaction:
[BIP ENGINE]:   [0] ROOT.capture: environment.sendInput(d=1;) camera.capture(d=0;)
[BIP ENGINE]: -> choose [0] ROOT.capture: environment.sendInput(d=1;) camera.capture(d=0;)
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 0)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 0)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 0)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 0)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 0)
Speed:0
Speed Limit:0
tcur: 0.4
[BIP ENGINE]: state #2: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getPerceptionInput: camera.sendInput(d=1;) perception.getInput(d=0;)
[BIP ENGINE]: -> choose [0] ROOT.getPerceptionInput: camera.sendInput(d=1;) perception.getInput(d=0;)
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 0)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 0)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 0)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 0)
Speed:0
Speed Limit:0
tcur: 0.6
[BIP ENGINE]: state #3: 1 interaction:
[BIP ENGINE]:   [0] ROOT.inference: perception.inference()
[BIP ENGINE]: -> choose [0] ROOT.inference: perception.inference()
1
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 50)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 0)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 0)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 0)
Speed:0
Speed Limit:0
tcur: 0.8
[BIP ENGINE]: state #4: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getSpeedLimit: perception.sendResult(d=50;) controller.getSpeedLimit(d=0;)
[BIP ENGINE]: -> choose [0] ROOT.getSpeedLimit: perception.sendResult(d=50;) controller.getSpeedLimit(d=0;)

�[31;43m New detection �[0m Speed limit: 50,000000 km/h 
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 50)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 0)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 50)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 0)
Speed:0
Speed Limit:50
tcur: 1
[BIP ENGINE]: state #5: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getSpeed: speedSensor.getSpeed(d=100;) controller.getSpeed(d=0;)
[BIP ENGINE]: -> choose [0] ROOT.getSpeed: speedSensor.getSpeed(d=100;) controller.getSpeed(d=0;)

�[30;47m Current speed: 100,000000 km/h �[0m
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 50)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 50)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 0)
Speed:100
Speed Limit:50

*** Property speed violated on event number 6:

#########################################################
#### speed(-50)
#########################################################

tcur: 1.2
[BIP ENGINE]: state #6: 1 interaction:
[BIP ENGINE]:   [0] ROOT.brakeCommand: controller.brake(d=-50;) brake.brake(d=0;)
[BIP ENGINE]: -> choose [0] ROOT.brakeCommand: controller.brake(d=-50;) brake.brake(d=0;)
�[01;31m Depress brake!�[0m
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 50)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 50)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 0)
Speed:100
Speed Limit:50

*** Property speed violated on event number 7:

#########################################################
#### speed(-50)
#########################################################

tcur: 1.4
[BIP ENGINE]: state #7: 1 interaction:
[BIP ENGINE]:   [0] ROOT.brakeAction: brake.changeSpeed(d=-50;) speedSensor.changeSpeed(d=0;) environment.getInput()
[BIP ENGINE]: -> choose [0] ROOT.brakeAction: brake.changeSpeed(d=-50;) speedSensor.changeSpeed(d=0;) environment.getInput()
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 50)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 50)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -50)
Speed:100
Speed Limit:50

*** Property speed violated on event number 8:

#########################################################
#### speed(-50)
#########################################################

tcur: 1.6
[BIP ENGINE]: state #8: 1 interaction:
[BIP ENGINE]:   [0] ROOT.capture: environment.sendInput(d=2;) camera.capture(d=1;)
[BIP ENGINE]: -> choose [0] ROOT.capture: environment.sendInput(d=2;) camera.capture(d=1;)
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 1)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 50)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 50)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -50)
Speed:100
Speed Limit:50

*** Property speed violated on event number 9:

#########################################################
#### speed(-50)
#########################################################

tcur: 1.8
[BIP ENGINE]: state #9: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getPerceptionInput: camera.sendInput(d=2;) perception.getInput(d=1;)
[BIP ENGINE]: -> choose [0] ROOT.getPerceptionInput: camera.sendInput(d=2;) perception.getInput(d=1;)
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 50)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 50)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -50)
Speed:100
Speed Limit:50

*** Property speed violated on event number 10:

#########################################################
#### speed(-50)
#########################################################

tcur: 2
[BIP ENGINE]: state #10: 1 interaction:
[BIP ENGINE]:   [0] ROOT.inference: perception.inference()
[BIP ENGINE]: -> choose [0] ROOT.inference: perception.inference()
1
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 80)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 50)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -50)
Speed:100
Speed Limit:50

*** Property speed violated on event number 11:

#########################################################
#### speed(-50)
#########################################################

tcur: 2.2
[BIP ENGINE]: state #11: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getSpeedLimit: perception.sendResult(d=80;) controller.getSpeedLimit(d=50;)
[BIP ENGINE]: -> choose [0] ROOT.getSpeedLimit: perception.sendResult(d=80;) controller.getSpeedLimit(d=50;)

�[31;43m New detection �[0m Speed limit: 80,000000 km/h 
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 80)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 100)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -50)
Speed:100
Speed Limit:80

*** Property speed violated on event number 12:

#########################################################
#### speed(-20)
#########################################################

tcur: 2.4
[BIP ENGINE]: state #12: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getSpeed: speedSensor.getSpeed(d=50;) controller.getSpeed(d=100;)
[BIP ENGINE]: -> choose [0] ROOT.getSpeed: speedSensor.getSpeed(d=50;) controller.getSpeed(d=100;)

�[30;47m Current speed: 50,000000 km/h �[0m
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 80)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 0)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -50)
Speed:50
Speed Limit:80
tcur: 2.6
[BIP ENGINE]: state #13: 1 interaction:
[BIP ENGINE]:   [0] ROOT.throttleCommand: controller.throttle(d=30;) throttle.throttle(d=0;)
[BIP ENGINE]: -> choose [0] ROOT.throttleCommand: controller.throttle(d=30;) throttle.throttle(d=0;)
�[01;32m Depress throttle!�[0m
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 80)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -50)
Speed:50
Speed Limit:80
tcur: 2.8
[BIP ENGINE]: state #14: 1 interaction:
[BIP ENGINE]:   [0] ROOT.throttleAction: throttle.changeSpeed(d=30;) speedSensor.changeSpeed(d=-50;) environment.getInput()
[BIP ENGINE]: -> choose [0] ROOT.throttleAction: throttle.changeSpeed(d=30;) speedSensor.changeSpeed(d=-50;) environment.getInput()
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 80)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:50
Speed Limit:80
tcur: 3
[BIP ENGINE]: state #15: 1 interaction:
[BIP ENGINE]:   [0] ROOT.capture: environment.sendInput(d=3;) camera.capture(d=2;)
[BIP ENGINE]: -> choose [0] ROOT.capture: environment.sendInput(d=3;) camera.capture(d=2;)
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 2)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 80)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:50
Speed Limit:80
tcur: 3.2
[BIP ENGINE]: state #16: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getPerceptionInput: camera.sendInput(d=3;) perception.getInput(d=2;)
[BIP ENGINE]: -> choose [0] ROOT.getPerceptionInput: camera.sendInput(d=3;) perception.getInput(d=2;)
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 80)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:50
Speed Limit:80
tcur: 3.4
[BIP ENGINE]: state #17: 1 interaction:
[BIP ENGINE]:   [0] ROOT.inference: perception.inference()
[BIP ENGINE]: -> choose [0] ROOT.inference: perception.inference()
-1
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: -1)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:50
Speed Limit:80
tcur: 3.6
[BIP ENGINE]: state #18: 1 interaction:
[BIP ENGINE]:   [0] ROOT.noDetection: perception.noDetection() environment.getInput()
[BIP ENGINE]: -> choose [0] ROOT.noDetection: perception.noDetection() environment.getInput()
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: -1)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:50
Speed Limit:80
tcur: 3.8
[BIP ENGINE]: state #19: 1 interaction:
[BIP ENGINE]:   [0] ROOT.capture: environment.sendInput(d=4;) camera.capture(d=3;)
[BIP ENGINE]: -> choose [0] ROOT.capture: environment.sendInput(d=4;) camera.capture(d=3;)
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 3)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: -1)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:50
Speed Limit:80
tcur: 4
[BIP ENGINE]: state #20: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getPerceptionInput: camera.sendInput(d=4;) perception.getInput(d=3;)
[BIP ENGINE]: -> choose [0] ROOT.getPerceptionInput: camera.sendInput(d=4;) perception.getInput(d=3;)
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: -1)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:50
Speed Limit:80
tcur: 4.2
[BIP ENGINE]: state #21: 1 interaction:
[BIP ENGINE]:   [0] ROOT.inference: perception.inference()
[BIP ENGINE]: -> choose [0] ROOT.inference: perception.inference()
1
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 40)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 80)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:50
Speed Limit:80
tcur: 4.4
[BIP ENGINE]: state #22: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getSpeedLimit: perception.sendResult(d=40;) controller.getSpeedLimit(d=80;)
[BIP ENGINE]: -> choose [0] ROOT.getSpeedLimit: perception.sendResult(d=40;) controller.getSpeedLimit(d=80;)

�[31;43m New detection �[0m Speed limit: 40,000000 km/h 
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 40)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 50)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 40)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:50
Speed Limit:40

*** Property speed violated on event number 23:

#########################################################
#### speed(-10)
#########################################################

tcur: 4.6
[BIP ENGINE]: state #23: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getSpeed: speedSensor.getSpeed(d=80;) controller.getSpeed(d=50;)
[BIP ENGINE]: -> choose [0] ROOT.getSpeed: speedSensor.getSpeed(d=80;) controller.getSpeed(d=50;)

�[30;47m Current speed: 80,000000 km/h �[0m
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 40)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 40)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -50)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:80
Speed Limit:40

*** Property speed violated on event number 24:

#########################################################
#### speed(-40)
#########################################################

tcur: 4.8
[BIP ENGINE]: state #24: 1 interaction:
[BIP ENGINE]:   [0] ROOT.brakeCommand: controller.brake(d=-40;) brake.brake(d=-50;)
[BIP ENGINE]: -> choose [0] ROOT.brakeCommand: controller.brake(d=-40;) brake.brake(d=-50;)
�[01;31m Depress brake!�[0m
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 40)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 40)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:80
Speed Limit:40

*** Property speed violated on event number 25:

#########################################################
#### speed(-40)
#########################################################

tcur: 5
[BIP ENGINE]: state #25: 1 interaction:
[BIP ENGINE]:   [0] ROOT.brakeAction: brake.changeSpeed(d=-40;) speedSensor.changeSpeed(d=30;) environment.getInput()
[BIP ENGINE]: -> choose [0] ROOT.brakeAction: brake.changeSpeed(d=-40;) speedSensor.changeSpeed(d=30;) environment.getInput()
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 40)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 40)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -40)
Speed:80
Speed Limit:40

*** Property speed violated on event number 26:

#########################################################
#### speed(-40)
#########################################################

tcur: 5.2
[BIP ENGINE]: state #26: 1 interaction:
[BIP ENGINE]:   [0] ROOT.capture: environment.sendInput(d=5;) camera.capture(d=4;)
[BIP ENGINE]: -> choose [0] ROOT.capture: environment.sendInput(d=5;) camera.capture(d=4;)
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 6)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 4)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 40)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 40)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -40)
Speed:80
Speed Limit:40

*** Property speed violated on event number 27:

#########################################################
#### speed(-40)
#########################################################

tcur: 5.4
[BIP ENGINE]: state #27: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getPerceptionInput: camera.sendInput(d=5;) perception.getInput(d=4;)
[BIP ENGINE]: -> choose [0] ROOT.getPerceptionInput: camera.sendInput(d=5;) perception.getInput(d=4;)
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 6)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 40)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 40)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -40)
Speed:80
Speed Limit:40

*** Property speed violated on event number 28:

#########################################################
#### speed(-40)
#########################################################

tcur: 5.6
[BIP ENGINE]: state #28: 1 interaction:
[BIP ENGINE]:   [0] ROOT.inference: perception.inference()
[BIP ENGINE]: -> choose [0] ROOT.inference: perception.inference()
1
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 6)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 70)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 40)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -40)
Speed:80
Speed Limit:40

*** Property speed violated on event number 29:

#########################################################
#### speed(-40)
#########################################################

tcur: 5.8
[BIP ENGINE]: state #29: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getSpeedLimit: perception.sendResult(d=70;) controller.getSpeedLimit(d=40;)
[BIP ENGINE]: -> choose [0] ROOT.getSpeedLimit: perception.sendResult(d=70;) controller.getSpeedLimit(d=40;)

�[31;43m New detection �[0m Speed limit: 70,000000 km/h 
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 6)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 70)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 80)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 70)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -40)
Speed:80
Speed Limit:70

*** Property speed violated on event number 30:

#########################################################
#### speed(-10)
#########################################################

tcur: 6
[BIP ENGINE]: state #30: 1 interaction:
[BIP ENGINE]:   [0] ROOT.getSpeed: speedSensor.getSpeed(d=40;) controller.getSpeed(d=80;)
[BIP ENGINE]: -> choose [0] ROOT.getSpeed: speedSensor.getSpeed(d=40;) controller.getSpeed(d=80;)

�[30;47m Current speed: 40,000000 km/h �[0m
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 6)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 70)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 70)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -40)
Speed:40
Speed Limit:70
tcur: 6.2
[BIP ENGINE]: state #31: 1 interaction:
[BIP ENGINE]:   [0] ROOT.throttleCommand: controller.throttle(d=30;) throttle.throttle(d=30;)
[BIP ENGINE]: -> choose [0] ROOT.throttleCommand: controller.throttle(d=30;) throttle.throttle(d=30;)
�[01;32m Depress throttle!�[0m
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 6)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 70)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 70)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: -40)
Speed:40
Speed Limit:70
tcur: 6.4
[BIP ENGINE]: state #32: 1 interaction:
[BIP ENGINE]:   [0] ROOT.throttleAction: throttle.changeSpeed(d=30;) speedSensor.changeSpeed(d=-40;) environment.getInput()
[BIP ENGINE]: -> choose [0] ROOT.throttleAction: throttle.changeSpeed(d=30;) speedSensor.changeSpeed(d=-40;) environment.getInput()
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 6)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 70)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 70)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 70)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:40
Speed Limit:70
tcur: 6.6
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 6)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 70)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 70)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 70)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:40
Speed Limit:70
tcur: 6.8
fmi2GetReal:(Variable Reference: 100, Name: ROOT.environment._id__inputIndex, Value: 6)
fmi2GetReal:(Variable Reference: 102, Name: ROOT.camera._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 103, Name: ROOT.perception._id__inputIndex, Value: 5)
fmi2GetReal:(Variable Reference: 104, Name: ROOT.perception._id__result, Value: 70)
fmi2GetReal:(Variable Reference: 105, Name: ROOT.controller._id__speed, Value: 40)
fmi2GetReal:(Variable Reference: 106, Name: ROOT.controller._id__speedLimit, Value: 70)
fmi2GetReal:(Variable Reference: 107, Name: ROOT.controller._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 108, Name: ROOT.controller._id__zero, Value: 0)
fmi2GetReal:(Variable Reference: 109, Name: ROOT.brake._id__deltaSpeed, Value: -40)
fmi2GetReal:(Variable Reference: 110, Name: ROOT.throttle._id__deltaSpeed, Value: 30)
fmi2GetReal:(Variable Reference: 111, Name: ROOT.speedSensor._id__speed, Value: 70)
fmi2GetReal:(Variable Reference: 112, Name: ROOT.speedSensor._id__deltaSpeed, Value: 30)
Speed:40
Speed Limit:70
Simulation finished.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment