35 const std::vector<TrajectoryPoint>& trajectory_points)
37 ACHECK(!trajectory_points.empty())
38 <<
"trajectory_points should NOT be empty()";
47 const double relative_time)
const {
52 auto it_lower = std::lower_bound(begin(), end(), relative_time, comp);
54 if (it_lower == begin()) {
56 }
else if (it_lower == end()) {
57 AWARN <<
"When evaluate trajectory, relative_time(" << relative_time
62 *(it_lower - 1), *it_lower, relative_time);
66 const double epsilon)
const {
69 if (relative_time >= back().relative_time()) {
73 const double relative_time) {
76 auto it_lower = std::lower_bound(begin(), end(), relative_time, func);
77 return std::distance(begin(), it_lower);
82 double dist_sqr_min = std::numeric_limits<double>::max();
84 for (
size_t i = 0; i < size(); ++i) {
86 data()[i].path_point().y());
89 if (dist_sqr < dist_sqr_min) {
90 dist_sqr_min = dist_sqr;
99 double dist_sqr_min = std::numeric_limits<double>::max();
100 size_t index_min = 0;
101 for (
size_t i = 0; i < size(); ++i) {
103 data()[i].path_point().y());
106 if (dist_sqr < dist_sqr_min + buffer) {
107 dist_sqr_min = dist_sqr;
117 CHECK_GT(trajectory_point.
relative_time(), back().relative_time());
119 push_back(trajectory_point);
123 const size_t index)
const {
125 return data()[index];
137 return back().relative_time() - front().relative_time();
144 return back().path_point().s() - front().path_point().s();
Implements a class of 2-dimensional vectors.
double DistanceSquareTo(const Vec2d &other) const
Returns the squared distance to the given vector
size_t QueryNearestPointWithBuffer(const common::math::Vec2d &position, const double buffer) const
const common::TrajectoryPoint & TrajectoryPointAt(const size_t index) const
size_t NumOfPoints() const
virtual size_t QueryNearestPoint(const common::math::Vec2d &position) const
virtual double GetSpatialLength() const
DiscretizedTrajectory()=default
virtual double GetTemporalLength() const
virtual size_t QueryLowerBoundPoint(const double relative_time, const double epsilon=1.0e-5) const
virtual common::TrajectoryPoint StartPoint() const
virtual void AppendTrajectoryPoint(const common::TrajectoryPoint &trajectory_point)
virtual common::TrajectoryPoint Evaluate(const double relative_time) const
Planning module main class.
Linear interpolation functions.
SLPoint InterpolateUsingLinearApproximation(const SLPoint &p0, const SLPoint &p1, const double w)
optional double relative_time
repeated apollo::common::TrajectoryPoint trajectory_point