Apollo 10.0
自动驾驶开放平台
apollo::prediction::MoveSequencePredictor类 参考

#include <move_sequence_predictor.h>

类 apollo::prediction::MoveSequencePredictor 继承关系图:
apollo::prediction::MoveSequencePredictor 的协作图:

Public 成员函数

 MoveSequencePredictor ()
 Constructor
 
virtual ~MoveSequencePredictor ()=default
 Destructor
 
bool Predict (const ADCTrajectoryContainer *adc_trajectory_container, Obstacle *obstacle, ObstaclesContainer *obstacles_container) override
 Make prediction
 
 FRIEND_TEST (MoveSequencePredictorTest, Polynomial)
 
 FRIEND_TEST (MoveSequencePredictorTest, Utils)
 
- Public 成员函数 继承自 apollo::prediction::SequencePredictor
 SequencePredictor ()=default
 Constructor
 
virtual ~SequencePredictor ()=default
 Destructor
 
bool Predict (const ADCTrajectoryContainer *adc_trajectory_container, Obstacle *obstacle, ObstaclesContainer *obstacles_container) override
 Make prediction
 
 FRIEND_TEST (SequencePredictorTest, General)
 
- Public 成员函数 继承自 apollo::prediction::Predictor
 Predictor ()=default
 Constructor
 
virtual ~Predictor ()=default
 Destructor
 
int NumOfTrajectories (const Obstacle &obstacle)
 Get trajectory size
 
void TrimTrajectories (const ADCTrajectoryContainer &adc_trajectory_container, Obstacle *obstacle)
 Trim prediction trajectories by adc trajectory
 
const ObstacleConf::PredictorTypepredictor_type ()
 get the predictor type
 

额外继承的成员函数

- Public 类型 继承自 apollo::prediction::SequencePredictor
enum class  LaneChangeType {
  LEFT , RIGHT , STRAIGHT , ONTO_LANE ,
  INVALID
}
 
- Protected 成员函数 继承自 apollo::prediction::SequencePredictor
bool GetLongitudinalPolynomial (const Obstacle &obstacle, const LaneSequence &lane_sequence, const std::pair< double, double > &lon_end_state, std::array< double, 5 > *coefficients)
 
bool GetLateralPolynomial (const Obstacle &obstacle, const LaneSequence &lane_sequence, const double time_to_end_state, std::array< double, 4 > *coefficients)
 
void FilterLaneSequences (const Feature &feature, const std::string &lane_id, const Obstacle *ego_vehicle_ptr, const ADCTrajectoryContainer *adc_trajectory_container, std::vector< bool > *enable_lane_sequence)
 Filter lane sequences
 
LaneChangeType GetLaneChangeType (const std::string &lane_id, const LaneSequence &lane_sequence)
 Get lane change type
 
double GetLaneChangeDistanceWithADC (const LaneSequence &lane_sequence, const Obstacle *ego_vehicle_ptr, const ADCTrajectoryContainer *adc_trajectory_container)
 Get lane change distance with ADC
 
void DrawConstantAccelerationTrajectory (const Obstacle &obstacle, const LaneSequence &lane_sequence, const double total_time, const double period, const double acceleration, std::vector< apollo::common::TrajectoryPoint > *points)
 Draw constant acceleration trajectory points
 
double GetLaneSequenceCurvatureByS (const LaneSequence &lane_sequence, const double s)
 Get lane sequence curvature by s
 
void Clear ()
 Clear private members
 
std::string ToString (const LaneSequence &sequence)
 Convert a lane sequence to string
 
- Protected 成员函数 继承自 apollo::prediction::Predictor
void SetEqualProbability (const double probability, const int start_index, Obstacle *obstacle_ptr)
 Set equal probability to prediction trajectories
 
bool TrimTrajectory (const ADCTrajectoryContainer &adc_trajectory_container, Obstacle *obstacle, Trajectory *trajectory)
 Trim a single prediction trajectory, keep the portion that is not in junction.
 
bool SupposedToStop (const Feature &feature, const double stop_distance, double *acceleration)
 Determine if an obstacle is supposed to stop within a distance
 
- 静态 Protected 成员函数 继承自 apollo::prediction::Predictor
static Trajectory GenerateTrajectory (const std::vector< apollo::common::TrajectoryPoint > &points)
 Generate trajectory from trajectory points
 
- Protected 属性 继承自 apollo::prediction::Predictor
ObstacleConf::PredictorType predictor_type_
 

详细描述

在文件 move_sequence_predictor.h33 行定义.

构造及析构函数说明

◆ MoveSequencePredictor()

apollo::prediction::MoveSequencePredictor::MoveSequencePredictor ( )

Constructor

在文件 move_sequence_predictor.cc34 行定义.

◆ ~MoveSequencePredictor()

virtual apollo::prediction::MoveSequencePredictor::~MoveSequencePredictor ( )
virtualdefault

Destructor

成员函数说明

◆ FRIEND_TEST() [1/2]

