From c85bbde28a7fe886c5269c7066a119034fc1e848 Mon Sep 17 00:00:00 2001 From: Joan Sola <jsola@iri.upc.edu> Date: Tue, 13 Mar 2018 16:20:13 +0100 Subject: [PATCH] Fix lastCapture() and rename to lastKeyCapture() --- src/sensor_base.cpp | 17 ++++++++++------- src/sensor_base.h | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/sensor_base.cpp b/src/sensor_base.cpp index 83578afef..942fff7ee 100644 --- a/src/sensor_base.cpp +++ b/src/sensor_base.cpp @@ -218,18 +218,21 @@ void SensorBase::setNoiseCov(const Eigen::MatrixXs& _noise_cov) { noise_cov_ = _noise_cov; } -CaptureBasePtr SensorBase::lastCapture(void) +CaptureBasePtr SensorBase::lastKeyCapture(void) { - // we search for the most recent Capture of this sensor + // we search for the most recent Capture of this sensor which belongs to a KeyFrame CaptureBasePtr capture = nullptr; FrameBaseList frame_list = getProblem()->getTrajectoryPtr()->getFrameList(); FrameBaseRevIter frame_rev_it = frame_list.rbegin(); while (frame_rev_it != frame_list.rend()) { - CaptureBasePtr capture = (*frame_rev_it)->getCaptureOf(shared_from_this()); - if (capture) - // found the most recent Capture made by this sensor ! - break; + if ((*frame_rev_it)->isKey()) + { + capture = (*frame_rev_it)->getCaptureOf(shared_from_this()); + if (capture) + // found the most recent Capture made by this sensor ! + break; + } frame_rev_it++; } return capture; @@ -340,7 +343,7 @@ StateBlockPtr SensorBase::getStateBlockPtrDynamic(unsigned int _i) { if ((_i<2 && this->extrinsicsInCaptures()) || (_i>=2 && intrinsicsInCaptures())) { - CaptureBasePtr cap = lastCapture(); + CaptureBasePtr cap = lastKeyCapture(); if (cap) return cap->getStateBlockPtr(_i); else diff --git a/src/sensor_base.h b/src/sensor_base.h index 8c6b6c168..3a2de9957 100644 --- a/src/sensor_base.h +++ b/src/sensor_base.h @@ -102,7 +102,7 @@ class SensorBase : public NodeBase, public std::enable_shared_from_this<SensorBa ProcessorBasePtr addProcessor(ProcessorBasePtr _proc_ptr); ProcessorBaseList& getProcessorList(); - CaptureBasePtr lastCapture(void); + CaptureBasePtr lastKeyCapture(void); CaptureBasePtr lastCapture(const TimeStamp& _ts); bool process(const CaptureBasePtr capture_ptr); -- GitLab