26using ObjectPtr = std::shared_ptr<apollo::perception::base::Object>;
29 const std::vector<ObjectPtr>& objects, TimeStampKey timestamp) {
30 std::lock_guard<std::mutex> lock(
mutex_);
31 for (
const auto& obj : objects) {
38 auto res = iter->second.insert(std::make_pair(timestamp, obj));
40 AERROR <<
"Fail to insert object." << std::endl;
52 if (track ==
nullptr) {
56 std::lock_guard<std::mutex> lock(
mutex_);
57 double start_time =
current_ - window_time;
62 for (
auto& tobj : iter->second) {
63 if (tobj.first >= start_time) {
72 if (outer_iter->second.empty()) {
73 AERROR <<
"Found empty tracks";
76 auto& track = outer_iter->second;
78 if (current_stamp - track.rbegin()->first >
kMaxTimeOut) {
82 for (
auto inner_iter = track.begin(); inner_iter != track.end();) {
83 if (current_stamp - inner_iter->first >
kMaxTimeOut) {
84 track.erase(inner_iter++);
bool AddTrackedFrameObjects(const std::vector< std::shared_ptr< perception::base::Object > > &objects, TimeStampKey timestamp)
static constexpr TimeStampKey kMaxTimeOut
std::map< TimeStampKey, std::shared_ptr< apollo::perception::base::Object > > TrackedObjects
bool GetTrackInTemporalWindow(TrackIdKey track_id, TrackedObjects *track, TimeStampKey window_time)
void RemoveStaleTracks(TimeStampKey current_stamp)
std::map< TrackIdKey, TrackedObjects > sequence_
std::shared_ptr< apollo::perception::base::Object > ObjectPtr