提交 679a3112 编写于 作者: J Jiangtao Hu 提交者: Jiaming Tao

planning: add planning config parameter into PlanningBase::Init() interface.

上级 8ef66abd
......@@ -142,7 +142,11 @@ void PlanningTestBase::SetUp() {
CHECK(FeedTestData()) << "Failed to feed test data";
CHECK(planning_->Init().ok()) << "Failed to init planning module";
CHECK(apollo::common::util::GetProtoFromFile(FLAGS_planning_config_file,
&config_))
<< "failed to load planning config file " << FLAGS_planning_config_file;
CHECK(planning_->Init(config_).ok()) << "Failed to init planning module";
// Do not use fallback trajectory during testing
FLAGS_use_planning_fallback = false;
......
......@@ -100,6 +100,7 @@ class PlanningTestBase : public ::testing::Test {
std::map<TrafficRuleConfig::RuleId, bool> rule_enabled_;
ADCTrajectory adc_trajectory_;
LocalView local_view_;
PlanningConfig config_;
};
} // namespace planning
......
......@@ -73,17 +73,15 @@ NaviPlanning::~NaviPlanning() {
std::string NaviPlanning::Name() const { return "navi_planning"; }
Status NaviPlanning::Init() {
PlanningBase::Init();
CHECK(apollo::common::util::GetProtoFromFile(FLAGS_planning_config_file,
&config_))
<< "failed to load planning config file " << FLAGS_planning_config_file;
if (!CheckPlanningConfig()) {
Status NaviPlanning::Init(const PlanningConfig& config) {
config_ = config;
if (!CheckPlanningConfig(config_)) {
return Status(ErrorCode::PLANNING_ERROR,
"planning config error: " + config_.DebugString());
}
PlanningBase::Init(config_);
planner_dispatcher_->Init();
CHECK(apollo::common::util::GetProtoFromFile(
......@@ -595,8 +593,8 @@ NaviPlanning::VehicleConfig NaviPlanning::ComputeVehicleConfigFromLocalization(
return vehicle_config;
}
bool NaviPlanning::CheckPlanningConfig() {
if (!config_.has_navigation_planning_config()) {
bool NaviPlanning::CheckPlanningConfig(const PlanningConfig& config) {
if (!config.has_navigation_planning_config()) {
return false;
}
// TODO(All): check other config params
......
......@@ -57,7 +57,7 @@ class NaviPlanning : public PlanningBase {
* @brief module initialization function
* @return initialization status
*/
apollo::common::Status Init() override;
apollo::common::Status Init(const PlanningConfig& config) override;
/**
* @brief main logic of the planning module, runs periodically triggered by
......@@ -78,7 +78,7 @@ class NaviPlanning : public PlanningBase {
const double start_time,
const common::VehicleState& vehicle_state);
bool CheckPlanningConfig();
bool CheckPlanningConfig(const PlanningConfig& config);
/**
* @brief receiving planning pad message
......
......@@ -41,9 +41,9 @@ using apollo::planning_internal::STGraphDebug;
PlanningBase::~PlanningBase() {}
apollo::common::Status PlanningBase::Init() {
apollo::common::Status PlanningBase::Init(const PlanningConfig& config) {
PlanningContext::Instance()->Init();
TaskFactory::Init();
TaskFactory::Init(config);
return Status::OK();
}
......
......@@ -56,7 +56,7 @@ class PlanningBase {
PlanningBase() = default;
virtual ~PlanningBase();
virtual apollo::common::Status Init();
virtual apollo::common::Status Init(const PlanningConfig& config);
virtual std::string Name() const = 0;
......
......@@ -33,7 +33,12 @@ using apollo::routing::RoutingRequest;
using apollo::routing::RoutingResponse;
bool PlanningComponent::Init() {
planning_base_->Init();
CHECK(apollo::common::util::GetProtoFromFile(FLAGS_planning_config_file,
&config_))
<< "failed to load planning config file " << FLAGS_planning_config_file;
planning_base_->Init(config_);
routing_reader_ = node_->CreateReader<RoutingResponse>(
FLAGS_routing_response_topic,
[this](const std::shared_ptr<RoutingResponse>& routing) {
......
......@@ -28,6 +28,7 @@
#include "modules/perception/proto/traffic_light_detection.pb.h"
#include "modules/planning/proto/pad_msg.pb.h"
#include "modules/planning/proto/planning.pb.h"
#include "modules/planning/proto/planning_config.pb.h"
#include "modules/prediction/proto/prediction_obstacle.pb.h"
#include "modules/routing/proto/routing.pb.h"
......@@ -79,6 +80,8 @@ class PlanningComponent final
LocalView local_view_;
std::unique_ptr<PlanningBase> planning_base_;
PlanningConfig config_;
};
CYBERTRON_REGISTER_COMPONENT(PlanningComponent)
......
......@@ -94,17 +94,15 @@ StdPlanning::~StdPlanning() {
std::string StdPlanning::Name() const { return "std_planning"; }
Status StdPlanning::Init() {
PlanningBase::Init();
CHECK(apollo::common::util::GetProtoFromFile(FLAGS_planning_config_file,
&config_))
<< "failed to load planning config file " << FLAGS_planning_config_file;
if (!CheckPlanningConfig()) {
Status StdPlanning::Init(const PlanningConfig& config) {
config_ = config;
if (!CheckPlanningConfig(config_)) {
return Status(ErrorCode::PLANNING_ERROR,
"planning config error: " + config_.DebugString());
}
PlanningBase::Init(config_);
planner_dispatcher_->Init();
CHECK(apollo::common::util::GetProtoFromFile(
......@@ -414,11 +412,11 @@ Status StdPlanning::Plan(
return status;
}
bool StdPlanning::CheckPlanningConfig() {
if (!config_.has_standard_planning_config()) {
bool StdPlanning::CheckPlanningConfig(const PlanningConfig& config) {
if (!config.has_standard_planning_config()) {
return false;
}
if (config_.standard_planning_config()
if (config.standard_planning_config()
.planner_public_road_config()
.scenario_type_size() == 0) {
return false;
......
......@@ -53,7 +53,7 @@ class StdPlanning : public PlanningBase {
* @brief module initialization function
* @return initialization status
*/
apollo::common::Status Init() override;
apollo::common::Status Init(const PlanningConfig& config) override;
/**
* @brief main logic of the planning module, runs periodically triggered by
......@@ -73,7 +73,7 @@ class StdPlanning : public PlanningBase {
const double start_time,
const common::VehicleState& vehicle_state);
void ExportReferenceLineDebug(planning_internal::Debug* debug);
bool CheckPlanningConfig();
bool CheckPlanningConfig(const PlanningConfig& config);
private:
routing::RoutingResponse last_routing_;
......
......@@ -44,7 +44,7 @@ apollo::common::util::Factory<TaskConfig::TaskType, Task,
Task* (*)(const TaskConfig& config)>
TaskFactory::task_factory_;
void TaskFactory::Init() {
void TaskFactory::Init(const PlanningConfig& config) {
task_factory_.Register(TaskConfig::DP_ST_SPEED_OPTIMIZER,
[](const TaskConfig& config) -> Task* {
return new DpStSpeedOptimizer(config);
......
......@@ -33,7 +33,7 @@ namespace planning {
class TaskFactory {
public:
static void Init();
static void Init(const PlanningConfig& config);
static std::unique_ptr<Task> CreateTask(const TaskConfig &task_config);
private:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册