Apollo 11.0
自动驾驶开放平台
interaction_predictor.h
浏览该文件的文档.
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
28namespace apollo {
29namespace 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
bool Predict(const ADCTrajectoryContainer *adc_trajectory_container, Obstacle *obstacle, ObstaclesContainer *obstacles_container) override
Make prediction
virtual ~InteractionPredictor()=default
Destructor
Prediction obstacle.
Definition obstacle.h:52
class register implement
Definition arena_queue.h:37
Define the sequence predictor base class