Apollo 10.0
自动驾驶开放平台
mrf_engine.h
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2023 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 <memory>
19#include <set>
20#include <string>
21#include <vector>
22
23#include "modules/common_msgs/perception_msgs/perception_obstacle.pb.h"
24
31
32namespace apollo {
33namespace perception {
34namespace radar4d {
35
37 public:
38 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
39
40 public:
41 MrfEngine() = default;
42 virtual ~MrfEngine() = default;
50 bool Init(const MultiTargetTrackerInitOptions& options =
52
61 bool Track(const MultiTargetTrackerOptions& options,
62 RadarFrame* frame) override;
68 std::string Name() const override { return "MrfEngine"; };
69
70 protected:
78 const std::vector<base::ObjectPtr>& objects,
79 const base::SensorInfo& sensor_info);
80
90 const MrfTrackObjectMatcherOptions& match_options,
91 const std::vector<TrackedObjectPtr>& objects, const std::string& name,
92 std::vector<MrfTrackDataPtr>* tracks);
93
100 void TrackStateFilter(const std::vector<MrfTrackDataPtr>& tracks,
101 double frame_timestamp);
102
108 void CollectTrackedResult(RadarFrame* frame);
109
117 void RemoveStaleTrackData(const std::string& name, double timestamp,
118 std::vector<MrfTrackDataPtr>* tracks);
119
124 void Clear();
125 // void AttachDebugInfo(
126 // std::vector<std::shared_ptr<base::Object>>* foreground_objs);
127
128 // void AttachSemanticPredictedTrajectory(
129 // const std::vector<MrfTrackDataPtr>& tracks);
130
131 protected:
132 // foreground and background track data
133 std::vector<MrfTrackDataPtr> foreground_track_data_;
134 std::vector<MrfTrackDataPtr> background_track_data_;
135 // foreground and background tracked objects
136 std::vector<TrackedObjectPtr> foreground_objects_;
137 std::vector<TrackedObjectPtr> background_objects_;
138 // tracker
139 std::unique_ptr<MrfTracker> tracker_;
140 // track object matcher
141 std::unique_ptr<MrfTrackObjectMatcher> matcher_;
142 // offset maintained for numeric issues
143 Eigen::Vector3d global_to_local_offset_;
144 Eigen::Affine3d sensor_to_local_pose_;
145 // main sensor info
146 std::set<std::string> main_sensors_;
147 // params
153 // semantic map
157 bool use_semantic_map_ = false;
158 // apollo::perception::EvaluatorManager evaluator_;
159};
160
161} // namespace radar4d
162} // namespace perception
163} // namespace apollo
void SplitAndTransformToTrackedObjects(const std::vector< base::ObjectPtr > &objects, const base::SensorInfo &sensor_info)
Split foreground/background objects and attach to tracked objects
void TrackObjectMatchAndAssign(const MrfTrackObjectMatcherOptions &match_options, const std::vector< TrackedObjectPtr > &objects, const std::string &name, std::vector< MrfTrackDataPtr > *tracks)
Match tracks and objets and object-track assignment
std::vector< TrackedObjectPtr > foreground_objects_
Definition mrf_engine.h:136
std::set< std::string > main_sensors_
Definition mrf_engine.h:146
std::unique_ptr< MrfTracker > tracker_
Definition mrf_engine.h:139
std::vector< TrackedObjectPtr > background_objects_
Definition mrf_engine.h:137
bool Track(const MultiTargetTrackerOptions &options, RadarFrame *frame) override
Track segmented objects from multiple radar sensors
Definition mrf_engine.cc:79
std::vector< MrfTrackDataPtr > background_track_data_
Definition mrf_engine.h:134
apollo::prediction::PoseContainer pose_container_
Definition mrf_engine.h:155
std::string Name() const override
Get class name
Definition mrf_engine.h:68
apollo::prediction::ObstaclesContainer obstacle_container_
Definition mrf_engine.h:154
void CollectTrackedResult(RadarFrame *frame)
Collect track results and store in frame tracked objects
apollo::perception::onboard::MsgSerializer serializer_
Definition mrf_engine.h:156
void TrackStateFilter(const std::vector< MrfTrackDataPtr > &tracks, double frame_timestamp)
Filter tracks
void RemoveStaleTrackData(const std::string &name, double timestamp, std::vector< MrfTrackDataPtr > *tracks)
Remove stale track data for memory management
std::unique_ptr< MrfTrackObjectMatcher > matcher_
Definition mrf_engine.h:141
std::vector< MrfTrackDataPtr > foreground_track_data_
Definition mrf_engine.h:133
bool Init(const MultiTargetTrackerInitOptions &options=MultiTargetTrackerInitOptions()) override
Init mrf engine
Definition mrf_engine.cc:44
class register implement
Definition arena_queue.h:37
Obstacles container
Obstacles container