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

#include <gridded_path_time_graph.h>

apollo::planning::GriddedPathTimeGraph 的协作图:

Public 成员函数

 GriddedPathTimeGraph (const StGraphData &st_graph_data, const DpStSpeedOptimizerConfig &dp_config, const std::vector< const Obstacle * > &obstacles, const common::TrajectoryPoint &init_point)
 
common::Status Search (SpeedData *const speed_data)
 

详细描述

在文件 gridded_path_time_graph.h 第 43 行定义.

构造及析构函数说明

◆ GriddedPathTimeGraph()

apollo::planning::GriddedPathTimeGraph::GriddedPathTimeGraph ( const StGraphData &  st_graph_data,
const DpStSpeedOptimizerConfig &  dp_config,
const std::vector< const Obstacle * > &  obstacles,
const common::TrajectoryPoint &  init_point 
)

在文件 gridded_path_time_graph.cc 第 68 行定义.

72 : st_graph_data_(st_graph_data),
73 gridded_path_time_graph_config_(dp_config),
74 obstacles_(obstacles),
75 init_point_(init_point),
76 dp_st_cost_(dp_config, st_graph_data_.total_time_by_conf(),
77 st_graph_data_.path_length(), obstacles,
78 st_graph_data_.st_drivable_boundary(), init_point_) {
79 total_length_t_ = st_graph_data_.total_time_by_conf();
80 unit_t_ = gridded_path_time_graph_config_.unit_t();
81 total_length_s_ = st_graph_data_.path_length();
82 dense_unit_s_ = gridded_path_time_graph_config_.dense_unit_s();
83 sparse_unit_s_ = gridded_path_time_graph_config_.sparse_unit_s();
84 dense_dimension_s_ = gridded_path_time_graph_config_.dense_dimension_s();
85 // Safety approach preventing unreachable acceleration/deceleration
86 max_acceleration_ =
87 std::min(std::abs(vehicle_param_.max_acceleration()),
88 std::abs(gridded_path_time_graph_config_.max_acceleration()));
89 max_deceleration_ =
90 -1.0 *
91 std::min(std::abs(vehicle_param_.max_deceleration()),
92 std::abs(gridded_path_time_graph_config_.max_deceleration()));
93}
const STDrivableBoundary & st_drivable_boundary() const

成员函数说明

◆ Search()

Status apollo::planning::GriddedPathTimeGraph::Search ( SpeedData *const  speed_data)

在文件 gridded_path_time_graph.cc 第 95 行定义.

95 {
96 static constexpr double kBounadryEpsilon = 1e-2;
97 for (const auto& boundary : st_graph_data_.st_boundaries()) {
98 // KeepClear obstacles not considered in Dp St decision
99 if (boundary->boundary_type() == STBoundary::BoundaryType::KEEP_CLEAR) {
100 continue;
101 }
102 // If init point in collision with obstacle, return speed fallback
103 if (boundary->IsPointInBoundary({0.0, 0.0}) ||
104 (std::fabs(boundary->min_t()) < kBounadryEpsilon &&
105 std::fabs(boundary->min_s()) < kBounadryEpsilon)) {
106 dimension_t_ = static_cast<uint32_t>(std::ceil(
107 total_length_t_ / static_cast<double>(unit_t_))) +
108 1;
109 std::vector<SpeedPoint> speed_profile;
110 double t = 0.0;
111 for (uint32_t i = 0; i < dimension_t_; ++i, t += unit_t_) {
112 speed_profile.push_back(PointFactory::ToSpeedPoint(0, t));
113 }
114 *speed_data = SpeedData(speed_profile);
115 return Status::OK();
116 }
117 }
118
119 if (!InitCostTable().ok()) {
120 const std::string msg = "Initialize cost table failed.";
121 AERROR << msg;
122 return Status(ErrorCode::PLANNING_ERROR, msg);
123 }
124
125 if (!InitSpeedLimitLookUp().ok()) {
126 const std::string msg = "Initialize speed limit lookup table failed.";
127 AERROR << msg;
128 return Status(ErrorCode::PLANNING_ERROR, msg);
129 }
130
131 if (!CalculateTotalCost().ok()) {
132 const std::string msg = "Calculate total cost failed.";
133 AERROR << msg;
134 return Status(ErrorCode::PLANNING_ERROR, msg);
135 }
136
137 if (!RetrieveSpeedProfile(speed_data).ok()) {
138 const std::string msg = "Retrieve best speed profile failed.";
139 AERROR << msg;
140 return Status(ErrorCode::PLANNING_ERROR, msg);
141 }
142 return Status::OK();
143}
static Status OK()
generate a success status.
Definition status.h:60
static SpeedPoint ToSpeedPoint(const double s, const double t, const double v=0, const double a=0, const double da=0)
#define AERROR
Definition log.h:44

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