Apollo  6.0
Open source self driving car software
distance_collection.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2018 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 implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *****************************************************************************/
16 #pragma once
17 
22 
23 namespace apollo {
24 namespace perception {
25 namespace lidar {
26 
27 // @brief: compute location distance for given track & object
28 // @params [in]: object for computing distance
29 // @params [in]: predicted state of track for computing distance
30 // @params [in]: new detected object for computing distance
31 // @params [in]: time interval from last matching
32 // @return: distance
33 float LocationDistance(const TrackedObjectConstPtr& last_object,
34  const Eigen::VectorXf& track_predict,
35  const TrackedObjectConstPtr& new_object,
36  const double time_diff);
37 
38 // @brief: compute direction distance for given track & object
39 // @params [in]: object for computing distance
40 // @params [in]: predicted state of track for computing distance
41 // @params [in]: new detected object for computing distance
42 // @params [in]: time interval from last matching
43 // @return distance
44 float DirectionDistance(const TrackedObjectConstPtr& last_object,
45  const Eigen::VectorXf& track_predict,
46  const TrackedObjectConstPtr& new_object,
47  const double time_diff);
48 
49 // @brief: compute bbox size distance for given track & object
50 // @params [in]: object for computing distance
51 // @params [in]: predicted state of track for computing distance
52 // @params [in]: new detected object for computing distance
53 // @params [in]: time interval from last matching
54 // @return distance
55 float BboxSizeDistance(const TrackedObjectConstPtr& last_object,
56  const Eigen::VectorXf& track_predict,
57  const TrackedObjectConstPtr& new_object,
58  const double time_diff);
59 
60 // @brief: compute point num distance for given track & object
61 // @params [in]: object for computing distance
62 // @params [in]: predicted state of track for computing distance
63 // @params [in]: new detected object for computing distance
64 // @params [in]: time interval from last matching
65 // @return distance
66 float PointNumDistance(const TrackedObjectConstPtr& last_object,
67  const Eigen::VectorXf& track_predict,
68  const TrackedObjectConstPtr& new_object,
69  const double time_diff);
70 
71 // @brief: compute histogram distance for given track & object
72 // @params [in]: object for computing distance
73 // @params [in]: predicted state of track for computing distance
74 // @params [in]: new detected object for computing distance
75 // @params [in]: time interval from last matching
76 // @return distance
77 float HistogramDistance(const TrackedObjectConstPtr& last_object,
78  const Eigen::VectorXf& track_predict,
79  const TrackedObjectConstPtr& new_object,
80  const double time_diff);
81 
82 // @brief: compute centroid shift distance for object and background match
83 // @params [in]: object for computing distance
84 // @params [in]: unused
85 // @params [in]: new detected object for computing distance
86 // @params [in]: unused
87 // @return distance
88 float CentroidShiftDistance(const TrackedObjectConstPtr& last_object,
89  const Eigen::VectorXf& track_predict,
90  const TrackedObjectConstPtr& cur_obj,
91  const double time_diff);
92 
93 // @brief compute bbox iou distance for object and background match
94 // @params [in]: object for computing distance
95 // @params [in]: unused
96 // @params [in]: new detected object for computing distance
97 // @params [in]: unused
98 // @return distance
99 float BboxIouDistance(const TrackedObjectConstPtr& last_object,
100  const Eigen::VectorXf& track_predict,
101  const TrackedObjectConstPtr& cur_obj,
102  const double time_diff, double match_threshold);
103 
104 // @brief lidar only: compute semantic map based distance
105 // @params [in]: track data contained predicted trajectory feature
106 // @params [in]: new detected object for computing distance
107 // @return distance
108 // float SemanticMapDistance(const MlfTrackData& track_dat,
109 // const TrackedObjectConstPtr& cur_obj);
110 
111 } // namespace lidar
112 } // namespace perception
113 } // namespace apollo
float DirectionDistance(const TrackedObjectConstPtr &last_object, const Eigen::VectorXf &track_predict, const TrackedObjectConstPtr &new_object, const double time_diff)
Defines the Vec2d class.
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
float BboxSizeDistance(const TrackedObjectConstPtr &last_object, const Eigen::VectorXf &track_predict, const TrackedObjectConstPtr &new_object, const double time_diff)
float BboxIouDistance(const TrackedObjectConstPtr &last_object, const Eigen::VectorXf &track_predict, const TrackedObjectConstPtr &cur_obj, const double time_diff, double match_threshold)
float CentroidShiftDistance(const TrackedObjectConstPtr &last_object, const Eigen::VectorXf &track_predict, const TrackedObjectConstPtr &cur_obj, const double time_diff)
float HistogramDistance(const TrackedObjectConstPtr &last_object, const Eigen::VectorXf &track_predict, const TrackedObjectConstPtr &new_object, const double time_diff)
float PointNumDistance(const TrackedObjectConstPtr &last_object, const Eigen::VectorXf &track_predict, const TrackedObjectConstPtr &new_object, const double time_diff)
float LocationDistance(const TrackedObjectConstPtr &last_object, const Eigen::VectorXf &track_predict, const TrackedObjectConstPtr &new_object, const double time_diff)
std::shared_ptr< const TrackedObject > TrackedObjectConstPtr
Definition: tracked_object.h:157