Apollo 11.0
自动驾驶开放平台
apollo::planning::DiscretizedTrajectory类 参考

#include <discretized_trajectory.h>

类 apollo::planning::DiscretizedTrajectory 继承关系图:
apollo::planning::DiscretizedTrajectory 的协作图:

Public 成员函数

 DiscretizedTrajectory ()=default
 
 DiscretizedTrajectory (const ADCTrajectory &trajectory)
 Create a DiscretizedTrajectory based on protobuf message
 
 DiscretizedTrajectory (const std::vector< common::TrajectoryPoint > &trajectory_points)
 
void SetTrajectoryPoints (const std::vector< common::TrajectoryPoint > &trajectory_points)
 
virtual ~DiscretizedTrajectory ()=default
 
virtual common::TrajectoryPoint StartPoint () const
 
virtual double GetTemporalLength () const
 
virtual double GetSpatialLength () const
 
virtual common::TrajectoryPoint Evaluate (const double relative_time) const
 
virtual size_t QueryLowerBoundPoint (const double relative_time, const double epsilon=1.0e-5) const
 
virtual size_t QueryNearestPoint (const common::math::Vec2d &position) const
 
size_t QueryNearestPointWithBuffer (const common::math::Vec2d &position, const double buffer) const
 
virtual void AppendTrajectoryPoint (const common::TrajectoryPoint &trajectory_point)
 
void PrependTrajectoryPoints (const std::vector< common::TrajectoryPoint > &trajectory_points)
 
const common::TrajectoryPointTrajectoryPointAt (const size_t index) const
 
size_t NumOfPoints () const
 
virtual void Clear ()
 
bool IsReversed () const
 
void SetIsReversed (const bool flag)
 

详细描述

在文件 discretized_trajectory.h33 行定义.

构造及析构函数说明

◆ DiscretizedTrajectory() [1/3]

apollo::planning::DiscretizedTrajectory::DiscretizedTrajectory ( )
default

◆ DiscretizedTrajectory() [2/3]

apollo::planning::DiscretizedTrajectory::DiscretizedTrajectory ( const ADCTrajectory trajectory)
explicit

Create a DiscretizedTrajectory based on protobuf message

在文件 discretized_trajectory.cc41 行定义.

41 {
42 assign(trajectory.trajectory_point().begin(),
43 trajectory.trajectory_point().end());
44}

◆ DiscretizedTrajectory() [3/3]

apollo::planning::DiscretizedTrajectory::DiscretizedTrajectory ( const std::vector< common::TrajectoryPoint > &  trajectory_points)
explicit

在文件 discretized_trajectory.cc34 行定义.

36 : std::vector<TrajectoryPoint>(trajectory_points) {
37 ACHECK(!trajectory_points.empty())
38 << "trajectory_points should NOT be empty()";
39}
#define ACHECK(cond)
Definition log.h:80

◆ ~DiscretizedTrajectory()

virtual apollo::planning::DiscretizedTrajectory::~DiscretizedTrajectory ( )
virtualdefault

成员函数说明

◆ AppendTrajectoryPoint()

void apollo::planning::DiscretizedTrajectory::AppendTrajectoryPoint ( const common::TrajectoryPoint trajectory_point)
virtual

在文件 discretized_trajectory.cc114 行定义.

115 {
116 if (!empty()) {
117 CHECK_GT(trajectory_point.relative_time(), back().relative_time());
118 }
119 push_back(trajectory_point);
120}

◆ Clear()

void apollo::planning::DiscretizedTrajectory::Clear ( )
inlinevirtual

在文件 discretized_trajectory.h92 行定义.

92{ clear(); }

◆ Evaluate()

TrajectoryPoint apollo::planning::DiscretizedTrajectory::Evaluate ( const double  relative_time) const
virtual

在文件 discretized_trajectory.cc46 行定义.

47 {
48 auto comp = [](const TrajectoryPoint& p, const double relative_time) {
49 return p.relative_time() < relative_time;
50 };
51
52 auto it_lower = std::lower_bound(begin(), end(), relative_time, comp);
53
54 if (it_lower == begin()) {
55 return front();
56 } else if (it_lower == end()) {
57 AWARN << "When evaluate trajectory, relative_time(" << relative_time
58 << ") is too large";
59 return back();
60 }
62 *(it_lower - 1), *it_lower, relative_time);
63}
#define AWARN
Definition log.h:43
SLPoint InterpolateUsingLinearApproximation(const SLPoint &p0, const SLPoint &p1, const double w)

◆ GetSpatialLength()

