Apollo 11.0
自动驾驶开放平台
mlf_motion_filter.h
浏览该文件的文档.
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 <memory>
19#include <string>
20
24
25namespace apollo {
26namespace perception {
27namespace lidar {
28
30 public:
31 MlfMotionFilter() = default;
32 virtual ~MlfMotionFilter() = default;
33
34 bool Init(
35 const MlfFilterInitOptions& options = MlfFilterInitOptions()) override;
36
44 void UpdateWithObject(const MlfFilterOptions& options,
45 const MlfTrackDataConstPtr& track_data,
46 TrackedObjectPtr new_object) override;
47
55 void UpdateWithoutObject(const MlfFilterOptions& options, double timestamp,
56 MlfTrackDataPtr track_data) override;
57
63 std::string Name() const override { return "MlfMotionFilter"; }
64
65 protected:
72
83 const MlfTrackDataConstPtr& track_data,
84 const TrackedObjectConstPtr& latest_object, TrackedObjectPtr new_object);
85
94 void StateGainAdjustment(const MlfTrackDataConstPtr& track_data,
95 const TrackedObjectConstPtr& latest_object,
96 const TrackedObjectConstPtr& new_object,
97 Eigen::Vector4d* gain);
98
107 const MlfTrackDataConstPtr& 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 MlfTrackDataConstPtr& track_data,
129 TrackedObjectPtr new_object);
130
136 void ClipingState(TrackedObjectPtr object);
137
145 TrackedObjectPtr object);
146
153 void UpdateConverged(const MlfTrackDataConstPtr& 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<MlfMotionMeasurement> motion_measurer_;
175 // motion refiner
176 std::shared_ptr<MlfMotionRefiner> 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 MlfMotionFilter
193
194} // namespace lidar
195} // namespace perception
196} // namespace apollo
void UpdateWithObject(const MlfFilterOptions &options, const MlfTrackDataConstPtr &track_data, TrackedObjectPtr new_object) override
Updating motion filter with object
void KalmanFilterUpdateWithPartialObservation(const MlfTrackDataConstPtr &track_data, const TrackedObjectConstPtr &latest_object, TrackedObjectPtr new_object)
Update state with kalman filter, constant acceleration motion model, only velocity measurement is obs...
void StateToBelief(TrackedObjectPtr object)
Synchronize state to belief to keep consistency
void ConvergenceEstimationAndBoostUp(const MlfTrackDataConstPtr &track_data, const TrackedObjectConstPtr &latest_object, TrackedObjectPtr new_object)
Estimate convergence confidence and boost up state
void UpdateConverged(const MlfTrackDataConstPtr &track_data, TrackedObjectPtr object)
Update convergence confidence
void UpdateWithoutObject(const MlfFilterOptions &options, double timestamp, MlfTrackDataPtr track_data) override
Updating motion filter without object
void ComputeConvergenceConfidence(const MlfTrackDataConstPtr &track_data, TrackedObjectPtr new_object, bool velocity_source_is_belief=true)
Compute convergence confidence
void StateGainAdjustment(const MlfTrackDataConstPtr &track_data, const TrackedObjectConstPtr &latest_object, const TrackedObjectConstPtr &new_object, Eigen::Vector4d *gain)
Adjust kalman state gain with several strategies
void BeliefToOutput(TrackedObjectPtr object)
Copy belief to output
void InitializeTrackState(TrackedObjectPtr new_object)
Initialize track state and store in the new object
std::shared_ptr< MlfMotionRefiner > motion_refiner_
void ClipingState(TrackedObjectPtr object)
Cliping state if is within noise level
bool Init(const MlfFilterInitOptions &options=MlfFilterInitOptions()) override
Init mlf fitler
std::shared_ptr< MlfMotionMeasurement > motion_measurer_
void BoostupState(const MlfTrackDataConstPtr &track_data, TrackedObjectPtr new_object)
Boost up state considering track history
void OnlineCovarianceEstimation(const MlfTrackDataConstPtr &track_data, TrackedObjectPtr object)
Estimate covariance considering history measurment
std::string Name() const override
Get class name
std::shared_ptr< const MlfTrackData > MlfTrackDataConstPtr
std::shared_ptr< const TrackedObject > TrackedObjectConstPtr
std::shared_ptr< MlfTrackData > MlfTrackDataPtr
std::shared_ptr< TrackedObject > TrackedObjectPtr
class register implement
Definition arena_queue.h:37