#include <interval_intersection.hpp>
Public Member Functions | |
IntervalIntersector (boost::function< void(const calibration_msgs::Interval &)> output_callback) | |
~IntervalIntersector () | |
Public Attributes | |
boost::function< void(const calibration_msgs::IntervalConstPtr &)> | getNewInputStream () |
Private Member Functions | |
void | inputCallback (const calibration_msgs::IntervalConstPtr &interval_ptr, size_t i) |
Interval message callback. | |
void | process_queues () |
Private Attributes | |
size_t | max_queue_size |
vector< boost::shared_ptr < boost::mutex > > | mutexes |
boost::function< void(const calibration_msgs::Interval &)> | output_callback_ |
boost::mutex | processing_mutex |
vector< deque < calibration_msgs::IntervalConstPtr > > | queues |
This class receives streams of interval messages, sorted by end time within each stream. For each end time, it outputs the largest intervals contained in one interval of each stream. This class is general, but is designed to compute the intervals of time where a list of sensors were all stable at the same time, and can therefore be used together for calibration. The code assumes that start times of intervals are also non-decreasing. If not, it will output a reasonable answer though not an optimal one (it is impossible in that case to guarantee optimality since a later message can extend a previously output interval).
Definition at line 57 of file interval_intersection.hpp.
IntervalIntersector::IntervalIntersector | ( | boost::function< void(const calibration_msgs::Interval &)> | output_callback | ) |
Definition at line 50 of file interval_intersection.cpp.
IntervalIntersector::~IntervalIntersector | ( | ) |
Definition at line 56 of file interval_intersection.cpp.
void IntervalIntersector::inputCallback | ( | const calibration_msgs::IntervalConstPtr & | interval_ptr, | |
size_t | i | |||
) | [private] |
Interval message callback.
It puts the message on a queue. If all queues are non-empty, they are processed until one of them is empty.
Definition at line 85 of file interval_intersection.cpp.
void IntervalIntersector::process_queues | ( | ) | [private] |
Definition at line 96 of file interval_intersection.cpp.
boost::function< void(const calibration_msgs::IntervalConstPtr &)> IntervalIntersector::getNewInputStream |
Definition at line 62 of file interval_intersection.hpp.
size_t interval_intersection::IntervalIntersector::max_queue_size [private] |
Definition at line 77 of file interval_intersection.hpp.
vector<boost::shared_ptr<boost::mutex> > interval_intersection::IntervalIntersector::mutexes [private] |
Definition at line 75 of file interval_intersection.hpp.
boost::function<void (const calibration_msgs::Interval&)> interval_intersection::IntervalIntersector::output_callback_ [private] |
Definition at line 78 of file interval_intersection.hpp.
boost::mutex interval_intersection::IntervalIntersector::processing_mutex [private] |
Definition at line 76 of file interval_intersection.hpp.
vector<deque<calibration_msgs::IntervalConstPtr> > interval_intersection::IntervalIntersector::queues [private] |
Definition at line 74 of file interval_intersection.hpp.