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

#include <trajectory_cost.h>

apollo::planning::TrajectoryCost 的协作图:

Public 成员函数

 TrajectoryCost ()=default
 
 TrajectoryCost (const DpPolyPathConfig &config, const ReferenceLine &reference_line, const bool is_change_lane_path, const std::vector< const Obstacle * > &obstacles, const common::VehicleParam &vehicle_param, const SpeedData &heuristic_speed_data, const common::SLPoint &init_sl_point, const SLBoundary &adc_sl_boundary)
 
ComparableCost Calculate (const QuinticPolynomialCurve1d &curve, const double start_s, const double end_s, const uint32_t curr_level, const uint32_t total_level)
 

详细描述

在文件 trajectory_cost.h 第 37 行定义.

构造及析构函数说明

◆ TrajectoryCost() [1/2]

apollo::planning::TrajectoryCost::TrajectoryCost ( )
default

◆ TrajectoryCost() [2/2]

apollo::planning::TrajectoryCost::TrajectoryCost ( const DpPolyPathConfig &  config,
const ReferenceLine &  reference_line,
const bool  is_change_lane_path,
const std::vector< const Obstacle * > &  obstacles,
const common::VehicleParam &  vehicle_param,
const SpeedData &  heuristic_speed_data,
const common::SLPoint &  init_sl_point,
const SLBoundary &  adc_sl_boundary 
)

在文件 trajectory_cost.cc 第 33 行定义.

41 : config_(config),
42 reference_line_(&reference_line),
43 is_change_lane_path_(is_change_lane_path),
44 vehicle_param_(vehicle_param),
45 heuristic_speed_data_(heuristic_speed_data),
46 init_sl_point_(init_sl_point),
47 adc_sl_boundary_(adc_sl_boundary) {
48 const double total_time =
49 std::min(heuristic_speed_data_.TotalTime(), FLAGS_prediction_total_time);
50
51 num_of_time_stamps_ = static_cast<uint32_t>(
52 std::floor(total_time / config.eval_time_interval()));
53
54 for (const auto *ptr_obstacle : obstacles) {
55 if (ptr_obstacle->IsIgnore()) {
56 continue;
57 } else if (ptr_obstacle->LongitudinalDecision().has_stop()) {
58 continue;
59 }
60 const auto &sl_boundary = ptr_obstacle->PerceptionSLBoundary();
61
62 const double adc_left_l =
63 init_sl_point_.l() + vehicle_param_.left_edge_to_center();
64 const double adc_right_l =
65 init_sl_point_.l() - vehicle_param_.right_edge_to_center();
66
67 if (adc_left_l + FLAGS_lateral_ignore_buffer < sl_boundary.start_l() ||
68 adc_right_l - FLAGS_lateral_ignore_buffer > sl_boundary.end_l()) {
69 continue;
70 }
71
72 bool is_bycycle_or_pedestrian =
73 (ptr_obstacle->Perception().type() ==
75 ptr_obstacle->Perception().type() ==
77
78 if (ptr_obstacle->IsVirtual()) {
79 // Virtual obstacle
80 continue;
81 } else if (ptr_obstacle->IsStatic() || is_bycycle_or_pedestrian) {
82 static_obstacle_sl_boundaries_.push_back(std::move(sl_boundary));
83 } else {
84 std::vector<Box2d> box_by_time;
85 for (uint32_t t = 0; t <= num_of_time_stamps_; ++t) {
86 TrajectoryPoint trajectory_point =
87 ptr_obstacle->GetPointAtTime(t * config.eval_time_interval());
88
89 Box2d obstacle_box = ptr_obstacle->GetBoundingBox(trajectory_point);
90 static constexpr double kBuff = 0.5;
91 Box2d expanded_obstacle_box =
92 Box2d(obstacle_box.center(), obstacle_box.heading(),
93 obstacle_box.length() + kBuff, obstacle_box.width() + kBuff);
94 box_by_time.push_back(expanded_obstacle_box);
95 }
96 dynamic_obstacle_boxes_.push_back(std::move(box_by_time));
97 }
98 }
99}

成员函数说明

◆ Calculate()

ComparableCost apollo::planning::TrajectoryCost::Calculate ( const QuinticPolynomialCurve1d &  curve,
const double  start_s,
const double  end_s,
const uint32_t  curr_level,
const uint32_t  total_level 
)

在文件 trajectory_cost.cc 第 321 行定义.

325 {
326 ComparableCost total_cost;
327 // path cost
328 total_cost +=
329 CalculatePathCost(curve, start_s, end_s, curr_level, total_level);
330
331 // static obstacle cost
332 total_cost += CalculateStaticObstacleCost(curve, start_s, end_s);
333
334 // dynamic obstacle cost
335 total_cost += CalculateDynamicObstacleCost(curve, start_s, end_s);
336 return total_cost;
337}

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