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

PathDecision represents all obstacle decisions on one path. 更多...

#include <path_decision.h>

apollo::planning::PathDecision 的协作图:

Public 成员函数

 PathDecision ()=default
 
Obstacle * AddObstacle (const Obstacle &obstacle)
 
const IndexedList< std::string, Obstacle > & obstacles () const
 
bool AddLateralDecision (const std::string &tag, const std::string &object_id, const ObjectDecisionType &decision)
 
bool AddLongitudinalDecision (const std::string &tag, const std::string &object_id, const ObjectDecisionType &decision)
 
const Obstacle * Find (const std::string &object_id) const
 
const perception::PerceptionObstacle * FindPerceptionObstacle (const std::string &perception_obstacle_id) const
 
Obstacle * Find (const std::string &object_id)
 
void SetSTBoundary (const std::string &id, const STBoundary &boundary)
 
void EraseStBoundaries ()
 
MainStop main_stop () const
 
double stop_reference_line_s () const
 
bool MergeWithMainStop (const ObjectStop &obj_stop, const std::string &obj_id, const ReferenceLine &ref_line, const SLBoundary &adc_sl_boundary)
 

详细描述

PathDecision represents all obstacle decisions on one path.

在文件 path_decision.h 第 39 行定义.

构造及析构函数说明

◆ PathDecision()

apollo::planning::PathDecision::PathDecision ( )
default

成员函数说明

◆ AddLateralDecision()

bool apollo::planning::PathDecision::AddLateralDecision ( const std::string &  tag,
const std::string &  object_id,
const ObjectDecisionType &  decision 
)

在文件 path_decision.cc 第 68 行定义.

70 {
71 auto *obstacle = obstacles_.Find(object_id);
72 if (!obstacle) {
73 AERROR << "failed to find obstacle";
74 return false;
75 }
76 obstacle->AddLateralDecision(tag, decision);
77 return true;
78}
T * Find(const I id)
Find object by id in the container
void AddLateralDecision(const std::string &decider_tag, const ObjectDecisionType &decision)
Definition obstacle.cc:661
#define AERROR
Definition log.h:44

◆ AddLongitudinalDecision()

bool apollo::planning::PathDecision::AddLongitudinalDecision ( const std::string &  tag,
const std::string &  object_id,
const ObjectDecisionType &  decision 
)

在文件 path_decision.cc 第 87 行定义.

89 {
90 auto *obstacle = obstacles_.Find(object_id);
91 if (!obstacle) {
92 AERROR << "failed to find obstacle";
93 return false;
94 }
95 obstacle->AddLongitudinalDecision(tag, decision);
96 return true;
97}
void AddLongitudinalDecision(const std::string &decider_tag, const ObjectDecisionType &decision)
Definition obstacle.cc:646

◆ AddObstacle()

Obstacle * apollo::planning::PathDecision::AddObstacle ( const Obstacle &  obstacle)

在文件 path_decision.cc 第 31 行定义.

31 {
32 return obstacles_.Add(obstacle.Id(), obstacle);
33}
T * Add(const I id, const T &object)
copy object into the container.

◆ EraseStBoundaries()

void apollo::planning::PathDecision::EraseStBoundaries ( )

在文件 path_decision.cc 第 80 行定义.

80 {
81 for (const auto *obstacle : obstacles_.Items()) {
82 auto *obstacle_ptr = obstacles_.Find(obstacle->Id());
83 obstacle_ptr->EraseStBoundary();
84 }
85}

◆ Find() [1/2]

Obstacle * apollo::planning::PathDecision::Find ( const std::string &  object_id)

在文件 path_decision.cc 第 37 行定义.

37 {
38 return obstacles_.Find(object_id);
39}

◆ Find() [2/2]

const Obstacle * apollo::planning::PathDecision::Find ( const std::string &  object_id) const

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

41 {
42 return obstacles_.Find(object_id);
43}

◆ FindPerceptionObstacle()

const perception::PerceptionObstacle * apollo::planning::PathDecision::FindPerceptionObstacle ( const std::string &  perception_obstacle_id) const

在文件 path_decision.cc 第 45 行定义.

46 {
47 for (const auto *obstacle : obstacles_.Items()) {
48 if (std::to_string(obstacle->Perception().id()) == perception_obstacle_id) {
49 return &(obstacle->Perception());
50 }
51 }
52
53 return nullptr;
54}

◆ main_stop()

MainStop apollo::planning::PathDecision::main_stop ( ) const
inline

在文件 path_decision.h 第 62 行定义.

62{ return main_stop_; }

◆ MergeWithMainStop()

bool apollo::planning::PathDecision::MergeWithMainStop ( const ObjectStop &  obj_stop,
const std::string &  obj_id,
const ReferenceLine &  ref_line,
const SLBoundary &  adc_sl_boundary 
)

在文件 path_decision.cc 第 99 行定义.

102 {
103 common::PointENU stop_point = obj_stop.stop_point();
104 common::SLPoint stop_line_sl;
105 reference_line.XYToSL(stop_point, &stop_line_sl);
106
107 double stop_line_s = stop_line_sl.s();
108 if (stop_line_s < 0.0 || stop_line_s > reference_line.Length()) {
109 AERROR << "Ignore object:" << obj_id << " fence route_s[" << stop_line_s
110 << "] not in range[0, " << reference_line.Length() << "]";
111 return false;
112 }
113
114 // check stop_line_s vs adc_s, ignore if it is further way than main stop
115 const auto &vehicle_config = common::VehicleConfigHelper::GetConfig();
116 stop_line_s = std::fmax(
117 stop_line_s, adc_sl_boundary.end_s() -
118 vehicle_config.vehicle_param().front_edge_to_center());
119
120 if (stop_line_s >= stop_reference_line_s_) {
121 ADEBUG << "stop point is farther than current main stop point.";
122 return false;
123 }
124
125 main_stop_.Clear();
126 main_stop_.set_reason_code(obj_stop.reason_code());
127 main_stop_.set_reason("stop by " + obj_id);
128 main_stop_.mutable_stop_point()->set_x(obj_stop.stop_point().x());
129 main_stop_.mutable_stop_point()->set_y(obj_stop.stop_point().y());
130 main_stop_.set_stop_heading(obj_stop.stop_heading());
131 stop_reference_line_s_ = stop_line_s;
132
133 ADEBUG << " main stop obstacle id:" << obj_id
134 << " stop_line_s:" << stop_line_s << " stop_point: ("
135 << obj_stop.stop_point().x() << obj_stop.stop_point().y()
136 << " ) stop_heading: " << obj_stop.stop_heading();
137 return true;
138}
static const VehicleConfig & GetConfig()
Get the current vehicle configuration.
#define ADEBUG
Definition log.h:41

◆ obstacles()

const IndexedObstacles & apollo::planning::PathDecision::obstacles ( ) const

在文件 path_decision.cc 第 35 行定义.

35{ return obstacles_; }

◆ SetSTBoundary()

void apollo::planning::PathDecision::SetSTBoundary ( const std::string &  id,
const STBoundary &  boundary 
)

在文件 path_decision.cc 第 56 行定义.

57 {
58 auto *obstacle = obstacles_.Find(id);
59
60 if (!obstacle) {
61 AERROR << "Failed to find obstacle : " << id;
62 return;
63 } else {
64 obstacle->set_path_st_boundary(boundary);
65 }
66}
void set_path_st_boundary(const STBoundary &boundary)
Definition obstacle.cc:698

◆ stop_reference_line_s()

double apollo::planning::PathDecision::stop_reference_line_s ( ) const
inline

在文件 path_decision.h 第 63 行定义.

63{ return stop_reference_line_s_; }

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