Apollo 10.0
自动驾驶开放平台
mrf_motion_filter.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 <string>
20
24
25namespace apollo {
26namespace perception {
27namespace radar4d {
28
30 public:
31 MrfMotionFilter() = default;
32 virtual ~MrfMotionFilter() = default;
33
34 bool Init(
35 const MrfFilterInitOptions& options = MrfFilterInitOptions()) override;
36
44 void UpdateWithObject(const MrfFilterOptions& options,
45 const MrfTrackDataConstPtr& track_data,
46 TrackedObjectPtr new_object) override;
47
55 void UpdateWithoutObject(const MrfFilterOptions& options, double timestamp,
56 MrfTrackDataPtr track_data) override;
57
63 std::string Name() const override { return "MrfMotionFilter"; }
64
65 protected:
72
83 const MrfTrackDataConstPtr& track_data,
84 const TrackedObjectConstPtr& latest_object, TrackedObjectPtr new_object);
85
94 void StateGainAdjustment(const MrfTrackDataConstPtr& track_data,
95 const TrackedObjectConstPtr& latest_object,
96 const TrackedObjectConstPtr& new_object,
97 Eigen::Vector4d* gain);
98
107 const MrfTrackDataConstPtr& track_data,
108 const TrackedObjectConstPtr& latest_object, TrackedObjectPtr new_object);
109
119 TrackedObjectPtr new_object,
120 bool velocity_source_is_belief = true);
121
128 void BoostupState(const MrfTrackDataConstPtr& track_data,
129 TrackedObjectPtr new_object);
130
136 void ClipingState(TrackedObjectPtr object);
137
145 TrackedObjectPtr object);
146
153 void UpdateConverged(const MrfTrackDataConstPtr& track_data,
154 TrackedObjectPtr object);
155
161 void StateToBelief(TrackedObjectPtr object);
162
168 void BeliefToOutput(TrackedObjectPtr object);
169
170 protected:
171 const double EPSION_TIME = 1e-3;
172 const double DEFAULT_FPS = 0.1;
173 // motion measurement
174 std::shared_ptr<MrfMotionMeasurement> motion_measurer_;
175 // motion refiner
176 std::shared_ptr<MrfMotionRefiner> motion_refiner_;
177 // switch for filter strategies
178 bool use_adaptive_ = true;
179 bool use_breakdown_ = true;
181 // default covariance parameters for kalman filter
186 // other parameters
190 double noise_maximum_ = 0.1;
192}; // class MrfMotionFilter
193
194} // namespace radar4d
195} // namespace perception
196} // namespace apollo
void ClipingState(TrackedObjectPtr object)
Cliping state if is within noise level
void StateToBelief(TrackedObjectPtr object)
Synchronize state to belief to keep consistency
std::shared_ptr< MrfMotionMeasurement > motion_measurer_
std::shared_ptr< MrfMotionRefiner > motion_refiner_
void UpdateConverged(const MrfTrackDataConstPtr &track_data, TrackedObjectPtr object)
Update convergence confidence
void UpdateWithObject(const MrfFilterOptions &options, const MrfTrackDataConstPtr &track_data, TrackedObjectPtr new_object) override
Updating motion filter with object
void BeliefToOutput(TrackedObjectPtr object)
Copy belief to output
bool Init(const MrfFilterInitOptions &options=MrfFilterInitOptions()) override
Init mrf fitler
void OnlineCovarianceEstimation(const MrfTrackDataConstPtr &track_data, TrackedObjectPtr object)
Estimate covariance considering history measurment
void ConvergenceEstimationAndBoostUp(const MrfTrackDataConstPtr &track_data, const TrackedObjectConstPtr &latest_object, TrackedObjectPtr new_object)
Estimate convergence confidence and boost up state
void ComputeConvergenceConfidence(const MrfTrackDataConstPtr &track_data, TrackedObjectPtr new_object, bool velocity_source_is_belief=true)
Compute convergence confidence
void UpdateWithoutObject(const MrfFilterOptions &options, double timestamp, MrfTrackDataPtr track_data) override
Updating motion filter without object
void StateGainAdjustment(const MrfTrackDataConstPtr &track_data, const TrackedObjectConstPtr &latest_object, const TrackedObjectConstPtr &new_object, Eigen::Vector4d *gain)
Adjust kalman state gain with several strategies
void BoostupState(const MrfTrackDataConstPtr &track_data, TrackedObjectPtr new_object)
Boost up state considering track history
void InitializeTrackState(TrackedObjectPtr new_object)
Initialize track state and store in the new object
std::string Name() const override
Get class name
void KalmanFilterUpdateWithPartialObservation(const MrfTrackDataConstPtr &track_data, const TrackedObjectConstPtr &latest_object, TrackedObjectPtr new_object)
Update state with kalman filter, constant acceleration motion model, only velocity measurement is obs...
std::shared_ptr< const TrackedObject > TrackedObjectConstPtr
std::shared_ptr< MrfTrackData > MrfTrackDataPtr
std::shared_ptr< TrackedObject > TrackedObjectPtr
std::shared_ptr< const MrfTrackData > MrfTrackDataConstPtr
class register implement
Definition arena_queue.h:37