22 #include "Eigen/StdVector" 28 namespace perception {
38 : start_ind_(point2ds_size), end_ind_(point2ds_size) {
49 const bool Empty()
const {
return (start_ind_ == end_ind_); }
50 size_t Size()
const {
return (end_ind_ - start_ind_); }
65 : sensor_id_(sensor_id), timestamp_(timestamp) {}
66 bool VerifyKey(std::string sensor_id,
double timestamp) {
67 if (sensor_id_ != sensor_id || fabs(timestamp_ - timestamp) > DBL_EPSILON) {
74 return QueryObject(lidar_object_id);
77 auto it = objects_.find(lidar_object_id);
78 if (it == objects_.end()) {
87 std::string sensor_id_;
89 std::map<int, ProjectionCacheObject> objects_;
98 point2ds_.reserve(300000);
101 : measurement_sensor_id_(sensor_id), measurement_timestamp_(timestamp) {
104 point2ds_.reserve(300000);
107 void Reset(std::string sensor_id,
double timestamp) {
108 measurement_sensor_id_ = sensor_id;
109 measurement_timestamp_ = timestamp;
115 if (ind >= point2ds_.size()) {
118 return &(point2ds_[ind]);
123 point2ds_.emplace_back(pt.x(), pt.y());
127 double measurement_timestamp,
128 const std::string& projection_sensor_id,
129 double projection_timestamp,
130 int lidar_object_id) {
131 if (!VerifyKey(measurement_sensor_id, measurement_timestamp)) {
135 QueryFrame(projection_sensor_id, projection_timestamp);
136 if (frame ==
nullptr) {
137 frame = BuildFrame(projection_sensor_id, projection_timestamp);
139 if (frame ==
nullptr) {
146 double measurement_timestamp,
147 const std::string& projection_sensor_id,
148 double projection_timestamp,
149 int lidar_object_id) {
150 if (!VerifyKey(measurement_sensor_id, measurement_timestamp)) {
154 QueryFrame(projection_sensor_id, projection_timestamp);
155 if (frame ==
nullptr) {
162 bool VerifyKey(
const std::string& sensor_id,
double timestamp) {
163 if (measurement_sensor_id_ != sensor_id ||
164 fabs(measurement_timestamp_ - timestamp) > DBL_EPSILON) {
172 return &(frames_[frames_.size() - 1]);
176 for (
size_t i = 0; i < frames_.size(); ++i) {
177 if (!frames_[i].VerifyKey(sensor_id, timestamp)) {
180 return &(frames_[i]);
187 std::string measurement_sensor_id_;
188 double measurement_timestamp_;
190 std::vector<Eigen::Vector2d> point2ds_;
192 std::vector<ProjectionCacheFrame> frames_;
ProjectionCacheObject * QueryObject(const std::string &measurement_sensor_id, double measurement_timestamp, const std::string &projection_sensor_id, double projection_timestamp, int lidar_object_id)
Definition: projection_cache.h:145
void Reset(std::string sensor_id, double timestamp)
Definition: projection_cache.h:107
ProjectionCacheObject * BuildObject(const std::string &measurement_sensor_id, double measurement_timestamp, const std::string &projection_sensor_id, double projection_timestamp, int lidar_object_id)
Definition: projection_cache.h:126
bool VerifyKey(std::string sensor_id, double timestamp)
Definition: projection_cache.h:66
ProjectionCache()
Definition: projection_cache.h:95
size_t Size() const
Definition: projection_cache.h:50
BBox2D< float > BBox2DF
Definition: box.h:164
Definition: projection_cache.h:32
ProjectionCache * ProjectionCachePtr
Definition: projection_cache.h:195
ProjectionCacheFrame(std::string sensor_id, double timestamp)
Definition: projection_cache.h:64
EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(Eigen::Vector2d)
Definition: projection_cache.h:93
ProjectionCacheObject * QueryObject(int lidar_object_id)
Definition: projection_cache.h:76
ProjectionCache(std::string sensor_id, double timestamp)
Definition: projection_cache.h:100
void AddPoint(const Eigen::Vector2f &pt)
Definition: projection_cache.h:122
void SetEndInd(size_t ind)
Definition: projection_cache.h:47
void SetBox(base::BBox2DF box)
Definition: projection_cache.h:48
base::BBox2DF GetBox() const
Definition: projection_cache.h:44
ProjectionCacheFrame()
Definition: projection_cache.h:63
void SetStartInd(size_t ind)
Definition: projection_cache.h:46
ProjectionCacheObject()
Definition: projection_cache.h:34
const bool Empty() const
Definition: projection_cache.h:49
size_t GetStartInd() const
Definition: projection_cache.h:42
size_t GetPoint2dsSize() const
Definition: projection_cache.h:120
Definition: projection_cache.h:61
ProjectionCacheObject * BuildObject(int lidar_object_id)
Definition: projection_cache.h:72
size_t GetEndInd() const
Definition: projection_cache.h:43
Eigen::Vector2d * GetPoint2d(size_t ind)
Definition: projection_cache.h:114
ProjectionCacheObject(size_t point2ds_size)
Definition: projection_cache.h:37