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

#include <square_lane_follow_stage.h>

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

Public 成员函数

bool Init (const StagePipeline &config, const std::shared_ptr< DependencyInjector > &injector, const std::string &config_dir, void *context)
 
StageResult Process (const common::TrajectoryPoint &planning_init_point, Frame *frame) override
 Each stage does its business logic inside Process function.
 
StageResult PlanOnReferenceLine (const common::TrajectoryPoint &planning_start_point, Frame *frame, ReferenceLineInfo *reference_line_info)
 
void PlanFallbackTrajectory (const common::TrajectoryPoint &planning_start_point, Frame *frame, ReferenceLineInfo *reference_line_info)
 
common::SLPoint GetStopSL (const ObjectStop &stop_decision, const ReferenceLine &reference_line) const
 
void RecordObstacleDebugInfo (ReferenceLineInfo *reference_line_info)
 
StageResult FinishStage ()
 
- Public 成员函数 继承自 apollo::planning::Stage
 Stage ()
 
virtual ~Stage ()=default
 
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_
 

详细描述

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

成员函数说明

◆ FinishStage()

StageResult apollo::planning::SquareLaneFollowStage::FinishStage ( )

在文件 square_lane_follow_stage.cc 第 123 行定义.

123 {
124 next_stage_ = "EXTRICATE_STAGE";
125 return StageResult(StageStatusType::FINISHED);
126}
std::string next_stage_
Definition stage.h:89

◆ GetStopSL()

common::SLPoint apollo::planning::SquareLaneFollowStage::GetStopSL ( const ObjectStop &  stop_decision,
const ReferenceLine &  reference_line 
) const

◆ Init()

bool apollo::planning::SquareLaneFollowStage::Init ( const StagePipeline &  config,
const std::shared_ptr< DependencyInjector > &  injector,
const std::string &  config_dir,
void *  context 
)
virtual

重载 apollo::planning::Stage .

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

39 {
40 CHECK_NOTNULL(context);
41 bool ret = Stage::Init(config, injector, config_dir, context);
42 if (!ret) {
43 AERROR << Name() << "init failed!";
44 return false;
45 }
46 return ret;
47}
virtual bool Init(const StagePipeline &config, const std::shared_ptr< DependencyInjector > &injector, const std::string &config_dir, void *context)
Definition stage.cc:43
const std::string & Name() const
Definition stage.cc:99
#define AERROR
Definition log.h:44

◆ PlanFallbackTrajectory()

void apollo::planning::SquareLaneFollowStage::PlanFallbackTrajectory ( const common::TrajectoryPoint &  planning_start_point,
Frame *  frame,
ReferenceLineInfo *  reference_line_info 
)

◆ PlanOnReferenceLine()

StageResult apollo::planning::SquareLaneFollowStage::PlanOnReferenceLine ( const common::TrajectoryPoint &  planning_start_point,
Frame *  frame,
ReferenceLineInfo *  reference_line_info 
)

◆ Process()

StageResult apollo::planning::SquareLaneFollowStage::Process ( const common::TrajectoryPoint &  planning_init_point,
Frame *  frame 
)
overridevirtual

Each stage does its business logic inside Process function.

If the stage want to transit to a different stage after finish, it should set the type of 'next_stage_'.

实现了 apollo::planning::Stage.

在文件 square_lane_follow_stage.cc 第 49 行定义.

