Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Pinoxchio
apollo
提交
9bd16323
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,发现更多精彩内容 >>
提交
9bd16323
编写于
9月 12, 2018
作者:
L
Liangliang Zhang
提交者:
Jiaming Tao
9月 12, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Planning: more for planning module (#44)
上级
744f6b68
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
56 addition
and
115 deletion
+56
-115
apollo.sh
apollo.sh
+2
-0
modules/planning/BUILD
modules/planning/BUILD
+6
-24
modules/planning/common/frame.cc
modules/planning/common/frame.cc
+1
-1
modules/planning/planning_base.cc
modules/planning/planning_base.cc
+12
-52
modules/planning/planning_base.h
modules/planning/planning_base.h
+26
-35
modules/planning/planning_component.cc
modules/planning/planning_component.cc
+8
-2
modules/planning/toolkits/deciders/rerouting.cc
modules/planning/toolkits/deciders/rerouting.cc
+1
-1
未找到文件。
apollo.sh
浏览文件 @
9bd16323
...
...
@@ -104,6 +104,7 @@ function generate_build_targets() {
//modules/localization/proto/...
//modules/monitor/...
//modules/perception/proto/...
//modules/planning:planning_component_lib
//modules/planning/proto/...
"
else
...
...
@@ -121,6 +122,7 @@ function generate_build_targets() {
//modules/localization/proto/...
//modules/monitor/...
//modules/perception/proto/...
//modules/planning:planning_component_lib
//modules/planning/proto/...
"
fi
...
...
modules/planning/BUILD
浏览文件 @
9bd16323
...
...
@@ -5,18 +5,16 @@ package(default_visibility = ["//visibility:public"])
cc_library
(
name
=
"planning_component_lib"
,
srcs
=
[
#"planning_base.cc",
"planning_component.cc"
,
],
hdrs
=
[
#"planning_base.h",
"planning_component.h"
,
#"std_planning.h",
],
copts
=
[
"-DMODULE_NAME=
\\\"
planning
\\\"
"
],
deps
=
[
":planning_lib"
,
"//framework:cybertron"
,
"//modules/common/util:
thread_poo
l"
,
"//modules/common/util:
message_uti
l"
,
"//modules/localization/proto:localization_proto"
,
"//modules/perception/proto:perception_proto"
,
"//modules/planning/proto:planning_proto"
,
...
...
@@ -27,41 +25,25 @@ cc_library(
cc_library
(
name
=
"planning_lib"
,
srcs
=
[
"navi_planning.cc"
,
"planning_base.cc"
,
"std_planning.cc"
,
],
hdrs
=
[
"navi_planning.h"
,
"planning.h"
,
"planning_base.h"
,
"std_planning.h"
,
],
deps
=
[
"//modules/common"
,
"//modules/common:apollo_app"
,
"//modules/common/adapters:adapter_manager"
,
"//modules/common/configs:config_gflags"
,
"//modules/common/math:quaternion"
,
"//modules/common/proto:pnc_point_proto"
,
"//modules/common/util:
thread_poo
l"
,
"//modules/
common/vehicle_state:vehicle_state_provider
"
,
"//modules/common/util:
message_uti
l"
,
"//modules/
localization/proto:localization_proto
"
,
"//modules/map/hdmap:hdmap_util"
,
"//modules/perception/proto:perception_proto"
,
"//modules/planning/common:planning_common"
,
"//modules/planning/common/trajectory:trajectory_stitcher"
,
"//modules/planning/planner:planner_dispatcher"
,
"//modules/planning/planner/em:em_planner"
,
"//modules/planning/planner/lattice:lattice_planner"
,
"//modules/planning/planner/navi:navi_planner"
,
"//modules/planning/planner/open_space:open_space_planner"
,
"//modules/planning/planner/rtk:rtk_planner"
,
"//modules/planning/common:planning_gflags"
,
"//modules/planning/proto:planning_config_proto"
,
"//modules/planning/proto:planning_proto"
,
"//modules/planning/proto:traffic_rule_config_proto"
,
"//modules/planning/reference_line:reference_line_provider"
,
"//modules/planning/toolkits/deciders"
,
"//modules/prediction/proto:prediction_proto"
,
"@ros//:ros_common"
,
],
)
...
...
modules/planning/common/frame.cc
浏览文件 @
9bd16323
...
...
@@ -86,7 +86,7 @@ bool Frame::Rerouting() {
AERROR
<<
"Rerouting not supported in navigation mode"
;
return
false
;
}
auto
*
adapter_manager
=
AdapterManager
::
Instance
();
auto
adapter_manager
=
AdapterManager
::
Instance
();
if
(
adapter_manager
->
GetRoutingResponse
()
->
Empty
())
{
AERROR
<<
"No previous routing available"
;
return
false
;
...
...
modules/planning/planning_base.cc
浏览文件 @
9bd16323
...
...
@@ -20,70 +20,34 @@
#include <list>
#include <vector>
#include "google/protobuf/repeated_field.h"
#include "modules/common/adapters/adapter_manager.h"
#include "modules/common/math/quaternion.h"
#include "modules/common/time/time.h"
#include "modules/common/vehicle_state/vehicle_state_provider.h"
#include "modules/map/hdmap/hdmap_util.h"
#include "modules/planning/common/planning_context.h"
#include "modules/planning/common/planning_gflags.h"
#include "modules/planning/common/trajectory/trajectory_stitcher.h"
#include "modules/planning/planner/em/em_planner.h"
#include "modules/planning/planner/lattice/lattice_planner.h"
#include "modules/planning/planner/navi/navi_planner.h"
#include "modules/planning/planner/open_space/open_space_planner.h"
#include "modules/planning/planner/rtk/rtk_replay_planner.h"
#include "modules/planning/toolkits/deciders/traffic_decider.h"
namespace
apollo
{
namespace
planning
{
using
apollo
::
common
::
ErrorCode
;
using
apollo
::
common
::
Status
;
using
apollo
::
common
::
TrajectoryPoint
;
using
apollo
::
common
::
VehicleState
;
using
apollo
::
common
::
VehicleStateProvider
;
using
apollo
::
common
::
adapter
::
AdapterManager
;
using
apollo
::
common
::
time
::
Clock
;
using
apollo
::
hdmap
::
HDMapUtil
;
PlanningBase
::~
PlanningBase
()
{}
bool
PlanningBase
::
IsVehicleStateValid
(
const
VehicleState
&
vehicle_state
)
{
if
(
std
::
isnan
(
vehicle_state
.
x
())
||
std
::
isnan
(
vehicle_state
.
y
())
||
std
::
isnan
(
vehicle_state
.
z
())
||
std
::
isnan
(
vehicle_state
.
heading
())
||
std
::
isnan
(
vehicle_state
.
kappa
())
||
std
::
isnan
(
vehicle_state
.
linear_velocity
())
||
std
::
isnan
(
vehicle_state
.
linear_acceleration
()))
{
return
false
;
}
return
true
;
}
void
PlanningBase
::
PublishPlanningPb
(
ADCTrajectory
*
trajectory_pb
,
double
timestamp
)
{
void
PlanningBase
::
PublishPlanningPb
(
const
double
timestamp
,
ADCTrajectory
*
trajectory_pb
)
{
trajectory_pb
->
mutable_header
()
->
set_timestamp_sec
(
timestamp
);
if
(
AdapterManager
::
GetPrediction
()
&&
!
AdapterManager
::
GetPrediction
()
->
Empty
())
{
const
auto
&
prediction
=
AdapterManager
::
GetPrediction
()
->
GetLatestObserved
();
if
(
prediction_obstacles_
!=
nullptr
&&
!
prediction_obstacles_
->
has_header
())
{
trajectory_pb
->
mutable_header
()
->
set_lidar_timestamp
(
prediction
.
header
().
lidar_timestamp
());
prediction
_obstacles_
->
header
().
lidar_timestamp
());
trajectory_pb
->
mutable_header
()
->
set_camera_timestamp
(
prediction
.
header
().
camera_timestamp
());
prediction
_obstacles_
->
header
().
camera_timestamp
());
trajectory_pb
->
mutable_header
()
->
set_radar_timestamp
(
prediction
.
header
().
radar_timestamp
());
prediction
_obstacles_
->
header
().
radar_timestamp
());
}
// TODO(all): integrate reverse gear
trajectory_pb
->
set_gear
(
canbus
::
Chassis
::
GEAR_DRIVE
);
if
(
AdapterManager
::
GetRoutingResponse
()
&&
!
AdapterManager
::
GetRoutingResponse
()
->
Empty
())
{
trajectory_pb
->
mutable_routing_header
()
->
CopyFrom
(
AdapterManager
::
GetRoutingResponse
()
->
GetLatestObserved
().
header
());
}
if
(
FLAGS_use_planning_fallback
&&
trajectory_pb
->
trajectory_point_size
()
==
0
)
{
...
...
@@ -102,24 +66,20 @@ void PlanningBase::PublishPlanningPb(ADCTrajectory* trajectory_pb,
p
.
set_relative_time
(
p
.
relative_time
()
+
dt
);
}
}
Publish
(
trajectory_pb
);
}
void
PlanningBase
::
SetFallbackTrajectory
(
ADCTrajectory
*
trajectory_pb
)
{
CHECK_NOTNULL
(
trajectory_pb
);
// use planning trajecotry from last cycle
auto
*
last_planning
=
AdapterManager
::
GetPlanning
();
if
(
last_planning
!=
nullptr
&&
!
last_planning
->
Empty
())
{
const
auto
&
traj
=
last_planning
->
GetLatestObserved
();
if
(
last_planning_
!=
nullptr
)
{
const
double
current_time_stamp
=
trajectory_pb
->
header
().
timestamp_sec
();
const
double
pre_time_stamp
=
traj
.
header
().
timestamp_sec
();
const
double
pre_time_stamp
=
last_planning_
->
header
().
timestamp_sec
();
for
(
int
i
=
0
;
i
<
traj
.
trajectory_point_size
();
++
i
)
{
const
double
t
=
traj
.
trajectory_point
(
i
).
relative_time
()
+
for
(
int
i
=
0
;
i
<
last_planning_
->
trajectory_point_size
();
++
i
)
{
const
double
t
=
last_planning_
->
trajectory_point
(
i
).
relative_time
()
+
pre_time_stamp
-
current_time_stamp
;
auto
*
p
=
trajectory_pb
->
add_trajectory_point
();
p
->
CopyFrom
(
traj
.
trajectory_point
(
i
));
p
->
CopyFrom
(
last_planning_
->
trajectory_point
(
i
));
p
->
set_relative_time
(
t
);
}
}
...
...
modules/planning/planning_base.h
浏览文件 @
9bd16323
...
...
@@ -22,20 +22,22 @@
#include <utility>
#include <vector>
#include "ctpl/ctpl_stl.h"
#include "modules/canbus/proto/chassis.pb.h"
#include "modules/common/proto/pnc_point.pb.h"
#include "modules/localization/proto/localization.pb.h"
#include "modules/perception/proto/traffic_light_detection.pb.h"
#include "modules/planning/proto/planning.pb.h"
#include "modules/planning/proto/planning_config.pb.h"
#include "modules/planning/proto/traffic_rule_config.pb.h"
#include "modules/prediction/proto/prediction_obstacle.pb.h"
#include "modules/routing/proto/routing.pb.h"
#include "modules/common/adapters/adapter_manager.h"
#include "modules/common/apollo_app.h"
#include "modules/common/status/status.h"
#include "modules/common/vehicle_state/vehicle_state_provider.h"
#include "modules/planning/common/trajectory/publishable_trajectory.h"
#include "modules/planning/planner/planner.h"
#include "modules/planning/planner/planner_dispatcher.h"
#include "modules/map/hdmap/hdmap.h"
//#include "modules/common/vehicle_state/vehicle_state_provider.h"
//#include "modules/planning/common/trajectory/publishable_trajectory.h"
//#include "modules/planning/planner/planner.h"
//#include "modules/planning/planner/planner_dispatcher.h"
/**
* @namespace apollo::planning
...
...
@@ -49,15 +51,19 @@ namespace planning {
*
* @brief PlanningBase module main class.
*/
class
PlanningBase
:
public
apollo
::
common
::
ApolloApp
{
class
PlanningBase
{
public:
PlanningBase
()
=
default
;
virtual
~
PlanningBase
();
virtual
void
RunOnce
()
=
0
;
// Watch dog timer
virtual
void
OnTimer
(
const
ros
::
TimerEvent
&
)
=
0
;
virtual
void
RunOnce
(
const
std
::
shared_ptr
<
prediction
::
PredictionObstacles
>&
prediction_obstacles
,
const
std
::
shared_ptr
<
canbus
::
Chassis
>&
chassis
,
const
std
::
shared_ptr
<
localization
::
LocalizationEstimate
>&
localization_estimate
,
const
perception
::
TrafficLightDetection
,
const
routing
::
RoutingResponse
&
routing
)
=
0
;
/**
* @brief Plan the trajectory given current vehicle state
...
...
@@ -68,30 +74,15 @@ class PlanningBase : public apollo::common::ApolloApp {
ADCTrajectory
*
trajectory
)
=
0
;
protected:
void
PublishPlanningPb
(
ADCTrajectory
*
trajectory_pb
,
double
timestamp
);
void
PublishPlanningPb
(
const
double
timestamp
,
ADCTrajectory
*
trajectory_pb
);
void
SetFallbackTrajectory
(
ADCTrajectory
*
trajectory_pb
);
/**
* @brief Fill the header and publish the planning message.
*/
void
Publish
(
planning
::
ADCTrajectory
*
trajectory
)
{
using
apollo
::
common
::
adapter
::
AdapterManager
;
AdapterManager
::
FillPlanningHeader
(
Name
(),
trajectory
);
AdapterManager
::
PublishPlanning
(
*
trajectory
);
}
bool
IsVehicleStateValid
(
const
common
::
VehicleState
&
vehicle_state
);
virtual
void
SetFallbackTrajectory
(
ADCTrajectory
*
cruise_trajectory
);
virtual
bool
CheckPlanningConfig
()
=
0
;
protected:
double
start_time_
=
0.0
;
PlanningConfig
config_
;
TrafficRuleConfigs
traffic_rule_configs_
;
const
hdmap
::
HDMap
*
hdmap_
=
nullptr
;
std
::
unique_ptr
<
Planner
>
planner_
;
std
::
unique_ptr
<
PublishableTrajectory
>
last_publishable_trajectory_
;
ros
::
Timer
timer_
;
std
::
unique_ptr
<
PlannerDispatcher
>
planner_dispatcher_
;
const
std
::
shared_ptr
<
prediction
::
PredictionObstacles
>
prediction_obstacles_
;
const
std
::
shared_ptr
<
canbus
::
Chassis
>
chassis_
;
const
std
::
shared_ptr
<
localization
::
LocalizationEstimate
>
localization_estimate_
;
const
std
::
shared_ptr
<
ADCTrajectory
>
last_planning_
;
};
}
// namespace planning
...
...
modules/planning/planning_component.cc
浏览文件 @
9bd16323
...
...
@@ -15,6 +15,8 @@
*****************************************************************************/
#include "modules/planning/planning_component.h"
#include "modules/common/util/message_util.h"
namespace
apollo
{
namespace
planning
{
...
...
@@ -50,17 +52,21 @@ bool PlanningComponent::Proc(
const
std
::
shared_ptr
<
canbus
::
Chassis
>&
chassis
,
const
std
::
shared_ptr
<
localization
::
LocalizationEstimate
>&
localization_estimate
)
{
routing
::
RoutingResponse
routing_copy
;
{
std
::
lock_guard
<
std
::
mutex
>
lock
(
mutex_
);
// planning_base_->SetRouting(routing)
;
routing_copy
=
routing_
;
}
perception
::
TrafficLightDetection
traffic_light_copy
;
{
std
::
lock_guard
<
std
::
mutex
>
lock
(
mutex_
);
// planning_base_->SetTrafficLight(traffic_light_)
;
traffic_light_copy
=
traffic_light_
;
}
ADCTrajectory
adc_trajectory_pb
;
// TODO(Liangliang) implement here
common
::
util
::
FillHeader
(
node_
->
Name
(),
&
adc_trajectory_pb
);
writer_
->
Write
(
std
::
make_shared
<
ADCTrajectory
>
(
adc_trajectory_pb
));
return
true
;
}
...
...
modules/planning/toolkits/deciders/rerouting.cc
浏览文件 @
9bd16323
...
...
@@ -74,7 +74,7 @@ bool Rerouting::ChangeLaneFailRerouting() {
// 5. If the end of current passage region is further than kPrepareRoutingTime
// * speed, no rerouting
double
adc_s
=
reference_line_info_
->
AdcSlBoundary
().
end_s
();
const
auto
*
vehicle_state
=
common
::
VehicleStateProvider
::
Instance
();
const
auto
vehicle_state
=
common
::
VehicleStateProvider
::
Instance
();
double
speed
=
vehicle_state
->
linear_velocity
();
const
double
prepare_rerouting_time
=
config_
.
rerouting
().
prepare_rerouting_time
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录