Apollo  6.0
Open source self driving car software
interaction_predictor.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2019 The Apollo Authors. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13  *implied. See the License for the specific language governing
14  *permissions and limitations under the License.
15  *****************************************************************************/
21 #pragma once
22 
23 #include <utility>
24 #include <vector>
25 
27 
28 namespace apollo {
29 namespace prediction {
30 
32  public:
37 
41  virtual ~InteractionPredictor() = default;
42 
49  bool Predict(const ADCTrajectoryContainer* adc_trajectory_container,
50  Obstacle* obstacle,
51  ObstaclesContainer* obstacles_container) override;
52 
53  private:
54  void Clear();
55 
56  void BuildADCTrajectory(
57  const ADCTrajectoryContainer* adc_trajectory_container,
58  const double time_resolution);
59 
60  bool DrawTrajectory(
61  const Obstacle& obstacle, const LaneSequence& lane_sequence,
62  const double lon_acceleration, const double total_time,
63  const double period,
64  std::vector<apollo::common::TrajectoryPoint>* trajectory_points);
65 
66  double ComputeTrajectoryCost(
67  const Obstacle& obstacle, const LaneSequence& lane_sequence,
68  const double acceleration,
69  const ADCTrajectoryContainer* adc_trajectory_container);
70 
71  double LongitudinalAccelerationCost(const double acceleration);
72 
73  double CentripetalAccelerationCost(const LaneSequence& lane_sequence,
74  const double speed,
75  const double acceleration);
76 
77  double CollisionWithEgoVehicleCost(const LaneSequence& lane_sequence,
78  const double speed,
79  const double acceleration);
80 
81  bool LowerRightOfWayThanEgo(
82  const Obstacle& obstacle, const LaneSequence& lane_sequence,
83  const ADCTrajectoryContainer* adc_trajectory_container);
84 
85  double ComputeLikelihood(const double cost);
86 
87  double ComputePosterior(const double prior, const double likelihood);
88 
89  private:
90  std::vector<apollo::common::TrajectoryPoint> adc_trajectory_;
91 };
92 
93 } // namespace prediction
94 } // namespace apollo
Prediction obstacle.
Definition: obstacle.h:52
Define the sequence predictor base class.
virtual ~InteractionPredictor()=default
Destructor.
Definition: obstacles_container.h:39
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
Definition: sequence_predictor.h:35
Definition: interaction_predictor.h:31
bool Predict(const ADCTrajectoryContainer *adc_trajectory_container, Obstacle *obstacle, ObstaclesContainer *obstacles_container) override
Make prediction.
Definition: adc_trajectory_container.h:37