提交 666f9a98 编写于 作者: C Calvin Miao 提交者: Kecheng Xu

Updated predictor and evaluator managers (#151)

* modified prediction conf in pb

* added speed_optimizer

* removed ptree and added proto based config for dp_poly_path

* added speed_optimizer

* added speed_optimizer

* Added lane sequence and free move predictor framework (#127)

* Fixed planning styling issues, and resolved a conflict

Fixed planning styling issues

Fixed planning styling issues

Fixed planning styling issues

Fixed some styling errors

Resolved a conflict

* Added mlp evaluator in evaluator factory

* modified prediction conf in pb

* Added free move predictor framework

* removed ptree and added proto based config for dp_poly_path

* Resolved free move predictor conflict

* added speed_optimizer

* Added lane sequence and free move predictor framework (#127)

* Fixed planning styling issues, and resolved a conflict

Fixed planning styling issues

Fixed planning styling issues

Fixed planning styling issues

Fixed some styling errors

Resolved a conflict

* Added mlp evaluator in evaluator factory

* modified prediction conf in pb

* Added free move predictor framework

* removed ptree and added proto based config for dp_poly_path

* removed ptree and added proto based config for dp_poly_path

* Resolved free move predictor conflict

* Finalized prediction framework

* added dp_st_speed and qp_spline_speed, ready for migrate

* added qp_spline_st_boundary_mapper.h/cc (#139)

* implement most of prediction_map.cc

* add MakeSLPoint in common/util (#141)

* Fix dreamview roadgraph rendering (#137)

* render perception obstacles in dreamview frontend (#142)

* Fix control test filures after ADCTranjactory proto change.

* Avoid copying data if message_num is set as 0

* Rename function and adjust style

* remove data_center dp_poly_path optimizer (#147)

* add lru cache

* Simple fixes to satisfy lint.

* Updated evaluator and predictor managers
上级 7a26720d
......@@ -8,7 +8,8 @@ cc_library(
hdrs = ["obstacles_container.h"],
deps = [
"//modules/prediction/container:container",
]
"//modules/prediction/container/obstacles:obstacle",
],
)
cc_library(
......
......@@ -21,5 +21,9 @@ namespace prediction {
void ObstaclesContainer::Insert(const ::google::protobuf::Message& message) {}
Obstacle* ObstaclesContainer::GetObstacle(int id) {
return nullptr;
}
}
} // prediction
} // apollo
......@@ -23,6 +23,7 @@
#define MODULES_PREDICTION_CONTAINER_OBSTACLES_OBSTACLES_H_
#include "modules/prediction/container/container.h"
#include "modules/prediction/container/obstacles/obstacle.h"
namespace apollo {
namespace prediction {
......@@ -44,6 +45,8 @@ class ObstaclesContainer : public Container {
* @param Data message to be inserted in protobuf
*/
void Insert(const ::google::protobuf::Message& message) override;
Obstacle* GetObstacle(int id);
};
} // namespace prediction
......
......@@ -22,8 +22,13 @@ cc_library(
hdrs = ["evaluator_manager.h"],
deps = [
"//modules/prediction/evaluator:evaluator",
"//modules/prediction/evaluator:evaluator_factory",
"//modules/prediction/container:container_manager",
"//modules/prediction/container/obstacles:obstacles_container",
"//modules/prediction/proto:prediction_conf_proto",
"//modules/perception/proto:perception_proto",
"//modules/common:macro",
"//modules/common:log",
"@glog//:glog",
]
)
......
......@@ -52,7 +52,7 @@ class EvaluatorFactory
* @return A pointer to the given evaluator
*/
std::unique_ptr<Evaluator> CreateEvaluator(
const ObstacleConf::EvaluatorType& eval);
const ObstacleConf::EvaluatorType& type);
private:
DECLARE_SINGLETON(EvaluatorFactory);
......
......@@ -16,17 +16,48 @@
#include "modules/prediction/evaluator/evaluator_manager.h"
#include "modules/prediction/evaluator/evaluator_factory.h"
#include "modules/prediction/container/container_manager.h"
#include "modules/prediction/container/obstacles/obstacles_container.h"
#include "modules/common/log.h"
namespace apollo {
namespace prediction {
using ::apollo::perception::PerceptionObstacles;
using ::apollo::perception::PerceptionObstacle;
EvaluatorManager::EvaluatorManager() {}
const Evaluator* EvaluatorManager::GetEvaluator() {
return nullptr;
Evaluator* EvaluatorManager::GetEvaluator(
const ObstacleConf::EvaluatorType& type) {
return EvaluatorFactory::instance()->CreateEvaluator(type).get();
}
void EvaluatorManager::Run(
const ::apollo::perception::PerceptionObstacles& perception_obstacles) {}
const ::apollo::perception::PerceptionObstacles& perception_obstacles) {
ObstaclesContainer *container = dynamic_cast<ObstaclesContainer*>(
ContainerManager::instance()->mutable_container("ObstaclesContainer"));
CHECK_NOTNULL(container);
for (const auto& perception_obstacle :
perception_obstacles.perception_obstacle()) {
int id = perception_obstacle.id();
switch(perception_obstacle.type()) {
case PerceptionObstacle::VEHICLE: {
Evaluator *evaluator = GetEvaluator(ObstacleConf::MLP_EVALUATOR);
CHECK_NOTNULL(evaluator);
Obstacle *obstacle = container->GetObstacle(id);
CHECK_NOTNULL(obstacle);
evaluator->Evaluate(obstacle);
break;
}
default: {
break;
}
}
}
}
} // namespace prediction
} // namespace apollo
......@@ -26,6 +26,7 @@
#include "modules/prediction/evaluator/evaluator.h"
#include "modules/perception/proto/perception_obstacle.pb.h"
#include "modules/prediction/proto/prediction_conf.pb.h"
#include "modules/common/macro.h"
/**
......@@ -46,7 +47,7 @@ class EvaluatorManager {
* @brief Get evaluator
* @return Pointer to the evaluator
*/
const Evaluator* GetEvaluator();
Evaluator* GetEvaluator(const ObstacleConf::EvaluatorType& type);
void Run(
const ::apollo::perception::PerceptionObstacles& perception_obstacles);
......
......@@ -24,6 +24,8 @@ cc_library(
deps = [
"//modules/prediction/predictor:predictor",
"//modules/prediction/predictor:predictor_factory",
"//modules/prediction/container:container_manager",
"//modules/prediction/container/obstacles:obstacles_container",
"//modules/perception/proto:perception_proto",
"//modules/prediction/proto:prediction_proto",
"//modules/prediction/proto:prediction_conf_proto",
......@@ -38,6 +40,7 @@ cc_library(
srcs = ["predictor.cc"],
deps = [
"//modules/prediction/proto:prediction_proto",
"//modules/prediction/container/obstacles:obstacle",
]
)
......
......@@ -24,6 +24,8 @@
#include "modules/prediction/proto/prediction_obstacle.pb.h"
#include "modules/prediction/container/obstacles/obstacle.h"
/**
* @namespace apollo::prediction
* @brief apollo::prediction
......@@ -51,7 +53,7 @@ class Predictor {
/**
* @brief Make prediction
*/
virtual void Predict() const = 0;
virtual void Predict(Obstacle* obstacle) const = 0;
protected:
PredictionObstacle prediction_obstacle_;
......
......@@ -16,6 +16,8 @@
#include "modules/prediction/predictor/predictor_manager.h"
#include "modules/prediction/predictor/predictor_factory.h"
#include "modules/prediction/container/container_manager.h"
#include "modules/prediction/container/obstacles/obstacles_container.h"
namespace apollo {
namespace prediction {
......@@ -35,9 +37,15 @@ Predictor* PredictorManager::GetPredictor(
void PredictorManager::Run(
const PerceptionObstacles& perception_obstacles) {
prediction_obstacles_.Clear();
ObstaclesContainer *container = dynamic_cast<ObstaclesContainer*>(
ContainerManager::instance()->mutable_container("ObstaclesContainer"));
CHECK_NOTNULL(container);
Predictor *predictor = nullptr;
for (const auto& obstacle : perception_obstacles.perception_obstacle()) {
switch (obstacle.type()) {
for (const auto& perception_obstacle :
perception_obstacles.perception_obstacle()) {
int id = perception_obstacle.id();
switch (perception_obstacle.type()) {
case PerceptionObstacle::VEHICLE: {
predictor = GetPredictor(ObstacleConf::LANE_SEQUENCE_PREDICTOR);
break;
......@@ -52,7 +60,8 @@ void PredictorManager::Run(
}
}
if (predictor != nullptr) {
predictor->Predict();
Obstacle* obstacle = container->GetObstacle(id);
predictor->Predict(obstacle);
prediction_obstacles_.add_prediction_obstacle()->CopyFrom(
predictor->prediction_obstacle());
}
......
......@@ -19,7 +19,7 @@
namespace apollo {
namespace prediction {
void FreeMovePredictor::Predict() const {}
void FreeMovePredictor::Predict(Obstacle* obstacle) const {}
} // prediction
} // apollo
......@@ -42,7 +42,7 @@ class FreeMovePredictor : public Predictor {
/**
* @brief Make prediction
*/
void Predict() const override;
void Predict(Obstacle* obstacle) const override;
};
} // namespace prediction
......
......@@ -19,7 +19,7 @@
namespace apollo {
namespace prediction {
void LaneSequencePredictor::Predict() const {}
void LaneSequencePredictor::Predict(Obstacle* obstacle) const {}
} // prediction
} // apollo
......@@ -42,7 +42,7 @@ class LaneSequencePredictor : public Predictor {
/**
* @brief Make prediction
*/
void Predict() const override;
void Predict(Obstacle* obstacle) const override;
};
} // namespace prediction
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册