24size_t Sensor::kMaxCachedFrameNum = 10;
27 std::vector<SensorFramePtr>* frames) {
28 if (frames ==
nullptr) {
29 AERROR <<
"frames are not available";
34 for (
size_t i = 0; i < frames_.size(); ++i) {
35 if (frames_[i]->GetTimestamp() > latest_query_timestamp_ &&
36 frames_[i]->GetTimestamp() <= timestamp) {
37 frames->push_back(frames_[i]);
40 latest_query_timestamp_ = timestamp;
45 for (
size_t i = 0; i < frames_.size(); ++i) {
46 if (frames_[i]->GetTimestamp() > latest_query_timestamp_ &&
47 frames_[i]->GetTimestamp() <= timestamp) {
48 latest_frame = frames_[i];
49 latest_query_timestamp_ = frames_[i]->GetTimestamp();
56 if (pose ==
nullptr) {
57 AERROR <<
"pose is not available";
60 for (
int i =
static_cast<int>(frames_.size()) - 1; i >= 0; --i) {
61 double time_diff = timestamp - frames_[i]->GetTimestamp();
62 if (fabs(time_diff) < 1.0e-3) {
63 return frames_[i]->GetPose(pose);
67 AWARN <<
"Failed to find pose for timestamp: " << timestamp;
73 if (frames_.size() == kMaxCachedFrameNum) {
76 frames_.emplace_back(frame);
SensorFramePtr QueryLatestFrame(double timestamp)
query latest frame whose time stamp is in range (_latest_fused_time_stamp, time_stamp]
void QueryLatestFrames(double timestamp, std::vector< SensorFramePtr > *frames)
query frames whose time stamp is in range (_latest_fused_time_stamp, time_stamp]
bool GetPose(double timestamp, Eigen::Affine3d *pose) const
void AddFrame(const base::FrameConstPtr &frame_ptr)
std::shared_ptr< const Frame > FrameConstPtr
std::shared_ptr< SensorFrame > SensorFramePtr