apollo::prediction::MoveSequencePredictor::FRIEND_TEST ( MoveSequencePredictorTest  ,
Polynomial   
)

◆ FRIEND_TEST() [2/2]

apollo::prediction::MoveSequencePredictor::FRIEND_TEST ( MoveSequencePredictorTest  ,
Utils   
)

◆ Predict()

bool apollo::prediction::MoveSequencePredictor::Predict ( const ADCTrajectoryContainer adc_trajectory_container,
Obstacle obstacle,
ObstaclesContainer obstacles_container 
)
overridevirtual

Make prediction

参数
ADCtrajectory container
Obstaclepointer
Obstaclescontainer
返回
If predicted successfully

实现了 apollo::prediction::Predictor.

在文件 move_sequence_predictor.cc38 行定义.

40 {
41 Clear();
42
43 CHECK_NOTNULL(obstacle);
44 CHECK_GT(obstacle->history_size(), 0U);
45
46 obstacle->SetPredictorType(predictor_type_);
47
48 const Feature& feature = obstacle->latest_feature();
49
50 if (!feature.has_lane() || !feature.lane().has_lane_graph()) {
51 AERROR << "Obstacle [" << obstacle->id() << "] has no lane graph.";
52 return false;
53 }
54
55 std::string lane_id = "";
56 if (feature.lane().has_lane_feature()) {
57 lane_id = feature.lane().lane_feature().lane_id();
58 }
59 int num_lane_sequence = feature.lane().lane_graph().lane_sequence_size();
60 std::vector<bool> enable_lane_sequence(num_lane_sequence, true);
61 Obstacle* ego_vehicle_ptr =
62 obstacles_container->GetObstacle(FLAGS_ego_vehicle_id);
63 FilterLaneSequences(feature, lane_id, ego_vehicle_ptr,
64 adc_trajectory_container, &enable_lane_sequence);
65 for (int i = 0; i < num_lane_sequence; ++i) {
66 const LaneSequence& sequence = feature.lane().lane_graph().lane_sequence(i);
67 if (sequence.lane_segment().empty() ||
68 sequence.lane_segment(0).lane_point().empty()) {
69 ADEBUG << "Empty lane segments.";
70 continue;
71 }
72
73 if (!enable_lane_sequence[i]) {
74 ADEBUG << "Lane sequence [" << ToString(sequence)
75 << "] with probability [" << sequence.probability()
76 << "] is disqualified.";
77 continue;
78 }
79
80 ADEBUG << "Obstacle [" << obstacle->id()
81 << "] will draw a lane sequence trajectory [" << ToString(sequence)
82 << "] with probability [" << sequence.probability() << "].";
83
84 std::vector<TrajectoryPoint> points;
85 auto end_time1 = std::chrono::system_clock::now();
86
87 bool is_about_to_stop = false;
88 double acceleration = 0.0;
89 if (sequence.has_stop_sign()) {
90 double stop_distance =
91 sequence.stop_sign().lane_sequence_s() - sequence.lane_s();
92 is_about_to_stop = SupposedToStop(feature, stop_distance, &acceleration);
93 }
94
95 if (is_about_to_stop) {
97 *obstacle, sequence, FLAGS_prediction_trajectory_time_length,
98 FLAGS_prediction_trajectory_time_resolution, acceleration, &points);
99 } else {
100 DrawMoveSequenceTrajectoryPoints(
101 *obstacle, sequence, FLAGS_prediction_trajectory_time_length,
102 FLAGS_prediction_trajectory_time_resolution, &points);
103 }
104 auto end_time2 = std::chrono::system_clock::now();
105 std::chrono::duration<double> diff = end_time2 - end_time1;
106 ADEBUG << " Time to draw trajectory: " << diff.count() * 1000 << " msec.";
107
108 Trajectory trajectory = GenerateTrajectory(points);
109 trajectory.set_probability(sequence.probability());
110 obstacle->mutable_latest_feature()->add_predicted_trajectory()->CopyFrom(
111 trajectory);
112 }
113 return true;
114}
static Trajectory GenerateTrajectory(const std::vector< apollo::common::TrajectoryPoint > &points)
Generate trajectory from trajectory points
Definition predictor.cc:34
bool SupposedToStop(const Feature &feature, const double stop_distance, double *acceleration)
Determine if an obstacle is supposed to stop within a distance
Definition predictor.cc:125
void FilterLaneSequences(const Feature &feature, const std::string &lane_id, const Obstacle *ego_vehicle_ptr, const ADCTrajectoryContainer *adc_trajectory_container, std::vector< bool > *enable_lane_sequence)
Filter lane sequences
void DrawConstantAccelerationTrajectory(const Obstacle &obstacle, const LaneSequence &lane_sequence, const double total_time, const double period, const double acceleration, std::vector< apollo::common::TrajectoryPoint > *points)
Draw constant acceleration trajectory points
std::string ToString(const LaneSequence &sequence)
Convert a lane sequence to string
#define ADEBUG
Definition log.h:41
#define AERROR
Definition log.h:44

该类的文档由以下文件生成: