Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Pinoxchio
apollo
提交
e0ad3781
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,体验更适合开发者的 AI 搜索 >>
提交
e0ad3781
编写于
10月 30, 2018
作者:
J
Jinyun Zhou
提交者:
Jiangtao Hu
12月 13, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Planning : OpenSpace swithable in std_planning by gflag (#1399)
上级
ccb34fff
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
110 addition
and
15 deletion
+110
-15
modules/planning/common/planning_gflags.cc
modules/planning/common/planning_gflags.cc
+3
-3
modules/planning/common/planning_gflags.h
modules/planning/common/planning_gflags.h
+1
-2
modules/planning/conf/planning_config.pb.txt
modules/planning/conf/planning_config.pb.txt
+1
-0
modules/planning/planner/BUILD
modules/planning/planner/BUILD
+7
-0
modules/planning/planner/planner_dispatcher.cc
modules/planning/planner/planner_dispatcher.cc
+5
-5
modules/planning/planner/std_planner_dispatcher.cc
modules/planning/planner/std_planner_dispatcher.cc
+88
-2
modules/planning/std_planning.cc
modules/planning/std_planning.cc
+5
-3
未找到文件。
modules/planning/common/planning_gflags.cc
浏览文件 @
e0ad3781
...
...
@@ -417,6 +417,9 @@ DEFINE_bool(enable_open_space_roi_and_info, false,
"enable the frame to load map data and calculate info for open "
"space planner"
);
DEFINE_bool
(
enable_open_space_planner_thread
,
false
,
"Enable thread in open space planner for trajectory publish."
);
DEFINE_bool
(
parking_inwards
,
false
,
"true for parking the car inwards in parking spot, false for parking "
...
...
@@ -436,6 +439,3 @@ DEFINE_bool(enable_record_debug, true,
DEFINE_double
(
default_front_clear_distance
,
300.0
,
"default front clear distance value in case there is no obstacle around."
);
DEFINE_bool
(
enable_open_space_planner_thread
,
true
,
"Enable thread in open space planner for trajectory publish."
);
modules/planning/common/planning_gflags.h
浏览文件 @
e0ad3781
...
...
@@ -220,6 +220,7 @@ DECLARE_double(parking_start_range);
DECLARE_bool
(
enable_perception_obstacles
);
DECLARE_bool
(
enable_open_space_roi_and_info
);
DECLARE_bool
(
parking_inwards
);
DECLARE_bool
(
enable_open_space_planner_thread
);
DECLARE_bool
(
use_osqp_optimizer_for_qp_st
);
DECLARE_bool
(
use_osqp_optimizer_for_reference_line
);
...
...
@@ -228,5 +229,3 @@ DECLARE_bool(export_chart);
DECLARE_bool
(
enable_record_debug
);
DECLARE_double
(
default_front_clear_distance
);
DECLARE_bool
(
enable_open_space_planner_thread
);
modules/planning/conf/planning_config.pb.txt
浏览文件 @
e0ad3781
standard_planning_config {
planner_type : PUBLIC_ROAD
planner_type : OPEN_SPACE
planner_public_road_config {
scenario_type : LANE_FOLLOW
scenario_type : SIDE_PASS
...
...
modules/planning/planner/BUILD
浏览文件 @
e0ad3781
...
...
@@ -39,7 +39,14 @@ cc_library(
"//modules/planning/planner/navi:navi_planner"
,
"//modules/planning/planner/public_road:public_road_planner"
,
"//modules/planning/planner/rtk:rtk_planner"
,
"//modules/planning/planner/open_space:open_space_planner"
,
"//modules/planning/proto:planning_proto"
,
# for open space planner
"//modules/planning/common:planning_gflags"
,
"//modules/map/pnc_map"
,
"//modules/common/math"
,
"//modules/planning/proto:planning_config_proto"
,
"//modules/common/vehicle_state:vehicle_state_provider"
,
],
)
...
...
modules/planning/planner/planner_dispatcher.cc
浏览文件 @
e0ad3781
...
...
@@ -18,10 +18,10 @@
#include "modules/planning/proto/planning_config.pb.h"
#include "modules/planning/planner/lattice/lattice_planner.h"
#include "modules/planning/planner/open_space/open_space_planner.h"
#include "modules/planning/planner/public_road/public_road_planner.h"
#include "modules/planning/planner/rtk/rtk_replay_planner.h"
#include "modules/planning/planner/lattice/lattice_planner.h"
// #include "modules/planning/planner/open_space/open_space_planner.h"
namespace
apollo
{
namespace
planning
{
...
...
@@ -31,10 +31,10 @@ void PlannerDispatcher::RegisterPlanners() {
RTK
,
[]()
->
Planner
*
{
return
new
RTKReplayPlanner
();
});
planner_factory_
.
Register
(
PUBLIC_ROAD
,
[]()
->
Planner
*
{
return
new
PublicRoadPlanner
();
});
planner_factory_
.
Register
(
LATTICE
,
[]()
->
Planner
*
{
return
new
LatticePlanner
();
});
planner_factory_
.
Register
(
LATTICE
,
[]()
->
Planner
*
{
return
new
LatticePlanner
();
});
// planner_factory_.Register(
// OPENSPACE, []() -> Planner* { return new OpenSpacePlanner(); });
OPEN_SPACE
,
[]()
->
Planner
*
{
return
new
OpenSpacePlanner
();
});
}
}
// namespace planning
...
...
modules/planning/planner/std_planner_dispatcher.cc
浏览文件 @
e0ad3781
...
...
@@ -15,17 +15,103 @@
*****************************************************************************/
#include "modules/planning/planner/std_planner_dispatcher.h"
// for open space planner
#include <vector>
#include "modules/common/util/file.h"
#include "modules/planning/proto/planning_config.pb.h"
#include "modules/planning/common/planning_gflags.h"
#include "modules/planning/proto/planning_config.pb.h"
// for open space planner
#include "modules/common/math/vec2d.h"
#include "modules/common/vehicle_state/proto/vehicle_state.pb.h"
#include "modules/common/vehicle_state/vehicle_state_provider.h"
#include "modules/map/hdmap/hdmap_util.h"
#include "modules/map/pnc_map/path.h"
#include "modules/map/pnc_map/pnc_map.h"
namespace
apollo
{
namespace
planning
{
using
apollo
::
common
::
math
::
Polygon2d
;
using
apollo
::
common
::
math
::
Vec2d
;
using
apollo
::
hdmap
::
HDMapUtil
;
using
apollo
::
hdmap
::
LaneSegment
;
using
apollo
::
hdmap
::
ParkingSpaceInfoConstPtr
;
using
apollo
::
hdmap
::
Path
;
std
::
unique_ptr
<
Planner
>
StdPlannerDispatcher
::
DispatchPlanner
()
{
PlanningConfig
planning_config
;
apollo
::
common
::
util
::
GetProtoFromFile
(
FLAGS_planning_config_file
,
&
planning_config
);
&
planning_config
);
if
(
FLAGS_enable_open_space_planner_thread
)
{
const
hdmap
::
HDMap
*
hdmap_
=
hdmap
::
HDMapUtil
::
BaseMapPtr
();
CHECK_NOTNULL
(
hdmap_
);
common
::
VehicleState
vehicle_state_
=
common
::
VehicleStateProvider
::
Instance
()
->
vehicle_state
();
auto
point
=
common
::
util
::
MakePointENU
(
vehicle_state_
.
x
(),
vehicle_state_
.
y
(),
vehicle_state_
.
z
());
hdmap
::
LaneInfoConstPtr
nearest_lane
;
double
vehicle_lane_s
=
0.0
;
double
vehicle_lane_l
=
0.0
;
HDMapUtil
::
BaseMap
().
GetNearestLaneWithHeading
(
point
,
5.0
,
vehicle_state_
.
heading
(),
M_PI
/
3.0
,
&
nearest_lane
,
&
vehicle_lane_s
,
&
vehicle_lane_l
);
LaneSegment
nearest_lanesegment
=
LaneSegment
(
nearest_lane
,
nearest_lane
->
accumulate_s
().
front
(),
nearest_lane
->
accumulate_s
().
back
());
std
::
vector
<
LaneSegment
>
segments_vector
;
int
next_lanes_num
=
nearest_lane
->
lane
().
successor_id_size
();
for
(
int
i
=
0
;
i
<
next_lanes_num
;
i
++
)
{
auto
next_lane_id
=
nearest_lane
->
lane
().
successor_id
(
i
);
segments_vector
.
push_back
(
nearest_lanesegment
);
auto
next_lane
=
hdmap_
->
GetLaneById
(
next_lane_id
);
LaneSegment
next_lanesegment
=
LaneSegment
(
next_lane
,
next_lane
->
accumulate_s
().
front
(),
next_lane
->
accumulate_s
().
back
());
segments_vector
.
emplace_back
(
next_lanesegment
);
std
::
unique_ptr
<
Path
>
path_
=
std
::
unique_ptr
<
Path
>
(
new
Path
(
segments_vector
));
const
auto
&
parking_space_overlaps
=
path_
->
parking_space_overlaps
();
ParkingSpaceInfoConstPtr
target_parking_spot
=
nullptr
;
if
(
parking_space_overlaps
.
size
()
!=
0
)
{
for
(
const
auto
&
parking_overlap
:
parking_space_overlaps
)
{
if
(
parking_overlap
.
object_id
==
FLAGS_target_parking_spot_id
)
{
hdmap
::
Id
id
;
id
.
set_id
(
parking_overlap
.
object_id
);
target_parking_spot
=
hdmap_
->
GetParkingSpaceById
(
id
);
}
}
}
if
(
target_parking_spot
==
nullptr
)
{
std
::
string
msg
(
"No such parking spot found "
);
ADEBUG
<<
msg
<<
FLAGS_target_parking_spot_id
;
segments_vector
.
clear
();
}
else
{
Vec2d
left_bottom_point
=
target_parking_spot
->
polygon
().
points
().
at
(
0
);
Vec2d
right_bottom_point
=
target_parking_spot
->
polygon
().
points
().
at
(
1
);
double
left_bottom_point_s
=
0.0
;
double
left_bottom_point_l
=
0.0
;
double
right_bottom_point_s
=
0.0
;
double
right_bottom_point_l
=
0.0
;
double
vehicle_point_s
=
0.0
;
double
vehicle_point_l
=
0.0
;
path_
->
GetNearestPoint
(
left_bottom_point
,
&
left_bottom_point_s
,
&
left_bottom_point_l
);
path_
->
GetNearestPoint
(
right_bottom_point
,
&
right_bottom_point_s
,
&
right_bottom_point_l
);
Vec2d
vehicle_vec
(
vehicle_state_
.
x
(),
vehicle_state_
.
y
());
path_
->
GetNearestPoint
(
vehicle_vec
,
&
vehicle_point_s
,
&
vehicle_point_l
);
if
(
std
::
abs
((
left_bottom_point_s
+
right_bottom_point_s
)
/
2
-
vehicle_point_s
)
<
FLAGS_parking_start_range
)
{
return
planner_factory_
.
CreateObject
(
planning_config
.
standard_planning_config
().
planner_type
(
1
));
}
}
}
}
return
planner_factory_
.
CreateObject
(
planning_config
.
standard_planning_config
().
planner_type
(
0
));
}
...
...
modules/planning/std_planning.cc
浏览文件 @
e0ad3781
...
...
@@ -41,12 +41,12 @@
namespace
apollo
{
namespace
planning
{
using
apollo
::
common
::
math
::
Vec2d
;
using
apollo
::
common
::
ErrorCode
;
using
apollo
::
common
::
Status
;
using
apollo
::
common
::
TrajectoryPoint
;
using
apollo
::
common
::
VehicleState
;
using
apollo
::
common
::
VehicleStateProvider
;
using
apollo
::
common
::
math
::
Vec2d
;
using
apollo
::
common
::
time
::
Clock
;
using
apollo
::
hdmap
::
HDMapUtil
;
using
apollo
::
routing
::
RoutingResponse
;
...
...
@@ -84,6 +84,9 @@ StdPlanning::~StdPlanning() {
if
(
reference_line_provider_
)
{
reference_line_provider_
->
Stop
();
}
if
(
FLAGS_enable_open_space_planner_thread
)
{
planner_
->
Stop
();
}
last_publishable_trajectory_
.
reset
(
nullptr
);
frame_
.
reset
(
nullptr
);
planner_
.
reset
(
nullptr
);
...
...
@@ -141,8 +144,7 @@ Status StdPlanning::InitFrame(const uint32_t sequence_num,
ADCTrajectory
*
output_trajectory
)
{
frame_
.
reset
(
new
Frame
(
sequence_num
,
local_view_
,
planning_start_point
,
start_time
,
vehicle_state
,
reference_line_provider_
.
get
(),
output_trajectory
));
reference_line_provider_
.
get
(),
output_trajectory
));
if
(
frame_
==
nullptr
)
{
return
Status
(
ErrorCode
::
PLANNING_ERROR
,
"Fail to init frame: nullptr."
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录