diff --git a/include/gnss/processor/processor_gnss_tdcp.h b/include/gnss/processor/processor_gnss_tdcp.h index 833d258fdcbd288fe25d3d6eceb1d362d0d3a7d7..c176ac6518f52001bef2e6212f2903fd0b66e9b5 100644 --- a/include/gnss/processor/processor_gnss_tdcp.h +++ b/include/gnss/processor/processor_gnss_tdcp.h @@ -41,7 +41,7 @@ struct ParamsProcessorGnssTdcp : public ParamsProcessorGnssFix tdcp.tdcp.corr_iono = false; tdcp.relinearize_jacobian = false; tdcp.max_iterations = 1; - tdcp.old_nav = false; + tdcp.tdcp.use_old_nav = false; tdcp.tdcp.multi_freq = false; } std::string print() const override diff --git a/src/processor/processor_gnss_tdcp.cpp b/src/processor/processor_gnss_tdcp.cpp index 1734ecf19d6f280e7b895df47f6a8606523712bd..4e27bb919022a3cfc40fa5cad9342167f44e4f14 100644 --- a/src/processor/processor_gnss_tdcp.cpp +++ b/src/processor/processor_gnss_tdcp.cpp @@ -165,24 +165,19 @@ void ProcessorGnssTdcp::processKeyFrame(FrameBasePtr _keyframe, const double& _t WOLF_INFO("Past KF with feature fix found. Performing TDCP!"); // TDCP - Eigen::Vector4d d; - Eigen::Matrix4d cov_d; - double residual; - std::set<int> discarded_sats, raim_discarded_sats; - if (GnssUtils::Tdcp(std::static_pointer_cast<CaptureGnss>(cap_gnss_ref)->getSnapshot(), - std::static_pointer_cast<CaptureGnss>(cap_gnss)->getSnapshot(), - feat_fix->getMeasurement(), - d, - cov_d, - residual, - discarded_sats, - raim_discarded_sats, - params_tdcp_->tdcp, - params_tdcp_->compute_pos_opt)) + std::set<int> discarded_sats; + auto tdcp_output = GnssUtils::Tdcp(std::static_pointer_cast<CaptureGnss>(cap_gnss_ref)->getSnapshot(), + std::static_pointer_cast<CaptureGnss>(cap_gnss)->getSnapshot(), + feat_fix->getMeasurement(), + Eigen::Vector4d::Zero(), + discarded_sats, + params_tdcp_->tdcp, + params_tdcp_->compute_pos_opt); + if (tdcp_output.success) { WOLF_INFO("TDCP successfully performed!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); // EMPLACE FEATURE - auto ftr = FeatureBase::emplace<FeatureGnssTdcp>(cap_gnss, d, cov_d); + auto ftr = FeatureBase::emplace<FeatureGnssTdcp>(cap_gnss, tdcp_output.d, tdcp_output.cov_d); // ADD FACTOR emplaceFactor(ftr, KF_ref); diff --git a/src/processor/processor_tracker_gnss.cpp b/src/processor/processor_tracker_gnss.cpp index 81fc43a2c953474cc951dcab7d771d6716ee35d9..02b8fcee394700e7a1277c2bf4ac59fa1ce87057 100644 --- a/src/processor/processor_tracker_gnss.cpp +++ b/src/processor/processor_tracker_gnss.cpp @@ -423,33 +423,31 @@ void ProcessorTrackerGnss::establishFactors() std::cout << sat << " "; std::cout << std::endl; + // reference ECEF position + Eigen::Vector3d x_r = sensor_gnss_->computeFrameAntennaPosEcef(KF); + // compute TDCP batch - Eigen::Vector4d d = Eigen::Vector4d::Zero(); - Eigen::Matrix4d cov_d = Eigen::Matrix4d::Identity(); - double residual; - - if (GnssUtils::Tdcp(ref_cap_gnss->getSnapshot(), - last_cap_gnss->getSnapshot(), - (fix_last_.success ? fix_last_.pos : Eigen::Vector3d::Zero()), - common_sats, - d, - cov_d, - residual, - std::set<int>(), - params_tracker_gnss_->tdcp_batch_params)) + auto tdcp_output = GnssUtils::Tdcp(ref_cap_gnss->getSnapshot(), + last_cap_gnss->getSnapshot(), + x_r, + common_sats, + Eigen::Vector4d::Zero(), + params_tracker_gnss_->tdcp_batch_params); + if (tdcp_output.success) { - WOLF_DEBUG("TDCP BATCH d = ", d.transpose()); - WOLF_DEBUG("TDCP BATCH cov =\n", cov_d); + WOLF_DEBUG("TDCP BATCH d = ", tdcp_output.d.transpose()); + WOLF_DEBUG("TDCP BATCH cov =\n", tdcp_output.cov_d); // EMPLACE FEATURE - auto ftr = FeatureBase::emplace<FeatureGnssTdcp>(last_cap_gnss, Eigen::Vector3d(d.head<3>()), Eigen::Matrix3d(cov_d.topLeftCorner<3,3>())); + auto ftr = FeatureBase::emplace<FeatureGnssTdcp>(last_cap_gnss, Eigen::Vector3d(tdcp_output.d.head<3>()), Eigen::Matrix3d(tdcp_output.cov_d.topLeftCorner<3,3>())); + //auto ftr = FeatureBase::emplace<FeatureGnssTdcp>(cap_gnss, tdcp_output.d, tdcp_output.cov_d); // EMPLACE FACTOR FactorBase::emplace<FactorGnssTdcp3d>(ftr, ftr, KF, sensor_gnss_, shared_from_this()); } else { - WOLF_DEBUG("TDCP BATCH failed"); + WOLF_WARN("TDCP BATCH failed with msg: ", tdcp_output.msg); } } }