Apollo 11.0
自动驾驶开放平台
apollo::planning::BaseStageCreep类 参考abstract

#include <base_stage_creep.h>

类 apollo::planning::BaseStageCreep 继承关系图:
apollo::planning::BaseStageCreep 的协作图:

Public 成员函数

common::Status ProcessCreep (Frame *frame, ReferenceLineInfo *reference_line_info) const
 
bool CheckCreepDone (const Frame &frame, const ReferenceLineInfo &reference_line_info, const double stop_sign_overlap_end_s, const double wait_time_sec, const double timeout_sec)
 
double GetCreepFinishS (double overlap_end_s, const Frame &frame, const ReferenceLineInfo &reference_line_info) const
 Get the postion where creeping stage finishes.
 
- Public 成员函数 继承自 apollo::planning::Stage
 Stage ()
 
virtual bool Init (const StagePipeline &config, const std::shared_ptr< DependencyInjector > &injector, const std::string &config_dir, void *context)
 
virtual ~Stage ()=default
 
virtual StageResult Process (const common::TrajectoryPoint &planning_init_point, Frame *frame)=0
 Each stage does its business logic inside Process function.
 
const std::string & Name () const
 
template<typename T >
T * GetContextAs () const
 
const std::string & NextStage () const
 

额外继承的成员函数

- Protected 成员函数 继承自 apollo::planning::Stage
StageResult ExecuteTaskOnReferenceLine (const common::TrajectoryPoint &planning_start_point, Frame *frame)
 
StageResult ExecuteTaskOnReferenceLineForOnlineLearning (const common::TrajectoryPoint &planning_start_point, Frame *frame)
 
StageResult ExecuteTaskOnOpenSpace (Frame *frame)
 
virtual StageResult FinishScenario ()
 
void RecordDebugInfo (ReferenceLineInfo *reference_line_info, const std::string &name, const double time_diff_ms)
 
- Protected 属性 继承自 apollo::planning::Stage
std::vector< std::shared_ptr< Task > > task_list_
 
std::shared_ptr< Task > fallback_task_
 
std::string next_stage_
 
void * context_
 
std::shared_ptr< DependencyInjector > injector_
 
StagePipeline pipeline_config_
 

详细描述

在文件 base_stage_creep.h 第 41 行定义.

成员函数说明

◆ CheckCreepDone()

bool apollo::planning::BaseStageCreep::CheckCreepDone ( const Frame &  frame,
const ReferenceLineInfo &  reference_line_info,
const double  stop_sign_overlap_end_s,
const double  wait_time_sec,
const double  timeout_sec 
)

在文件 base_stage_creep.cc 第 79 行定义.

82 {
83 const auto& creep_config = GetCreepStageConfig();
84 bool creep_done = false;
85 double creep_stop_s =
86 GetCreepFinishS(traffic_sign_overlap_end_s, frame, reference_line_info);
87
88 const double distance =
89 creep_stop_s - reference_line_info.AdcSlBoundary().end_s();
90 if (distance < 0.0 || wait_time_sec >= timeout_sec) {
91 bool all_far_away = true;
92 for (auto* obstacle :
93 reference_line_info.path_decision().obstacles().Items()) {
94 if (obstacle->IsVirtual() || obstacle->IsStatic()) {
95 continue;
96 }
97 if (obstacle->reference_line_st_boundary().min_t() <
98 creep_config.min_boundary_t()) {
99 const double kepsilon = 1e-6;
100 double obstacle_traveled_s =
101 obstacle->reference_line_st_boundary().bottom_left_point().s() -
102 obstacle->reference_line_st_boundary().bottom_right_point().s();
103 ADEBUG << "obstacle[" << obstacle->Id() << "] obstacle_st_min_t["
104 << obstacle->reference_line_st_boundary().min_t()
105 << "] obstacle_st_min_s["
106 << obstacle->reference_line_st_boundary().min_s()
107 << "] obstacle_traveled_s[" << obstacle_traveled_s << "]";
108
109 // ignore the obstacle which is already on reference line and moving
110 // along the direction of ADC
111 if (obstacle_traveled_s < kepsilon &&
112 obstacle->reference_line_st_boundary().min_t() <
113 creep_config.ignore_max_st_min_t() &&
114 obstacle->reference_line_st_boundary().min_s() >
115 creep_config.ignore_min_st_min_s()) {
116 continue;
117 }
118 all_far_away = false;
119 break;
120 }
121 }
122 auto* creep_decider_status = injector_->planning_context()
123 ->mutable_planning_status()
124 ->mutable_creep_decider();
125 int creep_clear_counter = creep_decider_status->creep_clear_counter();
126 creep_clear_counter = all_far_away ? creep_clear_counter + 1 : 0;
127 if (creep_clear_counter >= 5) {
128 creep_clear_counter = 0; // reset
129 creep_done = true;
130 }
131 // use PlanningContext instead of static counter for multi-ADC
132 creep_decider_status->set_creep_clear_counter(creep_clear_counter);
133 }
134
135 return creep_done;
136}
double GetCreepFinishS(double overlap_end_s, const Frame &frame, const ReferenceLineInfo &reference_line_info) const
Get the postion where creeping stage finishes.
std::shared_ptr< DependencyInjector > injector_
Definition stage.h:91
#define ADEBUG
Definition log.h:41

◆ GetCreepFinishS()

double apollo::planning::BaseStageCreep::GetCreepFinishS ( double  overlap_end_s,
const Frame &  frame,
const ReferenceLineInfo &  reference_line_info 
) const

Get the postion where creeping stage finishes.

When the front edge of vehicle reaches the position, the creeping stage finishes.

参数
overlap_end_sThe end s mapped to reference line of the overlap.
frameThe frame information for current planning cycle.
reference_line_infoThe reference line information of current planning cycle.
返回
The distance where creeping stage finishes.

在文件 base_stage_creep.cc 第 72 行定义.

74 {
75 // todo: more delicate design of creep finish distance
76 return GetCreepTargetS(overlap_end_s, frame, reference_line_info) - 2.0;
77}

◆ ProcessCreep()

Status apollo::planning::BaseStageCreep::ProcessCreep ( Frame *  frame,
ReferenceLineInfo *  reference_line_info 
) const

在文件 base_stage_creep.cc 第 41 行定义.

42 {
43 CHECK_NOTNULL(frame);
44 CHECK_NOTNULL(reference_line_info);
45
46 double overlap_end_s = 0.0;
47 std::string current_overlap_id;
48 bool is_get_overlap_info = GetOverlapStopInfo(
49 frame, reference_line_info, &overlap_end_s, &current_overlap_id);
50
51 if (is_get_overlap_info) {
52 std::string virtual_obstacle_id = CREEP_VO_ID_PREFIX_ + current_overlap_id;
53 const double creep_stop_s =
54 GetCreepTargetS(overlap_end_s, *frame, *reference_line_info);
55 const std::vector<std::string> wait_for_obstacles;
56 util::BuildStopDecision(virtual_obstacle_id, creep_stop_s, 0.0,
57 StopReasonCode::STOP_REASON_CREEPER,
58 wait_for_obstacles, "CreepDecider", frame,
59 reference_line_info);
60 }
61
62 return Status::OK();
63}
static Status OK()
generate a success status.
Definition status.h:60
int BuildStopDecision(const std::string &stop_wall_id, const double stop_line_s, const double stop_distance, const StopReasonCode &stop_reason_code, const std::vector< std::string > &wait_for_obstacles, const std::string &decision_tag, Frame *const frame, ReferenceLineInfo *const reference_line_info, double stop_wall_width)
Definition common.cc:28

该类的文档由以下文件生成: