Apollo 10.0
自动驾驶开放平台
apollo::planning::EndConditionSampler类 参考

#include <end_condition_sampler.h>

apollo::planning::EndConditionSampler 的协作图:

Public 成员函数

 EndConditionSampler (const std::array< double, 3 > &init_s, const std::array< double, 3 > &init_d, std::shared_ptr< PathTimeGraph > ptr_path_time_graph, std::shared_ptr< PredictionQuerier > ptr_prediction_querier)
 
virtual ~EndConditionSampler ()=default
 
std::vector< std::pair< std::array< double, 3 >, double > > SampleLatEndConditions () const
 
std::vector< std::pair< std::array< double, 3 >, double > > SampleLonEndConditionsForCruising (const double ref_cruise_speed) const
 
std::vector< std::pair< std::array< double, 3 >, double > > SampleLonEndConditionsForStopping (const double ref_stop_point) const
 
std::vector< std::pair< std::array< double, 3 >, double > > SampleLonEndConditionsForPathTimePoints () const
 

详细描述

在文件 end_condition_sampler.h44 行定义.

构造及析构函数说明

◆ EndConditionSampler()

apollo::planning::EndConditionSampler::EndConditionSampler ( const std::array< double, 3 > &  init_s,
const std::array< double, 3 > &  init_d,
std::shared_ptr< PathTimeGraph ptr_path_time_graph,
std::shared_ptr< PredictionQuerier ptr_prediction_querier 
)

在文件 end_condition_sampler.cc34 行定义.

38 : init_s_(init_s),
39 init_d_(init_d),
40 feasible_region_(init_s),
41 ptr_path_time_graph_(std::move(ptr_path_time_graph)),
42 ptr_prediction_querier_(std::move(ptr_prediction_querier)) {}

◆ ~EndConditionSampler()

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

成员函数说明

◆ SampleLatEndConditions()

std::vector< Condition > apollo::planning::EndConditionSampler::SampleLatEndConditions ( ) const

在文件 end_condition_sampler.cc44 行定义.

44 {
45 std::vector<Condition> end_d_conditions;
46 std::array<double, 3> end_d_candidates = {0.0, -0.5, 0.5};
47 std::array<double, 4> end_s_candidates = {10.0, 20.0, 40.0, 80.0};
48
49 for (const auto& s : end_s_candidates) {
50 for (const auto& d : end_d_candidates) {
51 State end_d_state = {d, 0.0, 0.0};
52 end_d_conditions.emplace_back(end_d_state, s);
53 }
54 }
55 return end_d_conditions;
56}
std::array< double, 3 > State

◆ SampleLonEndConditionsForCruising()

std::vector< Condition > apollo::planning::EndConditionSampler::SampleLonEndConditionsForCruising ( const double  ref_cruise_speed) const

在文件 end_condition_sampler.cc58 行定义.

59 {
60 CHECK_GT(FLAGS_num_velocity_sample, 1U);
61
62 // time interval is one second plus the last one 0.01
63 static constexpr size_t num_of_time_samples = 9;
64 std::array<double, num_of_time_samples> time_samples;
65 for (size_t i = 1; i < num_of_time_samples; ++i) {
66 auto ratio =
67 static_cast<double>(i) / static_cast<double>(num_of_time_samples - 1);
68 time_samples[i] = FLAGS_trajectory_time_length * ratio;
69 }
70 time_samples[0] = FLAGS_polynomial_minimal_param;
71
72 std::vector<Condition> end_s_conditions;
73 for (const auto& time : time_samples) {
74 double v_upper = std::min(feasible_region_.VUpper(time), ref_cruise_speed);
75 double v_lower = feasible_region_.VLower(time);
76
77 State lower_end_s = {0.0, v_lower, 0.0};
78 end_s_conditions.emplace_back(lower_end_s, time);
79
80 State upper_end_s = {0.0, v_upper, 0.0};
81 end_s_conditions.emplace_back(upper_end_s, time);
82
83 double v_range = v_upper - v_lower;
84 // Number of sample velocities
85 size_t num_of_mid_points =
86 std::min(static_cast<size_t>(FLAGS_num_velocity_sample - 2),
87 static_cast<size_t>(v_range / FLAGS_min_velocity_sample_gap));
88
89 if (num_of_mid_points > 0) {
90 double velocity_seg =
91 v_range / static_cast<double>(num_of_mid_points + 1);
92 for (size_t i = 1; i <= num_of_mid_points; ++i) {
93 State end_s = {0.0, v_lower + velocity_seg * static_cast<double>(i),
94 0.0};
95 end_s_conditions.emplace_back(end_s, time);
96 }
97 }
98 }
99 return end_s_conditions;
100}
double VLower(const double t) const
double VUpper(const double t) const

◆ SampleLonEndConditionsForPathTimePoints()

std::vector< Condition > apollo::planning::EndConditionSampler::SampleLonEndConditionsForPathTimePoints ( ) const

在文件 end_condition_sampler.cc123 行定义.

123 {
124 std::vector<Condition> end_s_conditions;
125
126 std::vector<SamplePoint> sample_points = QueryPathTimeObstacleSamplePoints();
127 for (const SamplePoint& sample_point : sample_points) {
128 if (sample_point.path_time_point.t() < FLAGS_polynomial_minimal_param) {
129 continue;
130 }
131 double s = sample_point.path_time_point.s();
132 double v = sample_point.ref_v;
133 double t = sample_point.path_time_point.t();
134 if (s > feasible_region_.SUpper(t) || s < feasible_region_.SLower(t)) {
135 continue;
136 }
137 State end_state = {s, v, 0.0};
138 end_s_conditions.emplace_back(end_state, t);
139 }
140 return end_s_conditions;
141}
double SLower(const double t) const
double SUpper(const double t) const

◆ SampleLonEndConditionsForStopping()

std::vector< Condition > apollo::planning::EndConditionSampler::SampleLonEndConditionsForStopping ( const double  ref_stop_point) const

在文件 end_condition_sampler.cc102 行定义.

103 {
104 // time interval is one second plus the last one 0.01
105 static constexpr size_t num_of_time_samples = 9;
106 std::array<double, num_of_time_samples> time_samples;
107 for (size_t i = 1; i < num_of_time_samples; ++i) {
108 auto ratio =
109 static_cast<double>(i) / static_cast<double>(num_of_time_samples - 1);
110 time_samples[i] = FLAGS_trajectory_time_length * ratio;
111 }
112 time_samples[0] = FLAGS_polynomial_minimal_param;
113
114 std::vector<Condition> end_s_conditions;
115 for (const auto& time : time_samples) {
116 State end_s = {std::max(init_s_[0], ref_stop_point), 0.0, 0.0};
117 end_s_conditions.emplace_back(end_s, time);
118 }
119 return end_s_conditions;
120}

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