Apollo  6.0
Open source self driving car software
discretized_trajectory.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2017 The Apollo Authors. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *****************************************************************************/
16 
21 #pragma once
22 
23 #include <vector>
24 
25 #include "cyber/common/log.h"
27 #include "modules/planning/proto/planning.pb.h"
28 
29 namespace apollo {
30 namespace planning {
31 
32 class DiscretizedTrajectory : public std::vector<common::TrajectoryPoint> {
33  public:
34  DiscretizedTrajectory() = default;
35 
39  explicit DiscretizedTrajectory(const ADCTrajectory& trajectory);
40 
41  explicit DiscretizedTrajectory(
42  const std::vector<common::TrajectoryPoint>& trajectory_points);
43 
45  const std::vector<common::TrajectoryPoint>& trajectory_points);
46 
47  virtual ~DiscretizedTrajectory() = default;
48 
49  virtual common::TrajectoryPoint StartPoint() const;
50 
51  virtual double GetTemporalLength() const;
52 
53  virtual double GetSpatialLength() const;
54 
55  virtual common::TrajectoryPoint Evaluate(const double relative_time) const;
56 
57  virtual size_t QueryLowerBoundPoint(const double relative_time,
58  const double epsilon = 1.0e-5) const;
59 
60  virtual size_t QueryNearestPoint(const common::math::Vec2d& position) const;
61 
62  size_t QueryNearestPointWithBuffer(const common::math::Vec2d& position,
63  const double buffer) const;
64 
65  virtual void AppendTrajectoryPoint(
66  const common::TrajectoryPoint& trajectory_point);
67 
69  const std::vector<common::TrajectoryPoint>& trajectory_points) {
70  if (!empty() && trajectory_points.size() > 1) {
71  ACHECK(trajectory_points.back().relative_time() <
72  front().relative_time());
73  }
74  insert(begin(), trajectory_points.begin(), trajectory_points.end());
75  }
76 
77  const common::TrajectoryPoint& TrajectoryPointAt(const size_t index) const;
78 
79  size_t NumOfPoints() const;
80 
81  virtual void Clear();
82 };
83 
84 inline size_t DiscretizedTrajectory::NumOfPoints() const { return size(); }
85 
86 inline void DiscretizedTrajectory::Clear() { clear(); }
87 
88 } // namespace planning
89 } // namespace apollo
virtual size_t QueryNearestPoint(const common::math::Vec2d &position) const
Defines the Vec2d class.
#define ACHECK(cond)
Definition: log.h:80
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
virtual double GetSpatialLength() const
Definition: discretized_trajectory.h:32
size_t QueryNearestPointWithBuffer(const common::math::Vec2d &position, const double buffer) const
const common::TrajectoryPoint & TrajectoryPointAt(const size_t index) const
Planning module main class. It processes GPS and IMU as input, to generate planning info...
size_t NumOfPoints() const
Definition: discretized_trajectory.h:84
virtual void AppendTrajectoryPoint(const common::TrajectoryPoint &trajectory_point)
virtual void Clear()
Definition: discretized_trajectory.h:86
void SetTrajectoryPoints(const std::vector< common::TrajectoryPoint > &trajectory_points)
Implements a class of 2-dimensional vectors.
Definition: vec2d.h:42
virtual common::TrajectoryPoint Evaluate(const double relative_time) const
virtual double GetTemporalLength() const
void PrependTrajectoryPoints(const std::vector< common::TrajectoryPoint > &trajectory_points)
Definition: discretized_trajectory.h:68
virtual common::TrajectoryPoint StartPoint() const
virtual size_t QueryLowerBoundPoint(const double relative_time, const double epsilon=1.0e-5) const