30 namespace device_state_estimator
39 return std::pair<ros::Time, bool>(t_stamp,
true);
42 stamps_.push_back(device_wall_stamp);
45 return std::pair<ros::Time, bool>(t_stamp,
true);
49 const int64_t interval = device_wall_stamp -
stamps_[
stamps_.size() - 2];
51 std::vector<int64_t> intervals;
52 for (
size_t i = 1; i <
stamps_.size(); ++i)
55 intervals.push_back(interval);
57 std::sort(intervals.begin(), intervals.end());
61 if (-1 <= interval_diff && interval_diff <= 1)
63 scans_.emplace_front(device_wall_stamp, interval);
71 auto it_change0 =
scans_.end();
72 auto it_change1 =
scans_.end();
73 for (; it !=
scans_.end(); it++)
81 if (it_change0 !=
scans_.end())
84 size_t num_samples = 0;
85 for (it++; it !=
scans_.end(); it++)
99 if (it_change1 !=
scans_.end())
102 if (it_change0 !=
scans_.end() && it_change1 !=
scans_.end())
104 const int64_t stamp_diff = it_change0->stamp_ - it_change1->stamp_;
105 const double ideal_scan_interval_cnt =
107 const int num_scans = std::lround(
static_cast<double>(stamp_diff) / ideal_scan_interval_cnt);
132 return std::pair<ros::Time, bool>(t_stamp,
true);
141 return std::pair<ros::Time, bool>(t_estimated, valid);