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

planning: add default task config support.

上级 70568792
......@@ -44,6 +44,9 @@ apollo::common::util::Factory<TaskConfig::TaskType, Task,
Task* (*)(const TaskConfig& config)>
TaskFactory::task_factory_;
std::unordered_map<TaskConfig::TaskType, TaskConfig, EnumHash>
TaskFactory::default_task_configs_;
void TaskFactory::Init(const PlanningConfig& config) {
task_factory_.Register(TaskConfig::DP_ST_SPEED_OPTIMIZER,
[](const TaskConfig& config) -> Task* {
......@@ -81,10 +84,20 @@ void TaskFactory::Init(const PlanningConfig& config) {
[](const TaskConfig& config) -> Task* {
return new DeciderCreep(config);
});
for (const auto& default_task_config : config.default_task_config()) {
default_task_configs_[default_task_config.task_type()] =
default_task_config;
}
}
std::unique_ptr<Task> TaskFactory::CreateTask(const TaskConfig& task_config) {
return task_factory_.CreateObject(task_config.task_type(), task_config);
TaskConfig merged_config;
if (default_task_configs_.find(task_config.task_type()) !=
default_task_configs_.end()) {
merged_config = default_task_configs_[task_config.task_type()];
}
merged_config.MergeFrom(task_config);
return task_factory_.CreateObject(task_config.task_type(), merged_config);
}
} // namespace planning
......
......@@ -22,6 +22,7 @@
#include <memory>
#include <string>
#include <unordered_map>
#include "modules/planning/proto/planning_config.pb.h"
......@@ -31,6 +32,13 @@
namespace apollo {
namespace planning {
struct EnumHash {
template <typename T>
std::size_t operator()(T t) const {
return static_cast<std::size_t>(t);
}
};
class TaskFactory {
public:
static void Init(const PlanningConfig& config);
......@@ -40,6 +48,8 @@ class TaskFactory {
static apollo::common::util::Factory<TaskConfig::TaskType, Task,
Task *(*)(const TaskConfig &config)>
task_factory_;
static std::unordered_map<TaskConfig::TaskType, TaskConfig, EnumHash>
default_task_configs_;
};
} // namespace planning
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册