如何在預測模塊中添加一個預測器?

本文做者:Apollo開發者社區ide

簡介lua

 

預測器爲每一個障礙物生成預測軌跡。在這裏,假設咱們想給咱們的車輛增長一個新的預測器,用於其餘類型的障礙。spa

 

添加預測器的步驟code

 

以下步驟將會指導您在預測器中添加一個 NewPredictor繼承

 

  1. 定義一個繼承基類 Predictor 的類開發

  2. 實現新類 NewPredictorget

  3. 在 prediction_conf.proto中添加一個新的預測器類型io

  4. 更新 prediction_conf社區

  5. 更新預測器管理器(Predictor manager)function

 

下面讓咱們用上面的方法來添加新的預測器。

 

1、定義一個繼承基類 Predictor的類

 

在文件夾 modules/prediction/predictor/vehicle中建立一個名爲new_predictor.h的文件,文件內容以下:

 

#include "modules/prediction/predictor/predictor.h"

namespace apollo {
namespace prediction {

class NewPredictor : public Predictor {
 public:
  void Predict(Obstacle* obstacle) override;
  // Other useful functions and fields.
};

}  // namespace prediction
}  // namespace apollo

 

2、Implement the class NewPredictor

 

在建立了 new_predictor.h的文件夾中建立文件 new_predictor.cc。 文件內容以下:

 

#include "modules/prediction/predictor/vehicle/new_predictor.h"

namespace apollo {
namespace prediction {

NewPredictor::Predict(Obstacle* obstacle)() {
  // Get the results from evaluator
  // Generate the predicted trajectory
}

// Other functions

}  // namespace prediction
}  // namespace apollo

 

3、添加新的預測器類型

 

prediction_conf.proto中添加新預測器類型:

 

enum PredictorType {
   LANE_SEQUENCE_PREDICTOR = 0;
   FREE_MOVE_PREDICTOR = 1;
   REGIONAL_PREDICTOR = 2;
   MOVE_SEQUENCE_PREDICTOR = 3;
   NEW_PREDICTOR = 4;
 }

 

4、更新prediction_conf

 

modules/prediction/conf/prediction_conf.pb.txt中, 更新predictor_type部分以下:

 

obstacle_conf {
  obstacle_type: VEHICLE
  obstacle_status: ON_LANE
  evaluator_type: NEW_EVALUATOR
  predictor_type: NEW_PREDICTOR
}

 

5、更新預測器管理器(Predictor manager)

 

更新 CreateEvluator( ... ) 以下:

 

case ObstacleConf::NEW_PREDICTOR: {
    predictor_ptr.reset(new NewPredictor());
    break;
  }

 

更新 RegisterPredictors() 以下:

 

1
RegisterPredictor(ObstacleConf::NEW_PREDICTOR);

 

完成以上步驟後,一個新的預測器就建立好了。

原文連接地址:https://developer.baidu.com/topic/show/290041

相關文章
相關標籤/搜索