lag_prediction.h 1.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
/******************************************************************************
 * Copyright 2017 The Apollo Authors. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *****************************************************************************/

/**
 * @file
 **/

#ifndef MODULES_PLANNING_COMMON_LAG_PREDICTION_H_
#define MODULES_PLANNING_COMMON_LAG_PREDICTION_H_

#include <unordered_map>
#include <unordered_set>

#include "modules/prediction/proto/prediction_obstacle.pb.h"

namespace apollo {
namespace planning {

class LagPrediction {
 public:
  LagPrediction(uint32_t min_appear_num, uint32_t max_disappear_num);
  void GetLaggedPrediction(prediction::PredictionObstacles* obstacles) const;

  struct LagInfo {
    uint32_t last_observed_seq = 0;
    double last_observed_time = 0.0;
    uint32_t count = 0;
    const prediction::PredictionObstacle* obstacle_ptr = nullptr;
  };

 private:
  void AddObstacleToPrediction(
46
      double delay_sec, const prediction::PredictionObstacle& history_obstacle,
47 48 49 50 51 52 53 54 55 56
      prediction::PredictionObstacles* obstacles) const;

  uint32_t min_appear_num_ = 0;
  uint32_t max_disappear_num_ = 0;
};

}  // namespace planning
}  // namespace apollo

#endif  // namespace MODULES_PLANNING_COMMON_LAG_PREDICTION_H_