25 namespace perception {
28 template <
typename ObjectKey>
31 template <
typename ObjectKey>
36 bool add_data(
const std::vector<ObjectPtr>& objects, ObjectKey key);
44 static const std::size_t _s_max_sample_num = 10;
45 static constexpr
double _s_max_lift_time = 10.0;
48 template <
typename ObjectKey>
50 const std::vector<ObjectPtr>& objects, ObjectKey key) {
51 for (
const auto& obj : objects) {
52 auto&
id = obj->track_id;
54 std::cerr <<
"Find track_id roll back, so clear the cache sequence, " 55 <<
"current id " <<
id <<
" oldest id " 56 <<
_sequence.begin()->first <<
"." << std::endl;
60 if (sub.size() > 0 && sub.rbegin()->first >= key) {
67 auto iter = sub.begin();
68 while (sub.size() > _s_max_sample_num) {
74 if (iter->second.empty() ||
75 static_cast<double>(key - iter->second.rbegin()->first) >
85 template <
typename ObjectKey>
92 return &(iter->second);
void clear()
Definition: sequence_maintainer.h:38
~SequenceMaintainer()=default
std::map< int, SequenceType< ObjectKey > > _sequence
Definition: sequence_maintainer.h:41
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
SequenceMaintainer()=default
auto get_sequence(int sequence_id) -> SequenceType< ObjectKey > *
Definition: sequence_maintainer.h:86
std::map< ObjectKey, ObjectPtr > SequenceType
Definition: sequence_maintainer.h:29
Definition: sequence_maintainer.h:32
bool add_data(const std::vector< ObjectPtr > &objects, ObjectKey key)
Definition: sequence_maintainer.h:49