Go to the documentation of this file.
17 #ifndef URG_STAMPED_DEVICE_STATE_ESTIMATOR_H
18 #define URG_STAMPED_DEVICE_STATE_ESTIMATOR_H
33 #include "gtest/gtest_prod.h"
37 namespace device_state_estimator
72 inline ClockState(
const ros::Time& origin,
const double gain,
const uint64_t stamp,
const bool initialized =
true)
82 return this->gain_ < b.
gain_;
102 ,
delay_((t_res - t_req) * 0.5)
123 inline OriginFracPart(
const double t_min,
const double t_max,
const bool valid =
true)
130 inline operator bool()
const
200 using Ptr = std::shared_ptr<ClockEstimator>;
206 const uint64_t device_wall_stamp) = 0;
209 virtual std::pair<ros::Duration, ros::Duration>
syncWaitDuration()
const = 0;
233 using Ptr = std::shared_ptr<ScanEstimator>;
247 const ros::Time& t_recv,
const uint64_t device_wall_stamp) = 0;
258 using Ptr = std::shared_ptr<Estimator>;
279 const uint64_t device_wall_stamp)
override;
286 return std::make_pair(
311 std::vector<SyncSampleUUST1>::const_iterator
findMinDelay(
328 const uint64_t device_wall_stamp)
override;
336 return std::make_pair(
362 return this->t_frac_ < b.
t_frac_;
381 const uint64_t device_wall_stamp)
final;
408 const uint64_t device_wall_stamp)
final;
422 #endif // URG_STAMPED_DEVICE_STATE_ESTIMATOR_H
static constexpr int MAX_SYNC_SAMPLES
SyncSampleUUST2(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp)
static constexpr size_t STAMP_SAMPLES
ScanEstimator(const ClockEstimator::Ptr clock_estim, const ros::Duration &ideal_scan_interval)
SyncSampleUUST1(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp)
std::deque< ros::Duration > stamp_to_sends_
std::shared_ptr< ScanEstimator > Ptr
ScanEstimatorUTM(const ClockEstimator::Ptr clock_estim, const ros::Duration &ideal_scan_interval)
std::deque< ClockSample > recent_clocks_
FRIEND_TEST(ScanEstimatorUTM, PushScanSampleRaw)
static constexpr size_t MAX_INTERVAL_SAMPLES
virtual std::pair< ros::Duration, ros::Duration > syncWaitDuration() const =0
ScanSampleUST(uint64_t stamp, int64_t interval)
ros::Duration delaySigma() const
std::vector< SyncSampleUUST1 > sync_samples_
bool operator<(const DurationWithOffset &b) const
std::shared_ptr< ClockEstimator > Ptr
Estimator(const ClockEstimator::Ptr clock, const ScanEstimator::Ptr scan)
bool finishSync() override
DurationWithOffset(const ros::Duration &value, const ros::Duration &offset)
int64_t primary_interval_
bool hasEnoughSyncSamples() const override
std::shared_ptr< Estimator > Ptr
ros::Time fit(const ros::Time &t) const
static constexpr int MAX_SYNC_ATTEMPTS
bool operator<(const ScanSampleUTM &b) const
CommDelay getCommDelay() const
uint64_t device_wall_stamp_
virtual bool finishSync()=0
ClockState getClockState() const
ClockState(const ros::Time &origin, const double gain, const uint64_t stamp, const bool initialized=true)
ClockEstimator::Ptr clock_estim_
ScanEstimatorUST(const ClockEstimator::Ptr clock_estim, const ros::Duration &ideal_scan_interval)
std::vector< SyncSampleUUST1 >::const_iterator findMinDelay(const OriginFracPart &overflow_range) const
OriginFracPart originFracOverflow() const
static constexpr double TOLERANCE
OriginFracPart(const double t_min, const double t_max, const bool valid=true)
bool operator<(const ClockState &b) const
std::deque< uint64_t > stamps_
ros::Duration ideal_scan_interval_
void pushSyncSample(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp) override
std::deque< ScanSampleUST > scans_
ros::Time compensate(const ros::Time &t) const
bool operator<(const SyncSampleUUST2 &b) const
static constexpr int MAX_DROPPED_SAMPLES
virtual bool hasEnoughSyncSamples() const =0
static constexpr size_t STAMP_TO_SEND_SAMPLES
FRIEND_TEST(ClockEstimatorUUST1, FindMinDelay)
void startSync() override
SyncSample(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp)
ros::Duration best_delay_
std::pair< ros::Duration, ros::Duration > syncWaitDuration() const override
bool pushClockSample(const ClockSample &clock)
ScanSampleUTM(const ros::Time &t, const ros::Duration &interval)
std::pair< ros::Duration, ros::Duration > syncWaitDuration() const override
std::pair< ros::Time, bool > estimateScanTime(const ros::Time &t_recv, const ros::Time &t_stamp)
bool isOnOverflow(const ros::Time &t) const
std::pair< ros::Time, bool > pushScanSample(const ros::Time &t_recv, const uint64_t device_wall_stamp) final
bool hasEnoughSyncSamples() const override
static constexpr int CLOCK_SAMPLES
static constexpr double ACCEPTABLE_SAMPLE_DELAY
static constexpr int MIN_SYNC_SAMPLES
ros::Duration min_stamp_to_send_
static constexpr size_t SCAN_SAMPLES
void startSync() override
virtual std::pair< ros::Time, bool > pushScanSample(const ros::Time &t_recv, const uint64_t device_wall_stamp)=0
virtual void pushSyncSample(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp)=0
ScanState getScanState() const
static constexpr size_t MIN_INTERVAL_SAMPLES
std::pair< ros::Time, bool > pushScanSample(const ros::Time &t_recv, const uint64_t device_wall_stamp) final
static constexpr double RESPONSE_TIMER_INTERVAL
void pushSyncSample(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp) override
bool finishSync() override
std::vector< SyncSampleUUST2 > sync_samples_
static constexpr int MIN_SYNC_SAMPLES
ros::Time stampToTime(const uint64_t stamp) const
virtual void startSync()=0
std::deque< ros::Time > recent_t_scans_
static constexpr double DEVICE_TIMESTAMP_RESOLUTION
ClockEstimator::Ptr clock_
urg_stamped
Author(s): Atsushi Watanabe
autogenerated on Wed Dec 18 2024 03:10:57