41 std::pair<std::shared_ptr<Curve1d>, std::shared_ptr<Curve1d>>,
double>
46 std::pair<std::shared_ptr<Curve1d>, std::shared_ptr<Curve1d>>,
47 std::pair<std::vector<double>,
double>>
48 PairCostWithComponents;
52 const std::array<double, 3>& init_s,
54 const std::vector<std::shared_ptr<Curve1d>>& lon_trajectories,
55 const std::vector<std::shared_ptr<Curve1d>>& lat_trajectories,
56 std::shared_ptr<PathTimeGraph> path_time_graph,
57 std::shared_ptr<std::vector<apollo::common::PathPoint>> reference_line);
65 std::pair<std::shared_ptr<Curve1d>, std::shared_ptr<Curve1d>>
74 const std::shared_ptr<Curve1d>& lon_trajectory,
75 const std::shared_ptr<Curve1d>& lat_trajectory,
76 std::vector<double>* cost_components =
nullptr)
const;
78 double LatOffsetCost(
const std::shared_ptr<Curve1d>& lat_trajectory,
79 const std::vector<double>& s_values)
const;
81 double LatComfortCost(
const std::shared_ptr<Curve1d>& lon_trajectory,
82 const std::shared_ptr<Curve1d>& lat_trajectory)
const;
84 double LonComfortCost(
const std::shared_ptr<Curve1d>& lon_trajectory)
const;
86 double LonCollisionCost(
const std::shared_ptr<Curve1d>& lon_trajectory)
const;
88 double LonObjectiveCost(
const std::shared_ptr<Curve1d>& lon_trajectory,
90 const std::vector<double>& ref_s_dot)
const;
92 double CentripetalAccelerationCost(
93 const std::shared_ptr<Curve1d>& lon_trajectory)
const;
95 std::vector<double> ComputeLongitudinalGuideVelocity(
98 bool InterpolateDenseStPoints(
99 const std::vector<apollo::common::SpeedPoint>& st_points,
double t,
100 double* traj_s)
const;
102 struct CostComparator
103 :
public std::binary_function<const PairCost&, const PairCost&, bool> {
104 bool operator()(
const PairCost& left,
const PairCost& right)
const {
105 return left.second > right.second;
109 std::priority_queue<PairCost, std::vector<PairCost>, CostComparator>
112 std::shared_ptr<PathTimeGraph> path_time_graph_;
114 std::shared_ptr<std::vector<apollo::common::PathPoint>> reference_line_;
116 std::vector<std::vector<std::pair<double, double>>> path_time_intervals_;
118 std::array<double, 3> init_s_;
120 std::vector<double> reference_s_dot_;