device_state_estimator.h
Go to the documentation of this file.
1 /*
2  * Copyright 2024 The urg_stamped Authors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef URG_STAMPED_DEVICE_STATE_ESTIMATOR_H
18 #define URG_STAMPED_DEVICE_STATE_ESTIMATOR_H
19 
20 #include <algorithm>
21 #include <cmath>
22 #include <cstdint>
23 #include <deque>
24 #include <memory>
25 #include <utility>
26 #include <vector>
27 
28 #include <string>
29 #include <fstream>
30 
31 #include <ros/time.h>
32 
33 #include "gtest/gtest_prod.h"
34 
35 namespace urg_stamped
36 {
37 namespace device_state_estimator
38 {
39 
40 static constexpr double DEVICE_TIMESTAMP_RESOLUTION = 0.001;
41 
42 class CommDelay
43 {
44 public:
47 };
48 
50 {
51 public:
53  uint64_t stamp_;
55 };
56 
58 {
59 public:
61  double gain_;
62  uint64_t stamp_;
64 
65  inline ClockState()
66  : gain_(1.0)
67  , stamp_(0)
68  , initialized_(false)
69  {
70  }
71 
72  inline ClockState(const ros::Time& origin, const double gain, const uint64_t stamp, const bool initialized = true)
73  : origin_(origin)
74  , gain_(gain)
75  , stamp_(stamp)
76  , initialized_(initialized)
77  {
78  }
79 
80  inline bool operator<(const ClockState& b) const
81  {
82  return this->gain_ < b.gain_;
83  }
84 
85  ros::Time stampToTime(const uint64_t stamp) const;
86 };
87 
89 {
90 public:
94 
97 
98  inline SyncSample(const ros::Time& t_req, const ros::Time& t_res, const uint64_t device_wall_stamp)
99  : t_req_(t_req)
100  , t_res_(t_res)
101  , device_wall_stamp_(device_wall_stamp)
102  , delay_((t_res - t_req) * 0.5)
104  {
105  }
106 };
107 
109 {
110 public:
111  const bool valid_;
112  const double t_min_;
113  const double t_max_;
114  static constexpr double TOLERANCE = 1e-4;
115 
116  inline OriginFracPart()
117  : valid_(false)
118  , t_min_(-1)
119  , t_max_(-1)
120  {
121  }
122 
123  inline OriginFracPart(const double t_min, const double t_max, const bool valid = true)
124  : valid_(valid)
125  , t_min_(t_min)
126  , t_max_(t_max)
127  {
128  }
129 
130  inline operator bool() const
131  {
132  return valid_;
133  }
134 
135  bool isOnOverflow(const ros::Time& t) const;
136  ros::Time compensate(const ros::Time& t) const;
137 };
138 
140 {
141 public:
144 
145  inline ScanSampleUTM(const ros::Time& t, const ros::Duration& interval)
146  : t_(t)
147  , interval_(interval)
148  {
149  }
150 
151  inline bool operator<(const ScanSampleUTM& b) const
152  {
153  return this->interval_ < b.interval_;
154  }
155 };
156 
158 {
159 public:
160  uint64_t stamp_;
161  int64_t interval_;
162 
163  inline ScanSampleUST(uint64_t stamp, int64_t interval)
164  : stamp_(stamp)
165  , interval_(interval)
166  {
167  }
168 };
169 
171 {
172 public:
175 
176  ros::Time fit(const ros::Time& t) const;
177 };
178 
180 {
181 public:
184 
185  inline DurationWithOffset(const ros::Duration& value, const ros::Duration& offset)
186  : value_(value)
187  , offset_(offset)
188  {
189  }
190 
191  inline bool operator<(const DurationWithOffset& b) const
192  {
193  return this->value_ + this->offset_ < b.value_ + b.offset_;
194  }
195 };
196 
198 {
199 public:
200  using Ptr = std::shared_ptr<ClockEstimator>;
201 
202  virtual void startSync() = 0;
203  virtual void pushSyncSample(
204  const ros::Time& t_req,
205  const ros::Time& t_res,
206  const uint64_t device_wall_stamp) = 0;
207  virtual bool hasEnoughSyncSamples() const = 0;
208  virtual bool finishSync() = 0;
209  virtual std::pair<ros::Duration, ros::Duration> syncWaitDuration() const = 0;
210 
211  inline ClockState getClockState() const
212  {
213  return clock_;
214  }
215  inline CommDelay getCommDelay() const
216  {
217  return comm_delay_;
218  }
219 
220 protected:
221  static constexpr int CLOCK_SAMPLES = 7;
222 
225  std::deque<ClockSample> recent_clocks_;
226 
227  bool pushClockSample(const ClockSample& clock);
228 };
229 
231 {
232 public:
233  using Ptr = std::shared_ptr<ScanEstimator>;
234 
235  inline ScanEstimator(const ClockEstimator::Ptr clock_estim, const ros::Duration& ideal_scan_interval)
236  : clock_estim_(clock_estim)
237  , ideal_scan_interval_(ideal_scan_interval)
238  {
239  }
240 
241  inline ScanState getScanState() const
242  {
243  return scan_;
244  }
245 
246  virtual std::pair<ros::Time, bool> pushScanSample(
247  const ros::Time& t_recv, const uint64_t device_wall_stamp) = 0;
248 
249 protected:
253 };
254 
256 {
257 public:
258  using Ptr = std::shared_ptr<Estimator>;
259 
260  inline Estimator(
261  const ClockEstimator::Ptr clock,
262  const ScanEstimator::Ptr scan)
263  : clock_(clock)
264  , scan_(scan)
265  {
266  }
267 
270 };
271 
273 {
274 public:
275  void startSync() override;
276  void pushSyncSample(
277  const ros::Time& t_req,
278  const ros::Time& t_res,
279  const uint64_t device_wall_stamp) override;
280  bool hasEnoughSyncSamples() const override;
281  bool finishSync() override;
282 
283  inline std::pair<ros::Duration, ros::Duration> syncWaitDuration() const override
284  {
285  // UST doesn't respond immediately when next TM1 command is sent without sleep
286  return std::make_pair(
287  ros::Duration(0),
289  }
290 
291 private:
292  static constexpr int MIN_SYNC_SAMPLES = 10;
293  static constexpr int MAX_SYNC_SAMPLES = 50;
294  static constexpr int MAX_DROPPED_SAMPLES = 100;
295 
297  {
298  public:
300 
301  inline SyncSampleUUST1(const ros::Time& t_req, const ros::Time& t_res, const uint64_t device_wall_stamp)
302  : SyncSample(t_req, t_res, device_wall_stamp)
304  {
305  }
306  };
307 
308  std::vector<SyncSampleUUST1> sync_samples_;
310 
311  std::vector<SyncSampleUUST1>::const_iterator findMinDelay(
312  const OriginFracPart& overflow_range) const;
314  ros::Duration delaySigma() const;
315 
316  FRIEND_TEST(ClockEstimatorUUST1, FindMinDelay);
317  FRIEND_TEST(ClockEstimatorUUST1, RawClockOrigin);
318  FRIEND_TEST(ClockEstimatorUUST1, ClockGain);
319 };
320 
322 {
323 public:
324  void startSync() override;
325  void pushSyncSample(
326  const ros::Time& t_req,
327  const ros::Time& t_res,
328  const uint64_t device_wall_stamp) override;
329  bool hasEnoughSyncSamples() const override;
330  bool finishSync() override;
331 
332  inline std::pair<ros::Duration, ros::Duration> syncWaitDuration() const override
333  {
334  // UUST2 handles requests by 5ms timer.
335  // It requires one extra cycle before sending next request to get immediate response.
336  return std::make_pair(
337  ros::Duration(0.007),
338  ros::Duration(0.010));
339  }
340 
341 private:
342  static constexpr int MIN_SYNC_SAMPLES = 5;
343  static constexpr int MAX_SYNC_ATTEMPTS = 50;
344  static constexpr double RESPONSE_TIMER_INTERVAL = 0.005;
345  static constexpr double ACCEPTABLE_SAMPLE_DELAY = 0.002;
346 
348  {
349  public:
352 
353  inline SyncSampleUUST2(const ros::Time& t_req, const ros::Time& t_res, const uint64_t device_wall_stamp)
354  : SyncSample(t_req, t_res, device_wall_stamp)
356  , t_frac_(std::fmod(t_res.toSec(), RESPONSE_TIMER_INTERVAL))
357  {
358  }
359 
360  inline bool operator<(const SyncSampleUUST2& b) const
361  {
362  return this->t_frac_ < b.t_frac_;
363  }
364  };
365 
366  std::vector<SyncSampleUUST2> sync_samples_;
369 };
370 
372 {
373 public:
374  inline ScanEstimatorUTM(const ClockEstimator::Ptr clock_estim, const ros::Duration& ideal_scan_interval)
375  : ScanEstimator(clock_estim, ideal_scan_interval)
376  {
377  }
378 
379  std::pair<ros::Time, bool> pushScanSample(
380  const ros::Time& t_recv,
381  const uint64_t device_wall_stamp) final;
382 
383 private:
384  static constexpr size_t SCAN_SAMPLES = 16;
385  static constexpr size_t STAMP_TO_SEND_SAMPLES = 32;
386 
388  std::deque<ros::Time> recent_t_scans_;
389  std::deque<ros::Duration> stamp_to_sends_;
390 
391  std::pair<ros::Time, bool> estimateScanTime(
392  const ros::Time& t_recv, const ros::Time& t_stamp);
393 
394  FRIEND_TEST(ScanEstimatorUTM, PushScanSampleRaw);
395 };
396 
398 {
399 public:
400  inline ScanEstimatorUST(const ClockEstimator::Ptr clock_estim, const ros::Duration& ideal_scan_interval)
401  : ScanEstimator(clock_estim, ideal_scan_interval)
402  , primary_interval_(0)
403  {
404  }
405 
406  std::pair<ros::Time, bool> pushScanSample(
407  const ros::Time& t_recv,
408  const uint64_t device_wall_stamp) final;
409 
410 private:
411  static constexpr size_t STAMP_SAMPLES = 8;
412  static constexpr size_t MAX_INTERVAL_SAMPLES = 2048;
413  static constexpr size_t MIN_INTERVAL_SAMPLES = 10;
414  std::deque<uint64_t> stamps_;
415  std::deque<ScanSampleUST> scans_;
417 };
418 
419 } // namespace device_state_estimator
420 } // namespace urg_stamped
421 
422 #endif // URG_STAMPED_DEVICE_STATE_ESTIMATOR_H
urg_stamped::device_state_estimator::ScanState::interval_
ros::Duration interval_
Definition: device_state_estimator.h:174
urg_stamped::device_state_estimator::ClockEstimatorUUST1::cnt_dropped_samples_
int cnt_dropped_samples_
Definition: device_state_estimator.h:309
urg_stamped::device_state_estimator::ClockSample::origin_
ros::Time origin_
Definition: device_state_estimator.h:54
urg_stamped::device_state_estimator::ClockEstimatorUUST1::MAX_SYNC_SAMPLES
static constexpr int MAX_SYNC_SAMPLES
Definition: device_state_estimator.h:293
urg_stamped::device_state_estimator::ClockEstimatorUUST2::SyncSampleUUST2::SyncSampleUUST2
SyncSampleUUST2(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp)
Definition: device_state_estimator.h:353
urg_stamped::device_state_estimator::ScanEstimatorUST::STAMP_SAMPLES
static constexpr size_t STAMP_SAMPLES
Definition: device_state_estimator.h:411
urg_stamped::device_state_estimator::ScanEstimator::ScanEstimator
ScanEstimator(const ClockEstimator::Ptr clock_estim, const ros::Duration &ideal_scan_interval)
Definition: device_state_estimator.h:235
urg_stamped::device_state_estimator::ClockEstimatorUUST1::SyncSampleUUST1::SyncSampleUUST1
SyncSampleUUST1(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp)
Definition: device_state_estimator.h:301
urg_stamped::device_state_estimator::ScanEstimatorUTM::stamp_to_sends_
std::deque< ros::Duration > stamp_to_sends_
Definition: device_state_estimator.h:389
urg_stamped::device_state_estimator::ScanSampleUTM::interval_
ros::Duration interval_
Definition: device_state_estimator.h:143
urg_stamped::device_state_estimator::ScanEstimator::Ptr
std::shared_ptr< ScanEstimator > Ptr
Definition: device_state_estimator.h:233
urg_stamped::device_state_estimator::ScanEstimatorUTM::ScanEstimatorUTM
ScanEstimatorUTM(const ClockEstimator::Ptr clock_estim, const ros::Duration &ideal_scan_interval)
Definition: device_state_estimator.h:374
urg_stamped::device_state_estimator::ClockState::stamp_
uint64_t stamp_
Definition: device_state_estimator.h:62
urg_stamped::device_state_estimator::ClockEstimator::recent_clocks_
std::deque< ClockSample > recent_clocks_
Definition: device_state_estimator.h:225
urg_stamped::device_state_estimator::ClockEstimator::comm_delay_
CommDelay comm_delay_
Definition: device_state_estimator.h:224
urg_stamped::device_state_estimator::ScanEstimatorUTM::FRIEND_TEST
FRIEND_TEST(ScanEstimatorUTM, PushScanSampleRaw)
urg_stamped::device_state_estimator::ScanEstimatorUST::MAX_INTERVAL_SAMPLES
static constexpr size_t MAX_INTERVAL_SAMPLES
Definition: device_state_estimator.h:412
urg_stamped::device_state_estimator::Estimator::scan_
ScanEstimator::Ptr scan_
Definition: device_state_estimator.h:269
urg_stamped::device_state_estimator::ClockEstimator::syncWaitDuration
virtual std::pair< ros::Duration, ros::Duration > syncWaitDuration() const =0
ros
urg_stamped::device_state_estimator::ClockSample
Definition: device_state_estimator.h:49
urg_stamped::device_state_estimator::ClockState::origin_
ros::Time origin_
Definition: device_state_estimator.h:60
time.h
urg_stamped::device_state_estimator::ClockEstimatorUUST2::SyncSampleUUST2::t_frac_
ros::Duration t_frac_
Definition: device_state_estimator.h:351
urg_stamped::device_state_estimator::OriginFracPart
Definition: device_state_estimator.h:108
urg_stamped::device_state_estimator::ScanSampleUST::stamp_
uint64_t stamp_
Definition: device_state_estimator.h:160
urg_stamped::device_state_estimator::ClockEstimatorUUST2::cnt_samples_
int cnt_samples_
Definition: device_state_estimator.h:368
urg_stamped::device_state_estimator::ScanSampleUST::interval_
int64_t interval_
Definition: device_state_estimator.h:161
urg_stamped::device_state_estimator::ScanSampleUST::ScanSampleUST
ScanSampleUST(uint64_t stamp, int64_t interval)
Definition: device_state_estimator.h:163
urg_stamped::device_state_estimator::ClockEstimatorUUST1::delaySigma
ros::Duration delaySigma() const
Definition: clock_estimator_uust1.cpp:190
urg_stamped::device_state_estimator::ClockEstimatorUUST1::sync_samples_
std::vector< SyncSampleUUST1 > sync_samples_
Definition: device_state_estimator.h:308
urg_stamped::device_state_estimator::DurationWithOffset::operator<
bool operator<(const DurationWithOffset &b) const
Definition: device_state_estimator.h:191
urg_stamped::device_state_estimator::ScanEstimator::scan_
ScanState scan_
Definition: device_state_estimator.h:251
urg_stamped::device_state_estimator::ClockEstimator::Ptr
std::shared_ptr< ClockEstimator > Ptr
Definition: device_state_estimator.h:200
urg_stamped::device_state_estimator::Estimator::Estimator
Estimator(const ClockEstimator::Ptr clock, const ScanEstimator::Ptr scan)
Definition: device_state_estimator.h:260
urg_stamped::device_state_estimator::ClockEstimatorUUST1::finishSync
bool finishSync() override
Definition: clock_estimator_uust1.cpp:73
urg_stamped::device_state_estimator::ClockState::gain_
double gain_
Definition: device_state_estimator.h:61
urg_stamped::device_state_estimator::DurationWithOffset::DurationWithOffset
DurationWithOffset(const ros::Duration &value, const ros::Duration &offset)
Definition: device_state_estimator.h:185
urg_stamped::device_state_estimator::ClockState::ClockState
ClockState()
Definition: device_state_estimator.h:65
urg_stamped::device_state_estimator::ScanEstimatorUST::primary_interval_
int64_t primary_interval_
Definition: device_state_estimator.h:416
urg_stamped::device_state_estimator::CommDelay
Definition: device_state_estimator.h:42
urg_stamped::device_state_estimator::ClockEstimatorUUST1::SyncSampleUUST1::t_origin_
ros::Time t_origin_
Definition: device_state_estimator.h:299
urg_stamped::device_state_estimator::ClockEstimatorUUST2::hasEnoughSyncSamples
bool hasEnoughSyncSamples() const override
Definition: clock_estimator_uust2.cpp:59
urg_stamped::device_state_estimator::Estimator::Ptr
std::shared_ptr< Estimator > Ptr
Definition: device_state_estimator.h:258
urg_stamped::device_state_estimator::ScanState::fit
ros::Time fit(const ros::Time &t) const
Definition: device_state_estimator.cpp:38
urg_stamped::device_state_estimator::CommDelay::min_
ros::Duration min_
Definition: device_state_estimator.h:45
urg_stamped::device_state_estimator::ClockEstimatorUUST2::MAX_SYNC_ATTEMPTS
static constexpr int MAX_SYNC_ATTEMPTS
Definition: device_state_estimator.h:343
urg_stamped::device_state_estimator::ScanSampleUTM::operator<
bool operator<(const ScanSampleUTM &b) const
Definition: device_state_estimator.h:151
urg_stamped::device_state_estimator::ClockEstimatorUUST2
Definition: device_state_estimator.h:321
urg_stamped::device_state_estimator::SyncSample
Definition: device_state_estimator.h:88
urg_stamped::device_state_estimator::ClockEstimator::getCommDelay
CommDelay getCommDelay() const
Definition: device_state_estimator.h:215
urg_stamped::device_state_estimator::SyncSample::t_res_
ros::Time t_res_
Definition: device_state_estimator.h:92
urg_stamped::device_state_estimator::SyncSample::device_wall_stamp_
uint64_t device_wall_stamp_
Definition: device_state_estimator.h:93
urg_stamped::device_state_estimator::OriginFracPart::OriginFracPart
OriginFracPart()
Definition: device_state_estimator.h:116
urg_stamped::device_state_estimator::ClockEstimator::finishSync
virtual bool finishSync()=0
urg_stamped::device_state_estimator::ClockEstimator::getClockState
ClockState getClockState() const
Definition: device_state_estimator.h:211
urg_stamped::device_state_estimator::ClockState::ClockState
ClockState(const ros::Time &origin, const double gain, const uint64_t stamp, const bool initialized=true)
Definition: device_state_estimator.h:72
urg_stamped::device_state_estimator::ScanSampleUTM::t_
ros::Time t_
Definition: device_state_estimator.h:142
urg_stamped::device_state_estimator::ScanEstimator::clock_estim_
ClockEstimator::Ptr clock_estim_
Definition: device_state_estimator.h:250
urg_stamped::device_state_estimator::SyncSample::t_process_
ros::Time t_process_
Definition: device_state_estimator.h:96
urg_stamped::device_state_estimator::ScanEstimatorUTM
Definition: device_state_estimator.h:371
urg_stamped::device_state_estimator::DurationWithOffset
Definition: device_state_estimator.h:179
urg_stamped::device_state_estimator::SyncSample::delay_
ros::Duration delay_
Definition: device_state_estimator.h:95
urg_stamped::device_state_estimator::ScanEstimatorUST::ScanEstimatorUST
ScanEstimatorUST(const ClockEstimator::Ptr clock_estim, const ros::Duration &ideal_scan_interval)
Definition: device_state_estimator.h:400
urg_stamped::device_state_estimator::ClockEstimatorUUST1::findMinDelay
std::vector< SyncSampleUUST1 >::const_iterator findMinDelay(const OriginFracPart &overflow_range) const
Definition: clock_estimator_uust1.cpp:116
urg_stamped::device_state_estimator::ClockEstimatorUUST1::originFracOverflow
OriginFracPart originFracOverflow() const
Definition: clock_estimator_uust1.cpp:137
urg_stamped::device_state_estimator::OriginFracPart::TOLERANCE
static constexpr double TOLERANCE
Definition: device_state_estimator.h:114
urg_stamped::device_state_estimator::OriginFracPart::OriginFracPart
OriginFracPart(const double t_min, const double t_max, const bool valid=true)
Definition: device_state_estimator.h:123
urg_stamped::device_state_estimator::ClockState::operator<
bool operator<(const ClockState &b) const
Definition: device_state_estimator.h:80
urg_stamped::device_state_estimator::ScanEstimatorUST::stamps_
std::deque< uint64_t > stamps_
Definition: device_state_estimator.h:414
urg_stamped::device_state_estimator::ClockEstimatorUUST2::SyncSampleUUST2
Definition: device_state_estimator.h:347
urg_stamped::device_state_estimator::ClockSample::stamp_
uint64_t stamp_
Definition: device_state_estimator.h:53
urg_stamped::device_state_estimator::ScanEstimator::ideal_scan_interval_
ros::Duration ideal_scan_interval_
Definition: device_state_estimator.h:252
urg_stamped::device_state_estimator::ClockEstimatorUUST1::pushSyncSample
void pushSyncSample(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp) override
Definition: clock_estimator_uust1.cpp:38
urg_stamped::device_state_estimator::ClockEstimator
Definition: device_state_estimator.h:197
urg_stamped::device_state_estimator::ScanEstimatorUST::scans_
std::deque< ScanSampleUST > scans_
Definition: device_state_estimator.h:415
urg_stamped::device_state_estimator::OriginFracPart::compensate
ros::Time compensate(const ros::Time &t) const
Definition: device_state_estimator.cpp:54
urg_stamped::device_state_estimator::ClockEstimatorUUST2::SyncSampleUUST2::operator<
bool operator<(const SyncSampleUUST2 &b) const
Definition: device_state_estimator.h:360
urg_stamped::device_state_estimator::ClockEstimatorUUST1::MAX_DROPPED_SAMPLES
static constexpr int MAX_DROPPED_SAMPLES
Definition: device_state_estimator.h:294
urg_stamped::device_state_estimator::ClockEstimatorUUST1
Definition: device_state_estimator.h:272
urg_stamped::device_state_estimator::ClockSample::t_estim_
ros::Time t_estim_
Definition: device_state_estimator.h:52
urg_stamped::device_state_estimator::ScanSampleUST
Definition: device_state_estimator.h:157
urg_stamped::device_state_estimator::ClockEstimator::hasEnoughSyncSamples
virtual bool hasEnoughSyncSamples() const =0
urg_stamped::device_state_estimator::ScanEstimatorUTM::STAMP_TO_SEND_SAMPLES
static constexpr size_t STAMP_TO_SEND_SAMPLES
Definition: device_state_estimator.h:385
urg_stamped::device_state_estimator::OriginFracPart::t_min_
const double t_min_
Definition: device_state_estimator.h:112
urg_stamped::device_state_estimator::ClockEstimatorUUST1::FRIEND_TEST
FRIEND_TEST(ClockEstimatorUUST1, FindMinDelay)
urg_stamped::device_state_estimator::ClockEstimatorUUST2::startSync
void startSync() override
Definition: clock_estimator_uust2.cpp:32
urg_stamped::device_state_estimator::SyncSample::SyncSample
SyncSample(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp)
Definition: device_state_estimator.h:98
urg_stamped::device_state_estimator::ClockEstimatorUUST2::best_delay_
ros::Duration best_delay_
Definition: device_state_estimator.h:367
urg_stamped::device_state_estimator::ClockEstimatorUUST2::syncWaitDuration
std::pair< ros::Duration, ros::Duration > syncWaitDuration() const override
Definition: device_state_estimator.h:332
urg_stamped::device_state_estimator::ClockEstimator::pushClockSample
bool pushClockSample(const ClockSample &clock)
Definition: device_state_estimator.cpp:65
urg_stamped::device_state_estimator::ScanSampleUTM::ScanSampleUTM
ScanSampleUTM(const ros::Time &t, const ros::Duration &interval)
Definition: device_state_estimator.h:145
urg_stamped::device_state_estimator::ClockEstimatorUUST1::syncWaitDuration
std::pair< ros::Duration, ros::Duration > syncWaitDuration() const override
Definition: device_state_estimator.h:283
urg_stamped::device_state_estimator::ScanEstimatorUTM::estimateScanTime
std::pair< ros::Time, bool > estimateScanTime(const ros::Time &t_recv, const ros::Time &t_stamp)
Definition: scan_estimator_utm.cpp:86
urg_stamped::device_state_estimator::OriginFracPart::t_max_
const double t_max_
Definition: device_state_estimator.h:113
urg_stamped::device_state_estimator::OriginFracPart::isOnOverflow
bool isOnOverflow(const ros::Time &t) const
Definition: device_state_estimator.cpp:46
urg_stamped::device_state_estimator::Estimator
Definition: device_state_estimator.h:255
urg_stamped::device_state_estimator::ScanEstimatorUTM::pushScanSample
std::pair< ros::Time, bool > pushScanSample(const ros::Time &t_recv, const uint64_t device_wall_stamp) final
Definition: scan_estimator_utm.cpp:33
urg_stamped::device_state_estimator::ClockEstimatorUUST1::hasEnoughSyncSamples
bool hasEnoughSyncSamples() const override
Definition: clock_estimator_uust1.cpp:54
ros::Time
urg_stamped::device_state_estimator::ClockEstimator::CLOCK_SAMPLES
static constexpr int CLOCK_SAMPLES
Definition: device_state_estimator.h:221
urg_stamped::device_state_estimator::ClockEstimatorUUST2::ACCEPTABLE_SAMPLE_DELAY
static constexpr double ACCEPTABLE_SAMPLE_DELAY
Definition: device_state_estimator.h:345
std
urg_stamped::device_state_estimator::ClockEstimatorUUST2::MIN_SYNC_SAMPLES
static constexpr int MIN_SYNC_SAMPLES
Definition: device_state_estimator.h:342
urg_stamped::device_state_estimator::ScanEstimatorUTM::min_stamp_to_send_
ros::Duration min_stamp_to_send_
Definition: device_state_estimator.h:387
urg_stamped::device_state_estimator::ScanSampleUTM
Definition: device_state_estimator.h:139
urg_stamped::device_state_estimator::ScanEstimatorUTM::SCAN_SAMPLES
static constexpr size_t SCAN_SAMPLES
Definition: device_state_estimator.h:384
urg_stamped::device_state_estimator::ClockEstimatorUUST1::SyncSampleUUST1
Definition: device_state_estimator.h:296
urg_stamped::device_state_estimator::ClockEstimatorUUST1::startSync
void startSync() override
Definition: clock_estimator_uust1.cpp:32
urg_stamped::device_state_estimator::ScanEstimator
Definition: device_state_estimator.h:230
urg_stamped::device_state_estimator::ScanEstimator::pushScanSample
virtual std::pair< ros::Time, bool > pushScanSample(const ros::Time &t_recv, const uint64_t device_wall_stamp)=0
urg_stamped::device_state_estimator::DurationWithOffset::value_
ros::Duration value_
Definition: device_state_estimator.h:182
urg_stamped::device_state_estimator::ClockEstimatorUUST2::SyncSampleUUST2::t_origin_
ros::Time t_origin_
Definition: device_state_estimator.h:350
urg_stamped::device_state_estimator::ClockEstimator::pushSyncSample
virtual void pushSyncSample(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp)=0
urg_stamped::device_state_estimator::ScanEstimator::getScanState
ScanState getScanState() const
Definition: device_state_estimator.h:241
urg_stamped::device_state_estimator::ScanEstimatorUST
Definition: device_state_estimator.h:397
urg_stamped::device_state_estimator::ScanEstimatorUST::MIN_INTERVAL_SAMPLES
static constexpr size_t MIN_INTERVAL_SAMPLES
Definition: device_state_estimator.h:413
urg_stamped::device_state_estimator::ScanEstimatorUST::pushScanSample
std::pair< ros::Time, bool > pushScanSample(const ros::Time &t_recv, const uint64_t device_wall_stamp) final
Definition: scan_estimator_ust.cpp:33
urg_stamped::device_state_estimator::ClockState::initialized_
bool initialized_
Definition: device_state_estimator.h:63
urg_stamped::device_state_estimator::CommDelay::sigma_
ros::Duration sigma_
Definition: device_state_estimator.h:46
urg_stamped::device_state_estimator::DurationWithOffset::offset_
ros::Duration offset_
Definition: device_state_estimator.h:183
urg_stamped::device_state_estimator::ClockEstimatorUUST2::RESPONSE_TIMER_INTERVAL
static constexpr double RESPONSE_TIMER_INTERVAL
Definition: device_state_estimator.h:344
urg_stamped::device_state_estimator::ClockEstimatorUUST2::pushSyncSample
void pushSyncSample(const ros::Time &t_req, const ros::Time &t_res, const uint64_t device_wall_stamp) override
Definition: clock_estimator_uust2.cpp:39
urg_stamped
Definition: device_state_estimator.h:35
urg_stamped::device_state_estimator::ScanState
Definition: device_state_estimator.h:170
urg_stamped::device_state_estimator::SyncSample::t_req_
ros::Time t_req_
Definition: device_state_estimator.h:91
urg_stamped::device_state_estimator::ClockEstimatorUUST2::finishSync
bool finishSync() override
Definition: clock_estimator_uust2.cpp:66
urg_stamped::device_state_estimator::ScanState::origin_
ros::Time origin_
Definition: device_state_estimator.h:173
urg_stamped::device_state_estimator::ClockEstimatorUUST2::sync_samples_
std::vector< SyncSampleUUST2 > sync_samples_
Definition: device_state_estimator.h:366
urg_stamped::device_state_estimator::ClockEstimatorUUST1::MIN_SYNC_SAMPLES
static constexpr int MIN_SYNC_SAMPLES
Definition: device_state_estimator.h:292
ros::Duration
urg_stamped::device_state_estimator::ClockState
Definition: device_state_estimator.h:57
urg_stamped::device_state_estimator::ClockEstimator::clock_
ClockState clock_
Definition: device_state_estimator.h:223
urg_stamped::device_state_estimator::ClockState::stampToTime
ros::Time stampToTime(const uint64_t stamp) const
Definition: device_state_estimator.cpp:32
urg_stamped::device_state_estimator::ClockEstimator::startSync
virtual void startSync()=0
urg_stamped::device_state_estimator::ScanEstimatorUTM::recent_t_scans_
std::deque< ros::Time > recent_t_scans_
Definition: device_state_estimator.h:388
urg_stamped::device_state_estimator::DEVICE_TIMESTAMP_RESOLUTION
static constexpr double DEVICE_TIMESTAMP_RESOLUTION
Definition: device_state_estimator.h:40
urg_stamped::device_state_estimator::OriginFracPart::valid_
const bool valid_
Definition: device_state_estimator.h:111
urg_stamped::device_state_estimator::Estimator::clock_
ClockEstimator::Ptr clock_
Definition: device_state_estimator.h:268


urg_stamped
Author(s): Atsushi Watanabe
autogenerated on Wed Dec 18 2024 03:10:57