double apollo::planning::DiscretizedTrajectory::GetSpatialLength ( ) const
virtual

在文件 discretized_trajectory.cc140 行定义.

140 {
141 if (empty()) {
142 return 0.0;
143 }
144 return back().path_point().s() - front().path_point().s();
145}

◆ GetTemporalLength()

double apollo::planning::DiscretizedTrajectory::GetTemporalLength ( ) const
virtual

在文件 discretized_trajectory.cc133 行定义.

133 {
134 if (empty()) {
135 return 0.0;
136 }
137 return back().relative_time() - front().relative_time();
138}

◆ IsReversed()

bool apollo::planning::DiscretizedTrajectory::IsReversed ( ) const
inline

在文件 discretized_trajectory.h83 行定义.

83{ return is_reversed_; }

◆ NumOfPoints()

size_t apollo::planning::DiscretizedTrajectory::NumOfPoints ( ) const
inline

在文件 discretized_trajectory.h90 行定义.

90{ return size(); }

◆ PrependTrajectoryPoints()

void apollo::planning::DiscretizedTrajectory::PrependTrajectoryPoints ( const std::vector< common::TrajectoryPoint > &  trajectory_points)
inline

在文件 discretized_trajectory.h69 行定义.

70 {
71 if (!empty() && trajectory_points.size() > 1) {
72 ACHECK(trajectory_points.back().relative_time() <
73 front().relative_time());
74 }
75 insert(begin(), trajectory_points.begin(), trajectory_points.end());
76 }

◆ QueryLowerBoundPoint()

size_t apollo::planning::DiscretizedTrajectory::QueryLowerBoundPoint ( const double  relative_time,
const double  epsilon = 1.0e-5 
) const
virtual

在文件 discretized_trajectory.cc65 行定义.

66 {
67 ACHECK(!empty());
68
69 if (relative_time >= back().relative_time()) {
70 return size() - 1;
71 }
72 auto func = [&epsilon](const TrajectoryPoint& tp,
73 const double relative_time) {
74 return tp.relative_time() + epsilon < relative_time;
75 };
76 auto it_lower = std::lower_bound(begin(), end(), relative_time, func);
77 return std::distance(begin(), it_lower);
78}

◆ QueryNearestPoint()

size_t apollo::planning::DiscretizedTrajectory::QueryNearestPoint ( const common::math::Vec2d position) const
virtual

在文件 discretized_trajectory.cc80 行定义.

81 {
82 double dist_sqr_min = std::numeric_limits<double>::max();
83 size_t index_min = 0;
84 for (size_t i = 0; i < size(); ++i) {
85 const common::math::Vec2d curr_point(data()[i].path_point().x(),
86 data()[i].path_point().y());
87
88 const double dist_sqr = curr_point.DistanceSquareTo(position);
89 if (dist_sqr < dist_sqr_min) {
90 dist_sqr_min = dist_sqr;
91 index_min = i;
92 }
93 }
94 return index_min;
95}

◆ QueryNearestPointWithBuffer()

size_t apollo::planning::DiscretizedTrajectory::QueryNearestPointWithBuffer ( const common::math::Vec2d position,
const double  buffer 
) const

在文件 discretized_trajectory.cc97 行定义.

98 {
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) {
102 const common::math::Vec2d curr_point(data()[i].path_point().x(),
103 data()[i].path_point().y());
104
105 const double dist_sqr = curr_point.DistanceSquareTo(position);
106 if (dist_sqr < dist_sqr_min + buffer) {
107 dist_sqr_min = dist_sqr;
108 index_min = i;
109 }
110 }
111 return index_min;
112}

◆ SetIsReversed()

void apollo::planning::DiscretizedTrajectory::SetIsReversed ( const bool  flag)
inline

在文件 discretized_trajectory.h84 行定义.

84{ is_reversed_ = flag; }

◆ SetTrajectoryPoints()

void apollo::planning::DiscretizedTrajectory::SetTrajectoryPoints ( const std::vector< common::TrajectoryPoint > &  trajectory_points)

◆ StartPoint()

TrajectoryPoint apollo::planning::DiscretizedTrajectory::StartPoint ( ) const
virtual

在文件 discretized_trajectory.cc128 行定义.

128 {
129 ACHECK(!empty());
130 return front();
131}

◆ TrajectoryPointAt()

const TrajectoryPoint & apollo::planning::DiscretizedTrajectory::TrajectoryPointAt ( const size_t  index) const

在文件 discretized_trajectory.cc122 行定义.

123 {
124 CHECK_LT(index, NumOfPoints());
125 return data()[index];
126}

该类的文档由以下文件生成: