Apollo 11.0
自动驾驶开放平台
apollo::perception::lidar::MlfTrackObjectMatcher类 参考

#include <mlf_track_object_matcher.h>

apollo::perception::lidar::MlfTrackObjectMatcher 的协作图:

Public 成员函数

 MlfTrackObjectMatcher ()=default
 
 ~MlfTrackObjectMatcher ()=default
 
bool Init (const MlfTrackObjectMatcherInitOptions &options=MlfTrackObjectMatcherInitOptions())
 Initalize mlf track object matcher
 
void Match (const MlfTrackObjectMatcherOptions &options, const std::vector< TrackedObjectPtr > &objects, const std::vector< MlfTrackDataPtr > &tracks, std::vector< std::pair< size_t, size_t > > *assignments, std::vector< size_t > *unassigned_tracks, std::vector< size_t > *unassigned_objects)
 Match detected objects to tracks
 
std::string Name () const
 Get class name
 

Protected 成员函数

void ComputeAssociateMatrix (const std::vector< MlfTrackDataPtr > &tracks, const std::vector< TrackedObjectPtr > &new_objects, algorithm::SecureMat< float > *association_mat)
 Compute association matrix
 

Protected 属性

std::unique_ptr< MlfTrackObjectDistancetrack_object_distance_
 
BaseBipartiteGraphMatcherforeground_matcher_
 
BaseBipartiteGraphMatcherbackground_matcher_
 
float bound_value_ = 100.f
 
float max_match_distance_ = 4.0f
 
bool use_semantic_map = false
 

详细描述

在文件 mlf_track_object_matcher.h39 行定义.

构造及析构函数说明

◆ MlfTrackObjectMatcher()

apollo::perception::lidar::MlfTrackObjectMatcher::MlfTrackObjectMatcher ( )
default

◆ ~MlfTrackObjectMatcher()

apollo::perception::lidar::MlfTrackObjectMatcher::~MlfTrackObjectMatcher ( )
default

成员函数说明

◆ ComputeAssociateMatrix()

void apollo::perception::lidar::MlfTrackObjectMatcher::ComputeAssociateMatrix ( const std::vector< MlfTrackDataPtr > &  tracks,
const std::vector< TrackedObjectPtr > &  new_objects,
algorithm::SecureMat< float > *  association_mat 
)
protected

Compute association matrix

参数
tracksmaintained tracks for matching
new_objectsnew detected objects for matching
association_matmatrix of association distance

在文件 mlf_track_object_matcher.cc98 行定义.

101 {
102 for (size_t i = 0; i < tracks.size(); ++i) {
103 for (size_t j = 0; j < new_objects.size(); ++j) {
104 (*association_mat)(i, j) =
105 track_object_distance_->ComputeDistance(new_objects[j], tracks[i]);
106 }
107 }
108}
std::unique_ptr< MlfTrackObjectDistance > track_object_distance_

◆ Init()

bool apollo::perception::lidar::MlfTrackObjectMatcher::Init ( const MlfTrackObjectMatcherInitOptions options = MlfTrackObjectMatcherInitOptions())

Initalize mlf track object matcher

参数
options
返回
true
false

在文件 mlf_track_object_matcher.cc28 行定义.

29 {
30 std::string config_file = "mlf_track_object_matcher.conf";
31 if (!options.config_file.empty()) {
32 config_file = options.config_file;
33 }
34 config_file = GetConfigFile(options.config_path, config_file);
35 MlfTrackObjectMatcherConfig config;
36 ACHECK(cyber::common::GetProtoFromFile(config_file, &config));
37
38 foreground_matcher_ = BaseBipartiteGraphMatcherRegisterer::GetInstanceByName(
39 config.foreground_mathcer_method());
40 ACHECK(foreground_matcher_ != nullptr);
41 AINFO << "MlfTrackObjectMatcher, fg: " << foreground_matcher_->Name();
42 background_matcher_ = BaseBipartiteGraphMatcherRegisterer::GetInstanceByName(
43 config.background_matcher_method());
44 ACHECK(background_matcher_ != nullptr);
45 AINFO << "MlfTrackObjectMatcher, bg: " << background_matcher_->Name();
48
49 track_object_distance_.reset(new MlfTrackObjectDistance);
50 MlfTrackObjectDistanceInitOptions distance_init_options;
51 distance_init_options.config_path = options.config_path;
52 ACHECK(track_object_distance_->Init(distance_init_options));
53
54 bound_value_ = config.bound_value();
55 max_match_distance_ = config.max_match_distance();
56 return true;
57}
void Reserve(const size_t reserve_height, const size_t reserve_width)
virtual std::string Name() const =0
Get class name
virtual algorithm::SecureMat< float > * cost_matrix()
Get cost matrix
#define ACHECK(cond)
Definition log.h:80
#define AINFO
Definition log.h:42
bool GetProtoFromFile(const std::string &file_name, google::protobuf::Message *message)
Parses the content of the file specified by the file_name as a representation of protobufs,...
Definition file.cc:132
std::string GetConfigFile(const std::string &config_path, const std::string &config_file)
Definition util.cc:80

◆ Match()

void apollo::perception::lidar::MlfTrackObjectMatcher::Match ( const MlfTrackObjectMatcherOptions options,
const std::vector< TrackedObjectPtr > &  objects,
const std::vector< MlfTrackDataPtr > &  tracks,
std::vector< std::pair< size_t, size_t > > *  assignments,
std::vector< size_t > *  unassigned_tracks,
std::vector< size_t > *  unassigned_objects 
)

Match detected objects to tracks

参数
options
objectsnew detected objects for matching
tracksmaintaining tracks for matching
assignmentsassignment pair of object & track
unassigned_tracksracks without matched object
unassigned_objectsobjects without matched track

在文件 mlf_track_object_matcher.cc59 行定义.

65 {
66 assignments->clear();
67 unassigned_objects->clear();
68 unassigned_tracks->clear();
69 if (objects.empty() || tracks.empty()) {
70 unassigned_objects->resize(objects.size());
71 unassigned_tracks->resize(tracks.size());
72 std::iota(unassigned_objects->begin(), unassigned_objects->end(), 0);
73 std::iota(unassigned_tracks->begin(), unassigned_tracks->end(), 0);
74 return;
75 }
76
77 BipartiteGraphMatcherOptions matcher_options;
78 matcher_options.cost_thresh = max_match_distance_;
79 matcher_options.bound_value = bound_value_;
80
81 BaseBipartiteGraphMatcher *matcher =
82 objects[0]->is_background ? background_matcher_ : foreground_matcher_;
83
84 algorithm::SecureMat<float> *association_mat = matcher->cost_matrix();
85
86 association_mat->Resize(tracks.size(), objects.size());
87 ComputeAssociateMatrix(tracks, objects, association_mat);
88 matcher->Match(matcher_options, assignments, unassigned_tracks,
89 unassigned_objects);
90 for (size_t i = 0; i < assignments->size(); ++i) {
91 objects[assignments->at(i).second]->association_score =
92 (*association_mat)(assignments->at(i).first,
93 assignments->at(i).second) /
95 }
96}
void Resize(const size_t resize_height, const size_t resize_width)
void ComputeAssociateMatrix(const std::vector< MlfTrackDataPtr > &tracks, const std::vector< TrackedObjectPtr > &new_objects, algorithm::SecureMat< float > *association_mat)
Compute association matrix

◆ Name()

std::string apollo::perception::lidar::MlfTrackObjectMatcher::Name ( ) const
inline

Get class name

返回
std::string

在文件 mlf_track_object_matcher.h76 行定义.

76{ return "MlfTrackObjectMatcher"; }

类成员变量说明

◆ background_matcher_

BaseBipartiteGraphMatcher* apollo::perception::lidar::MlfTrackObjectMatcher::background_matcher_
protected

在文件 mlf_track_object_matcher.h93 行定义.

◆ bound_value_

float apollo::perception::lidar::MlfTrackObjectMatcher::bound_value_ = 100.f
protected

在文件 mlf_track_object_matcher.h95 行定义.

◆ foreground_matcher_

BaseBipartiteGraphMatcher* apollo::perception::lidar::MlfTrackObjectMatcher::foreground_matcher_
protected

在文件 mlf_track_object_matcher.h92 行定义.

◆ max_match_distance_

float apollo::perception::lidar::MlfTrackObjectMatcher::max_match_distance_ = 4.0f
protected

在文件 mlf_track_object_matcher.h96 行定义.

◆ track_object_distance_

std::unique_ptr<MlfTrackObjectDistance> apollo::perception::lidar::MlfTrackObjectMatcher::track_object_distance_
protected

在文件 mlf_track_object_matcher.h91 行定义.

◆ use_semantic_map

bool apollo::perception::lidar::MlfTrackObjectMatcher::use_semantic_map = false
protected

在文件 mlf_track_object_matcher.h97 行定义.


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