31 #include "modules/planning/proto/lattice_structure.pb.h" 32 #include "modules/planning/proto/planning_config.pb.h" 37 class TrajectoryEvaluator {
40 std::pair<std::shared_ptr<Curve1d>, std::shared_ptr<Curve1d>>,
double>
45 std::pair<std::shared_ptr<Curve1d>, std::shared_ptr<Curve1d>>,
46 std::pair<std::vector<double>,
double>>
47 PairCostWithComponents;
51 const std::array<double, 3>& init_s,
52 const PlanningTarget& planning_target,
53 const std::vector<std::shared_ptr<Curve1d>>& lon_trajectories,
54 const std::vector<std::shared_ptr<Curve1d>>& lat_trajectories,
55 std::shared_ptr<PathTimeGraph> path_time_graph,
56 std::shared_ptr<std::vector<apollo::common::PathPoint>> reference_line);
64 std::pair<std::shared_ptr<Curve1d>, std::shared_ptr<Curve1d>>
72 double Evaluate(
const PlanningTarget& planning_target,
73 const std::shared_ptr<Curve1d>& lon_trajectory,
74 const std::shared_ptr<Curve1d>& lat_trajectory,
75 std::vector<double>* cost_components =
nullptr)
const;
77 double LatOffsetCost(
const std::shared_ptr<Curve1d>& lat_trajectory,
78 const std::vector<double>& s_values)
const;
80 double LatComfortCost(
const std::shared_ptr<Curve1d>& lon_trajectory,
81 const std::shared_ptr<Curve1d>& lat_trajectory)
const;
83 double LonComfortCost(
const std::shared_ptr<Curve1d>& lon_trajectory)
const;
85 double LonCollisionCost(
const std::shared_ptr<Curve1d>& lon_trajectory)
const;
87 double LonObjectiveCost(
const std::shared_ptr<Curve1d>& lon_trajectory,
88 const PlanningTarget& planning_target,
89 const std::vector<double>& ref_s_dot)
const;
91 double CentripetalAccelerationCost(
92 const std::shared_ptr<Curve1d>& lon_trajectory)
const;
94 std::vector<double> ComputeLongitudinalGuideVelocity(
95 const PlanningTarget& planning_target)
const;
97 bool InterpolateDenseStPoints(
98 const std::vector<apollo::common::SpeedPoint>& st_points,
double t,
99 double* traj_s)
const;
101 struct CostComparator
102 :
public std::binary_function<const PairCost&, const PairCost&, bool> {
103 bool operator()(
const PairCost& left,
const PairCost& right)
const {
104 return left.second > right.second;
108 std::priority_queue<PairCost, std::vector<PairCost>, CostComparator>
111 std::shared_ptr<PathTimeGraph> path_time_graph_;
113 std::shared_ptr<std::vector<apollo::common::PathPoint>> reference_line_;
115 std::vector<std::vector<std::pair<double, double>>> path_time_intervals_;
117 std::array<double, 3> init_s_;
119 std::vector<double> reference_s_dot_;
bool has_more_trajectory_pairs() const
std::pair< std::shared_ptr< Curve1d >, std::shared_ptr< Curve1d > > next_top_trajectory_pair()
size_t num_of_trajectory_pairs() const
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
TrajectoryEvaluator(const std::array< double, 3 > &init_s, const PlanningTarget &planning_target, const std::vector< std::shared_ptr< Curve1d >> &lon_trajectories, const std::vector< std::shared_ptr< Curve1d >> &lat_trajectories, std::shared_ptr< PathTimeGraph > path_time_graph, std::shared_ptr< std::vector< apollo::common::PathPoint >> reference_line)
Planning module main class. It processes GPS and IMU as input, to generate planning info...
double top_trajectory_pair_cost() const
std::vector< double > top_trajectory_pair_component_cost() const
~TrajectoryEvaluator()=default