37 const std::shared_ptr<DependencyInjector>& injector) {
42 return TrafficRule::LoadConfig<YieldSignConfig>(&config_);
47 MakeDecisions(frame, reference_line_info);
51void YieldSign::MakeDecisions(
Frame*
const frame,
54 CHECK_NOTNULL(reference_line_info);
60 const auto& yield_sign_status =
61 injector_->planning_context()->planning_status().yield_sign();
64 const std::vector<PathOverlap>& yield_sign_overlaps =
66 for (
const auto& yield_sign_overlap : yield_sign_overlaps) {
67 if (yield_sign_overlap.end_s <= adc_front_edge_s) {
72 bool yield_sign_done =
false;
73 for (
const auto& done_yield_sign_overlap_id :
74 yield_sign_status.done_yield_sign_overlap_id()) {
75 if (yield_sign_overlap.object_id == done_yield_sign_overlap_id) {
76 yield_sign_done =
true;
80 if (yield_sign_done) {
85 ADEBUG <<
"BuildStopDecision: yield_sign[" << yield_sign_overlap.object_id
86 <<
"] start_s[" << yield_sign_overlap.start_s <<
"]";
87 const std::string virtual_obstacle_id =
88 YIELD_SIGN_VO_ID_PREFIX + yield_sign_overlap.object_id;
89 const std::vector<std::string> wait_for_obstacle_ids(
90 yield_sign_status.wait_for_obstacle_id().begin(),
91 yield_sign_status.wait_for_obstacle_id().end());
93 virtual_obstacle_id, yield_sign_overlap.start_s,
94 config_.
stop_distance(), StopReasonCode::STOP_REASON_YIELD_SIGN,
95 wait_for_obstacle_ids,
Getname(), frame, reference_line_info);
A general class to denote the return status of an API call.
static Status OK()
generate a success status.
const std::vector< PathOverlap > & yield_sign_overlaps() const
Frame holds all data for one planning cycle.
ReferenceLineInfo holds all data for one reference line.
const ReferenceLine & reference_line() const
const SLBoundary & AdcSlBoundary() const
const hdmap::Path & map_path() const
virtual bool Init(const std::string &name, const std::shared_ptr< DependencyInjector > &injector)
std::shared_ptr< DependencyInjector > injector_
common::Status ApplyRule(Frame *const frame, ReferenceLineInfo *const reference_line_info)
bool Init(const std::string &name, const std::shared_ptr< DependencyInjector > &injector) override
Planning module main class.
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)
optional double stop_distance