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

#include <base_stage_cruise.h>

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

Public 成员函数

bool CheckDone (const Frame &frame, const PlanningContext *context, const bool right_of_way_status)
 
- 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_cruise.h 第 36 行定义.

成员函数说明

◆ CheckDone()

bool apollo::planning::BaseStageCruise::CheckDone ( const Frame &  frame,
const PlanningContext *  context,
const bool  right_of_way_status 
)

在文件 base_stage_cruise.cc 第 34 行定义.

36 {
37 const auto& reference_line_info = frame.reference_line_info().front();
38
39 const auto& junction_overlaps =
40 reference_line_info.reference_line().map_path().junction_overlaps();
41 if (junction_overlaps.empty()) {
42 // TODO(all): remove when pnc_junction completely available on map
43 // pnc_junction not exist on map, use current traffic_sign's end_s
44 // get traffic sign overlap along reference line
45 hdmap::PathOverlap* traffic_sign_overlap =
46 GetTrafficSignOverlap(reference_line_info, context);
47 if (!traffic_sign_overlap) {
48 return true;
49 }
50
51 static constexpr double kIntersectionPassDist = 20.0; // unit: m
52 const double adc_back_edge_s =
53 reference_line_info.AdcSlBoundary().start_s();
54 const double distance_adc_pass_traffic_sign =
55 adc_back_edge_s - traffic_sign_overlap->end_s;
56 ADEBUG << "distance_adc_pass_traffic_sign["
57 << distance_adc_pass_traffic_sign << "] traffic_sign_end_s["
58 << traffic_sign_overlap->end_s << "]";
59
60 // set right_of_way_status
61 reference_line_info.SetJunctionRightOfWay(traffic_sign_overlap->start_s,
62 right_of_way_status);
63
64 return distance_adc_pass_traffic_sign >= kIntersectionPassDist;
65 }
66
67 if (!planning::util::CheckInsideJunction(reference_line_info)) {
68 return true;
69 }
70
71 // set right_of_way_status
72 hdmap::PathOverlap junction_overlap;
73 const double adc_front_edge_s = reference_line_info.AdcSlBoundary().end_s();
74 reference_line_info.GetJunction(adc_front_edge_s, &junction_overlap);
75 reference_line_info.SetJunctionRightOfWay(junction_overlap.start_s,
76 right_of_way_status);
77
78 return false;
79}
#define ADEBUG
Definition log.h:41
bool CheckInsideJunction(const ReferenceLineInfo &reference_line_info)
Definition util.cc:115

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