27 #ifndef SIMDRIVER_VELOCITYHORIZON_H 28 #define SIMDRIVER_VELOCITYHORIZON_H 33 #include "model_collection.h" 57 std::deque <PredictionPoint> _elements{};
69 void init(
double offset,
unsigned int noOfElements) {
72 _offset = std::floor(offset);
75 if (_elements.size() > 0) _elements.clear();
78 for (
size_t i = 0;
i < noOfElements; ++
i)
93 for (
auto &e : _elements) {
104 size_t ib = _elements.back().i;
107 for (
size_t i = 0;
i + 1 < i0; ++
i) {
110 size_t i1 = ib +
i + 1;
113 _elements.pop_front();
114 _elements.emplace_back(
newPoint(i1));
128 double s0 = _elements.at(0).s;
132 if(s >= _elements.back().s)
133 return _elements.size() - 1;
135 return (
unsigned int) std::floor(s - s0);
147 double s0 = _elements.at(0).s;
151 if(s >= _elements.back().s)
152 return _elements.size() - 1;
154 return (
unsigned int) std::ceil(s - s0);
175 for(
auto &e : _elements)
192 for (
unsigned int i = i0;
i <= i1; ++
i) {
195 auto &e = _elements.at(
i);
215 auto &e = _elements.at(
i);
235 double mean(
double s0,
double s1,
double delta = 1.0) {
239 double vMin = INFINITY;
246 for (
unsigned int i = i0;
i <= i1; ++
i) {
250 auto s = _elements.at(
i).s;
253 auto f = agent_model::scale(
s, s1, s0, delta);
265 return v / (double) j;
282 auto &e = _elements.at(i);
283 return (std::min)((std::min)(e.vCont, e.vRule), _vMax);
295 double s = _offset + (double) i;
307 #endif //SIMDRIVER_VELOCITYHORIZON_H A class to store the internal horizon.
Definition: VelocityHorizon.h:40
A class store a prediction point.
Definition: VelocityHorizon.h:45
double vCont
The continuous velocity (e.g. curve speed)
Definition: VelocityHorizon.h:50
double sCont
The continuous measure point.
Definition: VelocityHorizon.h:51
PredictionPoint newPoint(size_t i)
Definition: VelocityHorizon.h:293
unsigned int getIndexBefore(double s)
Definition: VelocityHorizon.h:126
unsigned int getIndexAfter(double s)
Definition: VelocityHorizon.h:145
double vRule
The planned velocity at the point.
Definition: VelocityHorizon.h:49
size_t i
Reference index of the point.
Definition: VelocityHorizon.h:46
void init(double offset, unsigned int noOfElements)
Definition: VelocityHorizon.h:69
Definition: DistanceTimeInterval.h:33
double mean(double s0, double s1, double delta=1.0)
Definition: VelocityHorizon.h:235
void update(double s)
Updates the horizon to the new reference position Removes all elements with a distance smaller than z...
Definition: VelocityHorizon.h:89
void resetSpeedRule()
Definition: VelocityHorizon.h:173
void updateContinuousPoint(double s, double v)
Definition: VelocityHorizon.h:211
double s
The longitudinal reference position of the point.
Definition: VelocityHorizon.h:47
double ds
The actual distance to the point.
Definition: VelocityHorizon.h:48
void updateSpeedRuleInInterval(double s0, double s1, double v)
Definition: VelocityHorizon.h:187
double getSpeedAt(unsigned int i)
Definition: VelocityHorizon.h:279
void setMaxVelocity(double v)
Definition: VelocityHorizon.h:163