31 #include "modules/planning/proto/planning_config.pb.h" 48 const std::shared_ptr<DependencyInjector>& injector);
50 virtual ~Stage() =
default;
62 const common::TrajectoryPoint& planning_init_point,
Frame* frame) = 0;
70 const std::string&
Name()
const;
85 const common::TrajectoryPoint& planning_start_point,
Frame* frame);
88 const common::TrajectoryPoint& planning_start_point,
Frame* frame);
95 const std::string& name,
const double time_diff_ms);
98 std::map<TaskConfig::TaskType, std::unique_ptr<Task>>
tasks_;
107 #define DECLARE_STAGE(NAME, CONTEXT) \ 108 class NAME : public Stage { \ 110 explicit NAME(const ScenarioConfig::StageConfig& config) \ 112 Stage::StageStatus Process( \ 113 const common::TrajectoryPoint& planning_init_point, \ 114 Frame* frame) override; \ 115 CONTEXT* GetContext() { return GetContextAs<CONTEXT>(); } \ void SetContext(void *context)
Definition: stage.h:77
std::shared_ptr< DependencyInjector > injector_
Definition: stage.h:104
std::map< TaskConfig::TaskType, std::unique_ptr< Task > > tasks_
Definition: stage.h:98
std::string name_
Definition: stage.h:103
ScenarioConfig::StageType next_stage_
Definition: stage.h:101
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
ScenarioConfig::StageType NextStage() const
Definition: stage.h:81
bool ExecuteTaskOnOpenSpace(Frame *frame)
Planning module main class. It processes GPS and IMU as input, to generate planning info...
const ScenarioConfig::StageConfig & config() const
Definition: stage.h:52
Frame holds all data for one planning cycle.
Definition: frame.h:61
ReferenceLineInfo holds all data for one reference line.
Definition: reference_line_info.h:54
bool ExecuteTaskOnReferenceLine(const common::TrajectoryPoint &planning_start_point, Frame *frame)
ScenarioConfig::StageConfig config_
Definition: stage.h:100
ScenarioConfig::StageType stage_type() const
Definition: stage.h:54
std::vector< Task * > task_list_
Definition: stage.h:99
Task * FindTask(TaskConfig::TaskType task_type) const
StageStatus
Definition: stage.h:40
Defines the Factory class.
virtual Stage::StageStatus FinishScenario()
const std::vector< Task * > & TaskList() const
The sequence of tasks inside the stage. These tasks usually will be executed in order.
Definition: stage.h:68
T * GetContextAs()
Definition: stage.h:73
const std::string & Name() const
void RecordDebugInfo(ReferenceLineInfo *reference_line_info, const std::string &name, const double time_diff_ms)
bool ExecuteTaskOnReferenceLineForOnlineLearning(const common::TrajectoryPoint &planning_start_point, Frame *frame)
Stage(const ScenarioConfig::StageConfig &config, const std::shared_ptr< DependencyInjector > &injector)
void * context_
Definition: stage.h:102
virtual StageStatus Process(const common::TrajectoryPoint &planning_init_point, Frame *frame)=0
Each stage does its business logic inside Process function. If the stage want to transit to a differe...