提交 578fdb1f 编写于 作者: K kechxu 提交者: Kecheng Xu

Prediction: define a proto specific to frame env and add is_trainable

上级 ef62a2f9
......@@ -37,6 +37,26 @@ namespace prediction {
using apollo::common::adapter::AdapterConfig;
using apollo::perception::PerceptionObstacle;
namespace {
bool IsTrainable(const ObstacleHistory& obstacle_history) {
if (obstacle_history.feature_size() == 0) {
return false;
}
const Feature& latest_feature = obstacle_history.feature(0);
if (latest_feature.id() == -1) {
return false;
}
if (latest_feature.priority().priority() == ObstaclePriority::IGNORE ||
latest_feature.is_still() ||
latest_feature.type() != PerceptionObstacle::VEHICLE) {
return false;
}
return true;
}
} // namespace
EvaluatorManager::EvaluatorManager() { RegisterEvaluators(); }
void EvaluatorManager::RegisterEvaluators() {
......@@ -213,7 +233,7 @@ void EvaluatorManager::BuildCurrentFrameEnv() {
}
size_t num_frames = std::min(static_cast<size_t>(10),
obstacle->history_size());
Features features;
ObstacleHistory obstacle_history;
for (size_t i = 0; i < num_frames; ++i) {
const Feature& obstacle_feature = obstacle->feature(i);
Feature feature;
......@@ -222,19 +242,23 @@ void EvaluatorManager::BuildCurrentFrameEnv() {
feature.mutable_position()->CopyFrom(obstacle_feature.position());
feature.set_theta(obstacle_feature.velocity_heading());
if (obstacle_feature.id() != -1) {
feature.mutable_polygon_point()->CopyFrom(obstacle_feature.polygon_point());
feature.mutable_polygon_point()->CopyFrom(
obstacle_feature.polygon_point());
feature.set_length(obstacle_feature.length());
feature.set_width(obstacle_feature.width());
} else {
feature.set_length(5.0);
feature.set_width(2.1);
}
features.add_feature()->CopyFrom(feature);
obstacle_history.add_feature()->CopyFrom(feature);
}
obstacle_history.set_is_trainable(IsTrainable(obstacle_history));
if (obstacle->id() != -1) {
curr_frame_env.add_list_obstacle_features()->CopyFrom(features);
curr_frame_env.add_obstacles_history()
->CopyFrom(obstacle_history);
} else {
curr_frame_env.mutable_ego_features()->CopyFrom(features);
curr_frame_env.mutable_ego_history()
->CopyFrom(obstacle_history);
}
}
if (FLAGS_prediction_offline_mode == 4) {
......
......@@ -113,8 +113,13 @@ message Features {
repeated Feature feature = 1;
}
message ObstacleHistory {
repeated Feature feature = 1;
optional bool is_trainable = 2 [default = false];
}
message FrameEnv {
optional double timestamp = 1;
optional Features ego_features = 2;
repeated Features list_obstacle_features = 3;
optional ObstacleHistory ego_history = 2;
repeated ObstacleHistory obstacles_history = 3;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册