49 {
50 AINFO << "In SquareLaneFollowStage";
51 if (frame->reference_line_info().empty()) {
52 return StageResult(StageStatusType::FINISHED);
53 }
54 apollo::common::VehicleState vehicle_state = injector_->vehicle_state()->vehicle_state();
55 if (vehicle_state.gear() == canbus::Chassis::GEAR_REVERSE) {
56 frame->mutable_open_space_info()->set_is_on_open_space_trajectory(true);
57 auto* traj_pair = frame->mutable_open_space_info()->mutable_publishable_trajectory_data();
58 static constexpr double gear_shift_max_t = 5.0;
59 static constexpr double gear_shift_unit_t = 0.1;
60 for (double t = 0.0; t < gear_shift_max_t; t += gear_shift_unit_t) {
61 common::TrajectoryPoint point;
62 point.mutable_path_point()->set_x(frame->vehicle_state().x());
63 point.mutable_path_point()->set_y(frame->vehicle_state().y());
64 point.mutable_path_point()->set_theta(frame->vehicle_state().heading());
65 point.mutable_path_point()->set_s(0.0);
66 point.mutable_path_point()->set_kappa(0);
67 point.set_relative_time(t);
68 point.set_v(0.0);
69 point.set_a(0.0);
70 traj_pair->first.emplace_back(point);
71 }
72 traj_pair->second = apollo::canbus::Chassis::GEAR_DRIVE;
73 AINFO << "GEAR SHIFT TO DRIVE";
74 return StageResult(StageStatusType::RUNNING);
75 }
76 std::string junction_id = GetContextAs<SquareContext>()->junction_id;
77 StageResult result = ExecuteTaskOnReferenceLine(planning_start_point, frame);
78 if (result.HasError()) {
79 AERROR << "SquareLaneFollowStage planning error";
80 }
81 const auto& reference_line_info = frame->reference_line_info().back();
82 hdmap::PathOverlap* current_pnc_junction
83 = reference_line_info.GetOverlapOnReferenceLine(junction_id, ReferenceLineInfo::JUNCTION);
84 double adc_end_s = reference_line_info.AdcSlBoundary().end_s();
85 if (!current_pnc_junction || current_pnc_junction->end_s < adc_end_s) {
86 return FinishScenario();
87 }
88 const auto& path_data = reference_line_info.path_data();
89 bool is_path_blocked = false;
90 if (path_data.path_label().find("regular") == std::string::npos) {
91 is_path_blocked = true;
92 } else if (!path_data.blocking_obstacle_id().empty()) {
93 is_path_blocked = true;
94 } else {
95 is_path_blocked = false;
96 }
97 bool is_square_path_block = is_path_blocked && vehicle_state.linear_velocity() < 0.1;
98
99 double trajectory_length = 0;
100 if (reference_line_info.trajectory().size() > 0) {
101 trajectory_length = reference_line_info.trajectory().back().path_point().s()
102 - reference_line_info.trajectory().front().path_point().s();
103 }
104 is_square_path_block = is_square_path_block
105 || (path_data.path_label().find("square") != std::string::npos && vehicle_state.linear_velocity() < 0.1
106 && trajectory_length < 0.1);
107 if (is_square_path_block) {
108 blocking_times_ = std::min<int>(blocking_times_ + 1, 50);
109 } else {
110 blocking_times_ = 0;
111 }
112 AINFO << "label: " << path_data.path_label() << ", blocking_obstacle_id: " << path_data.blocking_obstacle_id()
113 << ", is_path_blocked: " << is_path_blocked
114 << ", vehicle_state.linear_velocity: " << vehicle_state.linear_velocity()
115 << ", blocking_times_: " << blocking_times_;
116 if (blocking_times_ >= 50) {
117 auto* context = GetContextAs<SquareContext>();
118 context->blocking_obstacle_id = path_data.blocking_obstacle_id();
119 return FinishStage();
120 }
121 return StageResult(StageStatusType::RUNNING);
122}
virtual StageResult FinishScenario()
Definition stage.cc:258
std::shared_ptr< DependencyInjector > injector_
Definition stage.h:91
StageResult ExecuteTaskOnReferenceLine(const common::TrajectoryPoint &planning_start_point, Frame *frame)
Definition stage.cc:101
#define AINFO
Definition log.h:42
optional apollo::canbus::Chassis::GearPosition gear

◆ RecordObstacleDebugInfo()

void apollo::planning::SquareLaneFollowStage::RecordObstacleDebugInfo ( ReferenceLineInfo *  reference_line_info)

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