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

#include <piecewise_acceleration_trajectory1d.h>

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

Public 成员函数

 PiecewiseAccelerationTrajectory1d (const double start_s, const double start_v)
 
virtual ~PiecewiseAccelerationTrajectory1d ()=default
 
void AppendSegment (const double a, const double t_duration)
 
void PopSegment ()
 
double ParamLength () const override
 
std::string ToString () const override
 
double Evaluate (const std::uint32_t order, const double param) const override
 
std::array< double, 4 > Evaluate (const double t) const
 
- Public 成员函数 继承自 apollo::planning::Curve1d
 Curve1d ()=default
 
virtual ~Curve1d ()=default
 

详细描述

在文件 piecewise_acceleration_trajectory1d.h 第 32 行定义.

构造及析构函数说明

◆ PiecewiseAccelerationTrajectory1d()

apollo::planning::PiecewiseAccelerationTrajectory1d::PiecewiseAccelerationTrajectory1d ( const double  start_s,
const double  start_v 
)

在文件 piecewise_acceleration_trajectory1d.cc 第 35 行定义.

36 {
37 s_.push_back(start_s);
38 v_.push_back(start_v);
39 a_.push_back(0.0);
40 t_.push_back(0.0);
41}

◆ ~PiecewiseAccelerationTrajectory1d()

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

成员函数说明

◆ AppendSegment()

void apollo::planning::PiecewiseAccelerationTrajectory1d::AppendSegment ( const double  a,
const double  t_duration 
)

在文件 piecewise_acceleration_trajectory1d.cc 第 43 行定义.

44 {
45 double s0 = s_.back();
46 double v0 = v_.back();
47 double t0 = t_.back();
48
49 double v1 = v0 + a * t_duration;
50 ACHECK(v1 >= -FLAGS_numerical_epsilon);
51
52 double delta_s = (v0 + v1) * t_duration * 0.5;
53 double s1 = s0 + delta_s;
54 double t1 = t0 + t_duration;
55
56 ACHECK(s1 >= s0 - FLAGS_numerical_epsilon);
57 s1 = std::max(s1, s0);
58 s_.push_back(s1);
59 v_.push_back(v1);
60 a_.push_back(a);
61 t_.push_back(t1);
62}
#define ACHECK(cond)
Definition log.h:80

◆ Evaluate() [1/2]

std::array< double, 4 > apollo::planning::PiecewiseAccelerationTrajectory1d::Evaluate ( const double  t) const

在文件 piecewise_acceleration_trajectory1d.cc 第 141 行定义.

142 {
143 CHECK_GT(t_.size(), 1U);
144 ACHECK(t_.front() <= t && t <= t_.back());
145
146 auto it_lower = std::lower_bound(t_.begin(), t_.end(), t);
147 auto index = std::distance(t_.begin(), it_lower);
148
149 double s0 = s_[index - 1];
150 double v0 = v_[index - 1];
151 double t0 = t_[index - 1];
152
153 double v1 = v_[index];
154 double t1 = t_[index];
155
156 double v = common::math::lerp(v0, t0, v1, t1, t);
157 double s = (v0 + v) * (t - t0) * 0.5 + s0;
158
159 double a = a_[index - 1];
160 double j = 0.0;
161
162 return {{s, v, a, j}};
163}
T lerp(const T &x0, const double t0, const T &x1, const double t1, const double t)
Linear interpolation between two points of type T.

◆ Evaluate() [2/2]

double apollo::planning::PiecewiseAccelerationTrajectory1d::Evaluate ( const std::uint32_t  order,
const double  param 
) const
overridevirtual

实现了 apollo::planning::Curve1d.

在文件 piecewise_acceleration_trajectory1d.cc 第 83 行定义.

84 {
85 CHECK_GT(t_.size(), 1U);
86 ACHECK(t_.front() <= param && param <= t_.back());
87
88 switch (order) {
89 case 0:
90 return Evaluate_s(param);
91 case 1:
92 return Evaluate_v(param);
93 case 2:
94 return Evaluate_a(param);
95 case 3:
96 return Evaluate_j(param);
97 }
98 return 0.0;
99}

◆ ParamLength()

double apollo::planning::PiecewiseAccelerationTrajectory1d::ParamLength ( ) const
overridevirtual

实现了 apollo::planning::Curve1d.

在文件 piecewise_acceleration_trajectory1d.cc 第 73 行定义.

73 {
74 CHECK_GT(t_.size(), 1U);
75 return t_.back() - t_.front();
76}

◆ PopSegment()

void apollo::planning::PiecewiseAccelerationTrajectory1d::PopSegment ( )

在文件 piecewise_acceleration_trajectory1d.cc 第 64 行定义.

64 {
65 if (a_.size() > 0) {
66 s_.pop_back();
67 v_.pop_back();
68 a_.pop_back();
69 t_.pop_back();
70 }
71}

◆ ToString()

std::string apollo::planning::PiecewiseAccelerationTrajectory1d::ToString ( ) const
overridevirtual

实现了 apollo::planning::Curve1d.

在文件 piecewise_acceleration_trajectory1d.cc 第 78 行定义.

78 {
79 return absl::StrCat(absl::StrJoin(s_, "\t"), absl::StrJoin(t_, "\t"),
80 absl::StrJoin(v_, "\t"), absl::StrJoin(a_, "\t"), "\n");
81}

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