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

#include <quintic_polynomial_curve1d.h>

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

Public 成员函数

 QuinticPolynomialCurve1d ()=default
 
 QuinticPolynomialCurve1d (const std::array< double, 3 > &start, const std::array< double, 3 > &end, const double param)
 
 QuinticPolynomialCurve1d (const double x0, const double dx0, const double ddx0, const double x1, const double dx1, const double ddx1, const double param)
 
 QuinticPolynomialCurve1d (const QuinticPolynomialCurve1d &other)
 
void SetParam (const double x0, const double dx0, const double ddx0, const double x1, const double dx1, const double ddx1, const double param)
 
void IntegratedFromQuarticCurve (const PolynomialCurve1d &other, const double init_value)
 
virtual ~QuinticPolynomialCurve1d ()=default
 
double Evaluate (const std::uint32_t order, const double p) const override
 
double ParamLength () const override
 
std::string ToString () const override
 
double Coef (const size_t order) const override
 
size_t Order () const override
 
- Public 成员函数 继承自 apollo::planning::PolynomialCurve1d
 PolynomialCurve1d ()=default
 
virtual ~PolynomialCurve1d ()=default
 
- Public 成员函数 继承自 apollo::planning::Curve1d
 Curve1d ()=default
 
virtual ~Curve1d ()=default
 

Protected 成员函数

void ComputeCoefficients (const double x0, const double dx0, const double ddx0, const double x1, const double dx1, const double ddx1, const double param)
 

Protected 属性

std::array< double, 6 > coef_ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}
 
std::array< double, 3 > start_condition_ {{0.0, 0.0, 0.0}}
 
std::array< double, 3 > end_condition_ {{0.0, 0.0, 0.0}}
 
- Protected 属性 继承自 apollo::planning::PolynomialCurve1d
double param_ = 0.0
 

详细描述

在文件 quintic_polynomial_curve1d.h 第 33 行定义.

构造及析构函数说明

◆ QuinticPolynomialCurve1d() [1/4]

apollo::planning::QuinticPolynomialCurve1d::QuinticPolynomialCurve1d ( )
default

◆ QuinticPolynomialCurve1d() [2/4]

apollo::planning::QuinticPolynomialCurve1d::QuinticPolynomialCurve1d ( const std::array< double, 3 > &  start,
const std::array< double, 3 > &  end,
const double  param 
)

在文件 quintic_polynomial_curve1d.cc 第 31 行定义.

34 : QuinticPolynomialCurve1d(start[0], start[1], start[2], end[0], end[1],
35 end[2], param) {}

◆ QuinticPolynomialCurve1d() [3/4]

apollo::planning::QuinticPolynomialCurve1d::QuinticPolynomialCurve1d ( const double  x0,
const double  dx0,
const double  ddx0,
const double  x1,
const double  dx1,
const double  ddx1,
const double  param 
)

在文件 quintic_polynomial_curve1d.cc 第 37 行定义.

39 {
40 ComputeCoefficients(x0, dx0, ddx0, x1, dx1, ddx1, param);
41 start_condition_[0] = x0;
42 start_condition_[1] = dx0;
43 start_condition_[2] = ddx0;
44 end_condition_[0] = x1;
45 end_condition_[1] = dx1;
46 end_condition_[2] = ddx1;
47 param_ = param;
48}
void ComputeCoefficients(const double x0, const double dx0, const double ddx0, const double x1, const double dx1, const double ddx1, const double param)

◆ QuinticPolynomialCurve1d() [4/4]

apollo::planning::QuinticPolynomialCurve1d::QuinticPolynomialCurve1d ( const QuinticPolynomialCurve1d &  other)

在文件 quintic_polynomial_curve1d.cc 第 50 行定义.

51 {
52 param_ = other.param_;
53 coef_ = other.coef_;
54}

◆ ~QuinticPolynomialCurve1d()

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

成员函数说明

◆ Coef()

double apollo::planning::QuinticPolynomialCurve1d::Coef ( const size_t  order) const
overridevirtual

实现了 apollo::planning::PolynomialCurve1d.

在文件 quintic_polynomial_curve1d.cc 第 135 行定义.

135 {
136 CHECK_GT(6U, order);
137 return coef_[order];
138}

◆ ComputeCoefficients()

void apollo::planning::QuinticPolynomialCurve1d::ComputeCoefficients ( const double  x0,
const double  dx0,
const double  ddx0,
const double  x1,
const double  dx1,
const double  ddx1,
const double  param 
)
protected

在文件 quintic_polynomial_curve1d.cc 第 108 行定义.

