Apollo  6.0
Open source self driving car software
hm_matcher.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 
18 #include <vector>
19 
24 
25 namespace apollo {
26 namespace perception {
27 namespace radar {
28 
29 class HMMatcher : public BaseMatcher {
30  public:
31  HMMatcher();
32  virtual ~HMMatcher();
33  bool Init() override;
34  // @brief match radar objects to tracks
35  // @params[IN] radar_tracks: global tracks
36  // @params[IN] radar_frame: current radar frame
37  // @params[IN] options: matcher options for future use
38  // @params[OUT] assignments: matched pair of tracks and measurements
39  // @params[OUT] unassigned_tracks: unmatched tracks
40  // @params[OUT] unassigned_objects: unmatched objects
41  // @return nothing
42  bool Match(const std::vector<RadarTrackPtr> &radar_tracks,
43  const base::Frame &radar_frame,
44  const TrackObjectMatcherOptions &options,
45  std::vector<TrackObjectPair> *assignments,
46  std::vector<size_t> *unassigned_tracks,
47  std::vector<size_t> *unassigned_objects) override;
48 
49  protected:
50  bool RefinedTrack(const base::ObjectPtr &track_object, double track_timestamp,
51  const base::ObjectPtr &radar_object,
52  double radar_timestamp) override;
53 
54  private:
55  common::GatedHungarianMatcher<double> hungarian_matcher_;
56  void TrackObjectPropertyMatch(const std::vector<RadarTrackPtr> &radar_tracks,
57  const base::Frame &radar_frame,
58  std::vector<TrackObjectPair> *assignments,
59  std::vector<size_t> *unassigned_tracks,
60  std::vector<size_t> *unassigned_objects);
61  void ComputeAssociationMat(const std::vector<RadarTrackPtr> &radar_tracks,
62  const base::Frame &radar_frame,
63  const std::vector<size_t> &unassigned_tracks,
64  const std::vector<size_t> &unassigned_objects,
65  std::vector<std::vector<double>> *association_mat);
66  double DistanceBetweenObs(const base::ObjectPtr &obs1, double timestamp1,
67  const base::ObjectPtr &obs2, double timestamp2);
68 };
69 
70 } // namespace radar
71 } // namespace perception
72 } // namespace apollo
Definition: hm_matcher.h:29
Definition: frame.h:32
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
bool RefinedTrack(const base::ObjectPtr &track_object, double track_timestamp, const base::ObjectPtr &radar_object, double radar_timestamp) override
Definition: base_matcher.h:39
bool Match(const std::vector< RadarTrackPtr > &radar_tracks, const base::Frame &radar_frame, const TrackObjectMatcherOptions &options, std::vector< TrackObjectPair > *assignments, std::vector< size_t > *unassigned_tracks, std::vector< size_t > *unassigned_objects) override
std::shared_ptr< Object > ObjectPtr
Definition: object.h:123