26 namespace perception {
36 : start_ind_(point2ds_size), end_ind_(point2ds_size) {
47 const bool Empty()
const {
return (start_ind_ == end_ind_); }
48 size_t Size()
const {
return (end_ind_ - start_ind_); }
63 : sensor_id_(sensor_id), timestamp_(timestamp) {}
64 bool VerifyKey(std::string sensor_id,
double timestamp) {
65 return sensor_id_ == sensor_id &&
70 return QueryObject(lidar_object_id);
73 auto it = objects_.find(lidar_object_id);
74 if (it == objects_.end()) {
83 std::string sensor_id_;
85 std::map<int, ProjectionCacheObject> objects_;
94 point2ds_.reserve(300000);
97 : measurement_sensor_id_(sensor_id), measurement_timestamp_(timestamp) {
100 point2ds_.reserve(300000);
103 void Reset(std::string sensor_id,
double timestamp) {
104 measurement_sensor_id_ = sensor_id;
105 measurement_timestamp_ = timestamp;
111 if (ind >= point2ds_.size()) {
114 return &(point2ds_[ind]);
119 point2ds_.emplace_back(pt.x(), pt.y());
123 double measurement_timestamp,
124 const std::string& projection_sensor_id,
125 double projection_timestamp,
126 int lidar_object_id) {
127 if (!VerifyKey(measurement_sensor_id, measurement_timestamp)) {
131 QueryFrame(projection_sensor_id, projection_timestamp);
132 if (frame ==
nullptr) {
133 frame = BuildFrame(projection_sensor_id, projection_timestamp);
135 if (frame ==
nullptr) {
142 double measurement_timestamp,
143 const std::string& projection_sensor_id,
144 double projection_timestamp,
145 int lidar_object_id) {
146 if (!VerifyKey(measurement_sensor_id, measurement_timestamp)) {
150 QueryFrame(projection_sensor_id, projection_timestamp);
151 if (frame ==
nullptr) {
158 bool VerifyKey(
const std::string& sensor_id,
double timestamp) {
159 return measurement_sensor_id_ == sensor_id &&
166 return &(frames_[frames_.size() - 1]);
170 for (
size_t i = 0; i < frames_.size(); ++i) {
171 if (!frames_[i].VerifyKey(sensor_id, timestamp)) {
174 return &(frames_[i]);
181 std::string measurement_sensor_id_;
182 double measurement_timestamp_;
184 std::vector<Eigen::Vector2d> point2ds_;
186 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:141
void Reset(std::string sensor_id, double timestamp)
Definition: projection_cache.h:103
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:122
bool VerifyKey(std::string sensor_id, double timestamp)
Definition: projection_cache.h:64
ProjectionCache()
Definition: projection_cache.h:91
size_t Size() const
Definition: projection_cache.h:48
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
BBox2D< float > BBox2DF
Definition: box.h:164
Definition: projection_cache.h:30
Eigen::Vector2d Vector2d
Definition: base_map_fwd.h:36
ProjectionCache * ProjectionCachePtr
Definition: projection_cache.h:189
ProjectionCacheFrame(std::string sensor_id, double timestamp)
Definition: projection_cache.h:62
Definition: projection_cache.h:89
ProjectionCacheObject * QueryObject(int lidar_object_id)
Definition: projection_cache.h:72
ProjectionCache(std::string sensor_id, double timestamp)
Definition: projection_cache.h:96
void AddPoint(const Eigen::Vector2f &pt)
Definition: projection_cache.h:118
void SetEndInd(size_t ind)
Definition: projection_cache.h:45
void SetBox(base::BBox2DF box)
Definition: projection_cache.h:46
base::BBox2DF GetBox() const
Definition: projection_cache.h:42
ProjectionCacheFrame()
Definition: projection_cache.h:61
void SetStartInd(size_t ind)
Definition: projection_cache.h:44
ProjectionCacheObject()
Definition: projection_cache.h:32
Math-related util functions.
Eigen::Vector2f Vector2f
Definition: base_map_fwd.h:30
const bool Empty() const
Definition: projection_cache.h:47
std::enable_if<!std::numeric_limits< T >::is_integer, bool >::type almost_equal(T x, T y, int ulp)
Definition: math_utils.h:211
size_t GetStartInd() const
Definition: projection_cache.h:40
size_t GetPoint2dsSize() const
Definition: projection_cache.h:116
Definition: projection_cache.h:59
ProjectionCacheObject * BuildObject(int lidar_object_id)
Definition: projection_cache.h:68
size_t GetEndInd() const
Definition: projection_cache.h:41
Eigen::Vector2d * GetPoint2d(size_t ind)
Definition: projection_cache.h:110
ProjectionCacheObject(size_t point2ds_size)
Definition: projection_cache.h:35