110 {
111 CHECK_GT(p, 0.0);
112
113 coef_[0] = x0;
114 coef_[1] = dx0;
115 coef_[2] = ddx0 / 2.0;
116
117 const double p2 = p * p;
118 const double p3 = p * p2;
119
120 // the direct analytical method is at least 6 times faster than using matrix
121 // inversion.
122 const double c0 = (x1 - 0.5 * p2 * ddx0 - dx0 * p - x0) / p3;
123 const double c1 = (dx1 - ddx0 * p - dx0) / p2;
124 const double c2 = (ddx1 - ddx0) / p;
125
126 coef_[3] = 0.5 * (20.0 * c0 - 8.0 * c1 + c2);
127 coef_[4] = (-15.0 * c0 + 7.0 * c1 - c2) / p;
128 coef_[5] = (6.0 * c0 - 3.0 * c1 + 0.5 * c2) / p2;
129}

◆ Evaluate()

double apollo::planning::QuinticPolynomialCurve1d::Evaluate ( const std::uint32_t  order,
const double  p 
) const
overridevirtual

实现了 apollo::planning::Curve1d.

在文件 quintic_polynomial_curve1d.cc 第 56 行定义.

57 {
58 switch (order) {
59 case 0: {
60 return ((((coef_[5] * p + coef_[4]) * p + coef_[3]) * p + coef_[2]) * p +
61 coef_[1]) *
62 p +
63 coef_[0];
64 }
65 case 1: {
66 return (((5.0 * coef_[5] * p + 4.0 * coef_[4]) * p + 3.0 * coef_[3]) * p +
67 2.0 * coef_[2]) *
68 p +
69 coef_[1];
70 }
71 case 2: {
72 return (((20.0 * coef_[5] * p + 12.0 * coef_[4]) * p) + 6.0 * coef_[3]) *
73 p +
74 2.0 * coef_[2];
75 }
76 case 3: {
77 return (60.0 * coef_[5] * p + 24.0 * coef_[4]) * p + 6.0 * coef_[3];
78 }
79 case 4: {
80 return 120.0 * coef_[5] * p + 24.0 * coef_[4];
81 }
82 case 5: {
83 return 120.0 * coef_[5];
84 }
85 default:
86 return 0.0;
87 }
88}

◆ IntegratedFromQuarticCurve()

void apollo::planning::QuinticPolynomialCurve1d::IntegratedFromQuarticCurve ( const PolynomialCurve1d &  other,
const double  init_value 
)

在文件 quintic_polynomial_curve1d.cc 第 98 行定义.

99 {
100 CHECK_EQ(other.Order(), 4U);
101 param_ = other.ParamLength();
102 coef_[0] = init_value;
103 for (size_t i = 0; i < 5; ++i) {
104 coef_[i + 1] = other.Coef(i) / (static_cast<double>(i) + 1);
105 }
106}

◆ Order()

size_t apollo::planning::QuinticPolynomialCurve1d::Order ( ) const
inlineoverridevirtual

实现了 apollo::planning::PolynomialCurve1d.

在文件 quintic_polynomial_curve1d.h 第 63 行定义.

63{ return 5; }

◆ ParamLength()

double apollo::planning::QuinticPolynomialCurve1d::ParamLength ( ) const
inlineoverridevirtual

实现了 apollo::planning::Curve1d.

在文件 quintic_polynomial_curve1d.h 第 58 行定义.

58{ return param_; }

◆ SetParam()

void apollo::planning::QuinticPolynomialCurve1d::SetParam ( const double  x0,
const double  dx0,
const double  ddx0,
const double  x1,
const double  dx1,
const double  ddx1,
const double  param 
)

在文件 quintic_polynomial_curve1d.cc 第 90 行定义.

93 {
94 ComputeCoefficients(x0, dx0, ddx0, x1, dx1, ddx1, param);
95 param_ = param;
96}

◆ ToString()

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

实现了 apollo::planning::Curve1d.

在文件 quintic_polynomial_curve1d.cc 第 131 行定义.

131 {
132 return absl::StrCat(absl::StrJoin(coef_, "\t"), param_, "\n");
133}

类成员变量说明

◆ coef_

std::array<double, 6> apollo::planning::QuinticPolynomialCurve1d::coef_ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}
protected

在文件 quintic_polynomial_curve1d.h 第 71 行定义.

71{{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}};

◆ end_condition_

std::array<double, 3> apollo::planning::QuinticPolynomialCurve1d::end_condition_ {{0.0, 0.0, 0.0}}
protected

在文件 quintic_polynomial_curve1d.h 第 73 行定义.

73{{0.0, 0.0, 0.0}};

◆ start_condition_

std::array<double, 3> apollo::planning::QuinticPolynomialCurve1d::start_condition_ {{0.0, 0.0, 0.0}}
protected

在文件 quintic_polynomial_curve1d.h 第 72 行定义.

72{{0.0, 0.0, 0.0}};

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