Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Pinoxchio
apollo
提交
0837040a
A
apollo
项目概览
Pinoxchio
/
apollo
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apollo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0837040a
编写于
12月 10, 2019
作者:
J
jmtao
提交者:
Xiangquan Xiao
12月 10, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
planning: update the logic of engage advice
上级
c89059d6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
32 addition
and
33 deletion
+32
-33
modules/planning/common/reference_line_info.cc
modules/planning/common/reference_line_info.cc
+32
-27
modules/planning/scenarios/park_and_go/stage_check.cc
modules/planning/scenarios/park_and_go/stage_check.cc
+0
-6
未找到文件。
modules/planning/common/reference_line_info.cc
浏览文件 @
0837040a
...
...
@@ -23,6 +23,7 @@
#include <algorithm>
#include "cyber/task/task.h"
#include "modules/planning/proto/planning_status.pb.h"
#include "modules/planning/proto/sl_boundary.pb.h"
#include "absl/strings/str_cat.h"
...
...
@@ -783,45 +784,49 @@ void ReferenceLineInfo::SetObjectDecisions(
}
void
ReferenceLineInfo
::
ExportEngageAdvice
(
EngageAdvice
*
engage_advice
)
const
{
static
EngageAdvice
prev_advice
;
static
constexpr
double
kMaxAngleDiff
=
M_PI
/
6.0
;
auto
*
prev_advice
=
PlanningContext
::
Instance
()
->
mutable_planning_status
()
->
mutable_engage_advice
();
if
(
!
prev_advice
->
has_advice
())
{
prev_advice
->
set_advice
(
EngageAdvice
::
DISALLOW_ENGAGE
);
}
bool
engage
=
false
;
if
(
!
IsDrivable
())
{
if
(
prev_advice
->
advice
()
!=
EngageAdvice
::
DISALLOW_ENGAGE
)
{
prev_advice
->
set_advice
(
EngageAdvice
::
PREPARE_DISENGAGE
);
}
prev_advice
->
set_reason
(
"Reference line not drivable"
);
}
else
if
(
!
is_on_reference_line_
&&
!
FLAGS_enable_start_auto_from_off_lane
)
{
if
(
prev_advice
->
advice
()
!=
EngageAdvice
::
DISALLOW_ENGAGE
)
{
prev_advice
->
set_advice
(
EngageAdvice
::
PREPARE_DISENGAGE
);
prev_advice
.
set_reason
(
"Reference line not drivable"
);
}
else
if
(
!
is_on_reference_line_
)
{
const
auto
&
scenario_type
=
PlanningContext
::
Instance
()
->
planning_status
()
.
scenario
()
.
scenario_type
();
if
(
scenario_type
==
ScenarioConfig
::
PARK_AND_GO
)
{
engage
=
true
;
}
else
{
prev_advice
.
set_reason
(
"Not on reference line"
);
}
prev_advice
->
set_reason
(
"Not on reference line"
);
}
else
{
// check heading
auto
ref_point
=
reference_line_
.
GetReferencePoint
(
adc_sl_boundary_
.
end_s
());
if
(
common
::
math
::
AngleDiff
(
vehicle_state_
.
heading
(),
ref_point
.
heading
())
>
if
(
common
::
math
::
AngleDiff
(
vehicle_state_
.
heading
(),
ref_point
.
heading
())
<
kMaxAngleDiff
)
{
if
(
prev_advice
->
advice
()
!=
EngageAdvice
::
DISALLOW_ENGAGE
)
{
prev_advice
->
set_advice
(
EngageAdvice
::
PREPARE_DISENGAGE
);
}
prev_advice
->
set_reason
(
"Vehicle heading is not aligned"
);
engage
=
true
;
}
else
{
if
(
vehicle_state_
.
driving_mode
()
!=
Chassis
::
DrivingMode
::
Chassis_DrivingMode_COMPLETE_AUTO_DRIVE
)
{
prev_advice
->
set_advice
(
EngageAdvice
::
READY_TO_ENGAGE
);
}
else
{
prev_advice
->
set_advice
(
EngageAdvice
::
KEEP_ENGAGED
);
}
prev_advice
->
clear_reason
();
prev_advice
.
set_reason
(
"Vehicle heading is not aligned"
);
}
}
if
(
engage
)
{
if
(
vehicle_state_
.
driving_mode
()
!=
Chassis
::
DrivingMode
::
Chassis_DrivingMode_COMPLETE_AUTO_DRIVE
)
{
// READY_TO_ENGAGE when in auto mode
prev_advice
.
set_advice
(
EngageAdvice
::
READY_TO_ENGAGE
);
}
else
{
// KEEP_ENGAGED when in manual mode
prev_advice
.
set_advice
(
EngageAdvice
::
KEEP_ENGAGED
);
}
prev_advice
.
clear_reason
();
}
else
{
if
(
prev_advice
.
advice
()
!=
EngageAdvice
::
DISALLOW_ENGAGE
)
{
prev_advice
.
set_advice
(
EngageAdvice
::
PREPARE_DISENGAGE
);
}
}
engage_advice
->
CopyFrom
(
*
prev_advice
);
engage_advice
->
CopyFrom
(
prev_advice
);
}
void
ReferenceLineInfo
::
MakeEStopDecision
(
...
...
modules/planning/scenarios/park_and_go/stage_check.cc
浏览文件 @
0837040a
...
...
@@ -41,12 +41,6 @@ Stage::StageStatus ParkAndGoStageCheck::Process(
return
StageStatus
::
ERROR
;
}
// allow engage
auto
*
engage_advice
=
PlanningContext
::
Instance
()
->
mutable_planning_status
()
->
mutable_engage_advice
();
engage_advice
->
set_advice
(
EngageAdvice
::
READY_TO_ENGAGE
);
bool
ready_to_cruise
=
scenario
::
util
::
CheckADCReadyToCruise
(
frame
,
scenario_config_
);
return
FinishStage
(
ready_to_cruise
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录