Formula Student Autonomous Systems
The code for the main driverless system
Loading...
Searching...
No Matches
scalarValueSensor.cpp
Go to the documentation of this file.
2
3ScalarValueSensor::ScalarValueSensor(double rate, double deadTime)
4{
5 this->rate = rate;
6 this->lastSampleTime = 0.0;
7 this->deadTime = deadTime;
8 this->error_mean = 0.0;
9 this->error_sigma = 0.0;
10}
11
13{
14 config.getElement<double>(&this->rate, "rate");
15 config.getElement<double>(&this->deadTime, "dead_time");
16 config["error"].getElement<double>(&this->error_mean, "mean");
17 config["error"].getElement<double>(&this->error_sigma, "sigma");
18}
19
20bool ScalarValueSensor::RunTick(StampedScalar& in, double time)
21{
22 if (this->sampleReady(time))
23 {
24 StampedScalar value = applyError(in);
25 this->deadTimeQueue.push(value);
26 this->registerSampling();
27 }
28 return availableDeadTime(time);
29}
30
31StampedScalar ScalarValueSensor::applyError(StampedScalar input)
32{
33 std::default_random_engine generator(numFrames);
34 std::normal_distribution<double> distError(error_mean, error_sigma);
35
36 input.data += distError(generator);
37 numFrames += 1;
38 return input;
39}
ConfigElement getElement(string elementName)
bool RunTick(StampedScalar &in, double time)
ScalarValueSensor(double rate, double deadTime)
StampedScalar applyError(StampedScalar input)
void readConfig(ConfigElement &config)
bool sampleReady(double time)
bool availableDeadTime(double time)
std::queue< StampedScalar > deadTimeQueue