Apollo 11.0
自动驾驶开放平台
mlf_motion_refiner.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 <string>
19
20#include "modules/perception/lidar_tracking/tracker/multi_lidar_fusion/proto/multi_lidar_fusion_config.pb.h"
21
24
26
27namespace apollo {
28namespace perception {
29namespace lidar {
30
32
34
36 public:
37 MlfMotionRefiner() = default;
38 ~MlfMotionRefiner() = default;
39
47 bool Init(const MlfMotionRefinerInitOptions& options =
49
58 bool Refine(const MlfTrackDataConstPtr& track_data,
59 TrackedObjectPtr new_object);
65 std::string Name() const { return "MlfMotionRefiner"; }
66
67 protected:
77 const TrackedObjectConstPtr& latest_object,
78 const TrackedObjectConstPtr& new_object) const;
79
91 const TrackedObjectConstPtr& latest_object,
92 const TrackedObjectConstPtr& new_object,
93 double reasonable_angle_change_maximum) const;
94
96 const TrackedObjectConstPtr& latest_object,
97 const TrackedObjectConstPtr& new_object,
98 double* vel_change_angle,
99 double* velocity_heading_angle) const;
100
102 const TrackedObjectConstPtr& latest_object,
103 const TrackedObjectConstPtr& new_object) const;
104
105 protected:
108 double cyc_refine_speed_ = 1.2;
109 double car_refine_speed_ = 1.0;
110 const double EPSION_TIME = 1e-3;
112}; // class MlfMotionRefiner
113
114} // namespace lidar
115} // namespace perception
116} // namespace apollo
bool CheckStaticHypothesisByState(const TrackedObjectConstPtr &latest_object, const TrackedObjectConstPtr &new_object) const
Check whether new observed object is static or not
bool Init(const MlfMotionRefinerInitOptions &options=MlfMotionRefinerInitOptions())
Init motion refiner
bool Refine(const MlfTrackDataConstPtr &track_data, TrackedObjectPtr new_object)
Refine velocity of new object
std::string Name() const
Get class name
bool NeedAssignMovableObjectSpeed(const TrackedObjectConstPtr &latest_object, const TrackedObjectConstPtr &new_object) const
bool CheckStaticHypothesisByVelocityAngleChange(const TrackedObjectConstPtr &latest_object, const TrackedObjectConstPtr &new_object, double reasonable_angle_change_maximum) const
Check whether new observed object is static or not via considering the angle velocity change
bool CalculateVelocityAngleChange(const TrackedObjectConstPtr &latest_object, const TrackedObjectConstPtr &new_object, double *vel_change_angle, double *velocity_heading_angle) const
std::shared_ptr< const MlfTrackData > MlfTrackDataConstPtr
std::shared_ptr< const TrackedObject > TrackedObjectConstPtr
std::shared_ptr< TrackedObject > TrackedObjectPtr
class register implement
Definition arena_queue.h:37