50 const std::vector<const Obstacle *> &obstacles,
57 struct DpRoadGraphNode {
59 DpRoadGraphNode() =
default;
62 const DpRoadGraphNode *node_prev)
63 : sl_point(point_sl), min_cost_prev_node(node_prev) {}
66 const DpRoadGraphNode *node_prev,
68 : sl_point(point_sl), min_cost_prev_node(node_prev), min_cost(cost) {}
70 void UpdateCost(
const DpRoadGraphNode *node_prev,
71 const QuinticPolynomialCurve1d &curve,
72 const ComparableCost &cost) {
73 if (cost <= min_cost) {
75 min_cost_prev_node = node_prev;
76 min_cost_curve = curve;
80 common::SLPoint sl_point;
81 const DpRoadGraphNode *min_cost_prev_node =
nullptr;
82 ComparableCost min_cost = {
true,
true,
true,
83 std::numeric_limits<double>::infinity(),
84 std::numeric_limits<double>::infinity()};
85 QuinticPolynomialCurve1d min_cost_curve;
87 bool GenerateMinCostPath(
const std::vector<const Obstacle *> &obstacles,
88 std::vector<DpRoadGraphNode> *min_cost_path);
90 bool IsValidCurve(
const QuinticPolynomialCurve1d &curve)
const;
92 void GetCurveCost(TrajectoryCost trajectory_cost,
93 const QuinticPolynomialCurve1d &curve,
const double start_s,
94 const double end_s,
const uint32_t curr_level,
95 const uint32_t total_level, ComparableCost *cost);
97 struct RoadGraphMessage {
98 RoadGraphMessage(
const std::list<DpRoadGraphNode> &_prev_nodes,
99 const uint32_t _level,
const uint32_t _total_level,
100 TrajectoryCost *_trajectory_cost, DpRoadGraphNode *_front,
101 DpRoadGraphNode *_cur_node)
102 : prev_nodes(_prev_nodes),
104 total_level(_total_level),
105 trajectory_cost(_trajectory_cost),
107 cur_node(_cur_node) {}
108 const std::list<DpRoadGraphNode> &prev_nodes;
109 const uint32_t level;
110 const uint32_t total_level;
111 TrajectoryCost *trajectory_cost =
nullptr;
112 DpRoadGraphNode *front =
nullptr;
113 DpRoadGraphNode *cur_node =
nullptr;
115 void UpdateNode(
const std::shared_ptr<RoadGraphMessage> &msg);
118 DpPolyPathConfig config_;
119 common::TrajectoryPoint init_point_;
120 const ReferenceLineInfo &reference_line_info_;
121 const ReferenceLine &reference_line_;
122 SpeedData speed_data_;
123 common::SLPoint init_sl_point_;
124 common::FrenetFramePoint init_frenet_frame_point_;
127 std::unique_ptr<WaypointSampler> waypoint_sampler_;