49 double timestamp = obj->object_ptr->latest_tracked_time;
51 auto pair = std::make_pair(timestamp, obj);
77 AINFO <<
"Push object timestamp " << timestamp <<
" from sensor "
78 << obj->sensor_info.name <<
" already exist in track, ignore push.";
83 double timestamp = obj->object_ptr->latest_tracked_time;
88 AINFO <<
"Push object timestamp " << timestamp <<
" from sensor "
89 << obj->sensor_info.name <<
" already exist in cache, ignore push.";
99 const double latest_time = latest_iter->first;
100 const auto& latest_object = latest_iter->second;
101 latest_object->ToObject(
object);
103 double time_diff = timestamp - latest_time;
104 double offset_x = time_diff *
object->velocity(0) + local_to_global_offset(0);
105 double offset_y = time_diff *
object->velocity(1) + local_to_global_offset(1);
106 double offset_z = time_diff *
object->velocity(2) + local_to_global_offset(2);
108 for (
auto& pt :
object->polygon) {
115 object->center(0) += offset_x;
116 object->center(1) += offset_y;
117 object->center(2) += offset_z;
119 object->anchor_point(0) += offset_x;
120 object->anchor_point(1) += offset_y;
121 object->anchor_point(2) += offset_z;
123 object->tracking_time += time_diff;
125 object->latest_tracked_time += time_diff;
127 for (
auto& pt :
object->radar4d_supplement.cloud_world) {
140 const double latest_time = latest_iter->first;
141 const auto& latest_object = latest_iter->second;
142 double time_diff = timestamp - latest_time;
144 const Eigen::Vector3d& latest_anchor_point =
145 latest_object->belief_anchor_point;
146 const Eigen::Vector3d& latest_velocity = latest_object->output_velocity;
149 predict_.
state(0) =
static_cast<float>(latest_anchor_point(0) +
150 latest_velocity(0) * time_diff);
151 predict_.
state(1) =
static_cast<float>(latest_anchor_point(1) +
152 latest_velocity(1) * time_diff);
153 predict_.
state(2) =
static_cast<float>(latest_anchor_point(2) +
154 latest_velocity(2) * time_diff);
164 std::vector<TrackedObjectPtr>* objects) {
168 const auto& timestamp = iter->first;
172 objects->push_back(iter->second);
181 std::map<double, TrackedObjectPtr>* data) {
182 auto iter = data->begin();
183 while (iter != data->end()) {
184 if (iter->first < timestamp) {
bool is_current_state_predicted_
void Reset() override
Reset
void PredictState(double timestamp) const
Predict state
double latest_cached_time_
static const double kMaxHistoryTime
void PushTrackedObjectToCache(TrackedObjectPtr obj)
Push tracked object to cache
void RemoveStaleHistory(double timestamp)
Remove stale history data
void PushTrackedObjectToTrack(TrackedObjectPtr obj)
Push tracked object to track
TimedObjects cached_objects_
bool ToObject(const Eigen::Vector3d &local_to_global_offset, double timestamp, base::ObjectPtr object) const
Convert tracked object to base object
void GetAndCleanCachedObjectsInTimeInterval(std::vector< TrackedObjectPtr > *objects)
Get and clean cached objects in time interval
std::map< std::string, TimedObjects > sensor_history_objects_
double consecutive_invisible_time_
double first_tracked_time_
double latest_visible_time_
std::map< double, TrackedObjectPtr > history_objects_
virtual void Reset()
Reset
int consecutive_invisible_count_
std::shared_ptr< Object > ObjectPtr
void RemoveStaleDataFromMap(double timestamp, std::map< double, TrackedObjectPtr > *data)
std::shared_ptr< TrackedObject > TrackedObjectPtr
void Reset()
Reset all data