g2o
Toggle main menu visibility
Loading...
Searching...
No Matches
g2o
types
data
data_queue.cpp
Go to the documentation of this file.
1
// g2o - General Graph Optimization
2
// Copyright (C) 2011 R. Kuemmerle, G. Grisetti, W. Burgard
3
// All rights reserved.
4
//
5
// Redistribution and use in source and binary forms, with or without
6
// modification, are permitted provided that the following conditions are
7
// met:
8
//
9
// * Redistributions of source code must retain the above copyright notice,
10
// this list of conditions and the following disclaimer.
11
// * Redistributions in binary form must reproduce the above copyright
12
// notice, this list of conditions and the following disclaimer in the
13
// documentation and/or other materials provided with the distribution.
14
//
15
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
16
// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17
// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
18
// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19
// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27
#include "
data_queue.h
"
28
29
#include "
g2o/types/data/robot_data.h
"
30
31
namespace
g2o
{
32
33
RobotData
*
DataQueue::findClosestData
(
double
timestamp)
const
{
34
if
(
_buffer
.rbegin()->first < timestamp)
return
_buffer
.rbegin()->second;
35
if
(
_buffer
.begin()->first > timestamp)
return
_buffer
.begin()->second;
36
37
Buffer::const_iterator ub =
_buffer
.upper_bound(timestamp);
38
Buffer::const_iterator lb = ub;
39
--lb;
40
if
(fabs(lb->first - timestamp) < fabs(ub->first - timestamp))
41
return
lb->second;
42
else
43
return
ub->second;
44
}
45
46
RobotData
*
DataQueue::before
(
double
timestamp)
const
{
47
if
(
_buffer
.size() == 0 ||
_buffer
.begin()->first >= timestamp)
48
return
nullptr
;
49
Buffer::const_iterator lb =
_buffer
.upper_bound(timestamp);
50
--lb;
// now it's the lower bound
51
return
lb->second;
52
}
53
54
RobotData
*
DataQueue::after
(
double
timestamp)
const
{
55
if
(
_buffer
.size() == 0 ||
_buffer
.rbegin()->first < timestamp)
56
return
nullptr
;
57
Buffer::const_iterator ub =
_buffer
.upper_bound(timestamp);
58
if
(ub ==
_buffer
.end())
return
nullptr
;
59
return
ub->second;
60
}
61
62
void
DataQueue::add
(
RobotData
* rd) {
_buffer
[rd->
timestamp
()] = rd; }
63
64
}
// namespace g2o
g2o::DataQueue::add
void add(RobotData *rd)
Definition
data_queue.cpp:62
g2o::DataQueue::_buffer
Buffer _buffer
Definition
data_queue.h:56
g2o::DataQueue::findClosestData
RobotData * findClosestData(double timestamp) const
Definition
data_queue.cpp:33
g2o::DataQueue::after
RobotData * after(double timestamp) const
Definition
data_queue.cpp:54
g2o::DataQueue::before
RobotData * before(double timestamp) const
Definition
data_queue.cpp:46
g2o::RobotData
data recorded by the robot
Definition
robot_data.h:41
g2o::RobotData::timestamp
double timestamp() const
Definition
robot_data.h:46
data_queue.h
g2o
Definition
dl_wrapper.cpp:55
robot_data.h
Generated on
for g2o by
1.17.0