Apollo
11.0
自动驾驶开放平台
square_scenario.cc
浏览该文件的文档.
1
/******************************************************************************
2
* Copyright 2018 The Apollo Authors. All Rights Reserved.
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*****************************************************************************/
16
21
#include <string>
22
#include "
cyber/common/log.h
"
23
#include "
modules/planning/scenarios/square/square_scenario.h
"
24
25
namespace
apollo
{
26
namespace
planning
{
27
28
bool
SquareScenario::Init
(std::shared_ptr<DependencyInjector> injector,
const
std::string& name) {
29
if
(!
Scenario::Init
(injector, name)) {
30
AERROR
<<
"failed to init scenario"
<<
Name
();
31
return
false
;
32
}
33
34
if
(!Scenario::LoadConfig<apollo::planning::ScenarioSquareConfig>(&context_.
scenario_config
)) {
35
AERROR
<<
"fail to get config of scenario"
<<
Name
();
36
return
false
;
37
}
38
39
return
true
;
40
}
41
42
bool
SquareScenario::IsTransferable
(
const
Scenario
* other_scenario,
const
Frame
& frame) {
43
if
(!frame.
local_view
().
planning_command
->has_lane_follow_command()) {
44
return
false
;
45
}
46
if
(frame.
reference_line_info
().empty() || frame.
reference_line_info
().size() > 1) {
47
return
false
;
48
}
49
const
auto
& reference_line_info = frame.
reference_line_info
().front();
50
hdmap::PathOverlap
junction_overlap;
51
if
(reference_line_info.GetJunction(reference_line_info.AdcSlBoundary().end_s(), &junction_overlap) == 0) {
52
return
false
;
53
}
54
if
(reference_line_info.AdcSlBoundary().start_s() < junction_overlap.
start_s
55
|| reference_line_info.AdcSlBoundary().end_s() > junction_overlap.
end_s
) {
56
return
false
;
57
}
58
context_.
junction_id
= junction_overlap.
object_id
;
59
AERROR
<<
"JUNCTION ID"
<< context_.
junction_id
;
60
return
true
;
61
}
62
63
}
// namespace planning
64
}
// namespace apollo
apollo::planning::Frame
Frame holds all data for one planning cycle.
Definition
frame.h:62
apollo::planning::Frame::local_view
const LocalView & local_view() const
Definition
frame.h:163
apollo::planning::Frame::reference_line_info
const std::list< ReferenceLineInfo > & reference_line_info() const
Definition
frame.cc:123
apollo::planning::Scenario
Definition
scenario.h:52
apollo::planning::Scenario::Init
virtual bool Init(std::shared_ptr< DependencyInjector > injector, const std::string &name)
Definition
scenario.cc:43
apollo::planning::Scenario::Name
const std::string & Name() const
Definition
scenario.h:98
apollo::planning::SquareScenario::Init
bool Init(std::shared_ptr< DependencyInjector > injector, const std::string &name)
Definition
square_scenario.cc:28
apollo::planning::SquareScenario::IsTransferable
bool IsTransferable(const Scenario *other_scenario, const Frame &frame) override
Each scenario should define its own transfer condition, i.e., when it should allow to transfer from o...
Definition
square_scenario.cc:42
planning
Planning module main class.
log.h
AERROR
#define AERROR
Definition
log.h:44
apollo
class register implement
Definition
arena_queue.h:37
square_scenario.h
apollo::hdmap::PathOverlap
Definition
path.h:90
apollo::hdmap::PathOverlap::start_s
double start_s
Definition
path.h:96
apollo::hdmap::PathOverlap::end_s
double end_s
Definition
path.h:97
apollo::hdmap::PathOverlap::object_id
std::string object_id
Definition
path.h:95
apollo::planning::LocalView::planning_command
std::shared_ptr< PlanningCommand > planning_command
Definition
local_view.h:48
apollo::planning::SquareContext::junction_id
std::string junction_id
Definition
context.h:33
apollo::planning::SquareContext::scenario_config
ScenarioSquareConfig scenario_config
Definition
context.h:32
modules
planning
scenarios
square
square_scenario.cc