27#include "modules/planning/planning_base/proto/lattice_structure.pb.h"
43 const std::array<double, 3>& lon_init_state,
44 const std::array<double, 3>& lat_init_state,
45 std::shared_ptr<PathTimeGraph> ptr_path_time_graph,
46 std::shared_ptr<PredictionQuerier> ptr_prediction_querier);
52 std::vector<std::shared_ptr<Curve1d>>* ptr_lon_trajectory_bundle,
53 std::vector<std::shared_ptr<Curve1d>>* ptr_lat_trajectory_bundle);
56 std::vector<std::shared_ptr<Curve1d>>* ptr_lat_trajectory_bundle)
const;
59 void GenerateSpeedProfilesForCruising(
60 const double target_speed,
61 std::vector<std::shared_ptr<Curve1d>>* ptr_lon_trajectory_bundle)
const;
63 void GenerateSpeedProfilesForStopping(
64 const double stop_point,
65 std::vector<std::shared_ptr<Curve1d>>* ptr_lon_trajectory_bundle)
const;
67 void GenerateSpeedProfilesForPathTimeObstacles(
68 std::vector<std::shared_ptr<Curve1d>>* ptr_lon_trajectory_bundle)
const;
70 void GenerateLongitudinalTrajectoryBundle(
72 std::vector<std::shared_ptr<Curve1d>>* ptr_lon_trajectory_bundle)
const;
75 void GenerateTrajectory1DBundle(
76 const std::array<double, 3>& init_state,
77 const std::vector<std::pair<std::array<double, 3>,
double>>&
79 std::vector<std::shared_ptr<Curve1d>>* ptr_trajectory_bundle)
const;
82 std::array<double, 3> init_lon_state_;
84 std::array<double, 3> init_lat_state_;
88 std::shared_ptr<PathTimeGraph> ptr_path_time_graph_;
92inline void Trajectory1dGenerator::GenerateTrajectory1DBundle<4>(
93 const std::array<double, 3>& init_state,
94 const std::vector<std::pair<std::array<double, 3>,
double>>& end_conditions,
95 std::vector<std::shared_ptr<Curve1d>>* ptr_trajectory_bundle)
const {
96 CHECK_NOTNULL(ptr_trajectory_bundle);
97 ACHECK(!end_conditions.empty());
99 ptr_trajectory_bundle->reserve(ptr_trajectory_bundle->size() +
100 end_conditions.size());
101 for (
const auto& end_condition : end_conditions) {
102 auto ptr_trajectory1d = std::make_shared<LatticeTrajectory1d>(
104 init_state, {end_condition.first[1], end_condition.first[2]},
105 end_condition.second)));
107 ptr_trajectory1d->set_target_velocity(end_condition.first[1]);
108 ptr_trajectory1d->set_target_time(end_condition.second);
109 ptr_trajectory_bundle->push_back(ptr_trajectory1d);
114inline void Trajectory1dGenerator::GenerateTrajectory1DBundle<5>(
115 const std::array<double, 3>& init_state,
116 const std::vector<std::pair<std::array<double, 3>,
double>>& end_conditions,
117 std::vector<std::shared_ptr<Curve1d>>* ptr_trajectory_bundle)
const {
118 CHECK_NOTNULL(ptr_trajectory_bundle);
119 ACHECK(!end_conditions.empty());
121 ptr_trajectory_bundle->reserve(ptr_trajectory_bundle->size() +
122 end_conditions.size());
123 for (
const auto& end_condition : end_conditions) {
124 auto ptr_trajectory1d = std::make_shared<LatticeTrajectory1d>(
125 std::shared_ptr<Curve1d>(
new QuinticPolynomialCurve1d(
126 init_state, end_condition.first, end_condition.second)));
128 ptr_trajectory1d->set_target_position(end_condition.first[0]);
129 ptr_trajectory1d->set_target_velocity(end_condition.first[1]);
130 ptr_trajectory1d->set_target_time(end_condition.second);
131 ptr_trajectory_bundle->push_back(ptr_trajectory1d);
void GenerateLateralTrajectoryBundle(std::vector< std::shared_ptr< Curve1d > > *ptr_lat_trajectory_bundle) const
virtual ~Trajectory1dGenerator()=default
void GenerateTrajectoryBundles(const PlanningTarget &planning_target, std::vector< std::shared_ptr< Curve1d > > *ptr_lon_trajectory_bundle, std::vector< std::shared_ptr< Curve1d > > *ptr_lat_trajectory_bundle)
Planning module main class.