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