diff --git a/src/processor/processor_gnss_single_diff.cpp b/src/processor/processor_gnss_single_diff.cpp index b1aaba28dab8a5acf51e3d4ca3ba5f266408c60d..6f43fc29f1b8e9d84509cd44a5e2fdc131a47bdc 100644 --- a/src/processor/processor_gnss_single_diff.cpp +++ b/src/processor/processor_gnss_single_diff.cpp @@ -22,8 +22,7 @@ ProcessorGnssSingleDiff::~ProcessorGnssSingleDiff() void ProcessorGnssSingleDiff::processCapture(CaptureBasePtr _capture) { // TODO: keep captures in a buffer and deal with KFpacks - - WOLF_INFO("ProcessorGnssSingleDiff::process()"); + WOLF_DEBUG("ProcessorGnssSingleDiff::process()"); incoming_capture_ = std::static_pointer_cast<CaptureGnssSingleDiff>(_capture); // discard capture with null or non-key origin frame @@ -33,7 +32,7 @@ void ProcessorGnssSingleDiff::processCapture(CaptureBasePtr _capture) return; } - if (last_KF_ == nullptr) + if (last_KF_ == nullptr && incoming_capture_->getOriginFrame() != nullptr && incoming_capture_->getOriginFrame()->isKey()) last_KF_ = incoming_capture_->getOriginFrame(); // NEW KF? ------------------------------------------------ @@ -81,7 +80,7 @@ void ProcessorGnssSingleDiff::processCapture(CaptureBasePtr _capture) incoming_capture_->getFrame() != nullptr && incoming_capture_->getFrame()->isKey() && incoming_capture_->getData().norm() > params_gnss_->enu_map_init_dist_min) { - WOLF_DEBUG("initializing enu map"); + WOLF_INFO("initializing enu map"); sensor_gnss_->initializeEnuMapYaw(incoming_capture_->getOriginFrame()->getState(), incoming_capture_->getFrame()->getState(), incoming_capture_->getData()); @@ -111,17 +110,23 @@ bool ProcessorGnssSingleDiff::voteForKeyFrame() // Elapsed time criterion: From the last KF with gnssfix capture if ((incoming_capture_->getTimeStamp() - last_KF_->getTimeStamp()) > params_gnss_->time_th) - return true; + { + WOLF_DEBUG("voting for KF: elapsed time criterion"); + return true; + } // Distance criterion: From the last KF with gnssfix capture Eigen::Vector2s v_origin_current = (sensor_gnss_->getREnuMap().transpose() * sensor_gnss_->getREnuEcef() * incoming_capture_->getData()).head<2>(); Eigen::Vector2s v_lastKF_origin = incoming_capture_->getOriginFrame()->getP()->getState() - last_KF_->getP()->getState(); - //std::cout << "params_gnss_->dist_traveled" << params_gnss_->dist_traveled << std::endl; - //std::cout << "v_origin_current: " << v_origin_current.transpose() << std::endl; - //std::cout << "v_lastKF_origin: " << v_lastKF_origin.transpose() << std::endl; - //std::cout << "v_lastKF_origin + v_origin_current: " << (v_lastKF_origin + v_origin_current).transpose() << std::endl; + //std::cout << "params_gnss_->dist_traveled" << params_gnss_->dist_traveled << std::endl; + //std::cout << "v_origin_current: " << v_origin_current.transpose() << std::endl; + //std::cout << "v_lastKF_origin: " << v_lastKF_origin.transpose() << std::endl; + //std::cout << "v_lastKF_origin + v_origin_current: " << (v_lastKF_origin + v_origin_current).transpose() << std::endl; if ((v_lastKF_origin + v_origin_current).norm() > params_gnss_->dist_traveled) - return true; + { + WOLF_DEBUG("voting for KF: distance criterion"); + return true; + } // TODO: more alternatives?