From 075927963abf16de9f166d8f484ca3a9e47df497 Mon Sep 17 00:00:00 2001 From: jcasals <jcasals@iri.upc.edu> Date: Thu, 30 Apr 2020 16:25:10 +0200 Subject: [PATCH] Rework check() 2on iteration --- src/capture/capture_base.cpp | 16 ++++++++++++++++ src/factor/factor_base.cpp | 7 +++++++ src/feature/feature_base.cpp | 16 ++++++++++++++++ src/frame/frame_base.cpp | 16 ++++++++++++++++ src/landmark/landmark_base.cpp | 8 ++++++++ src/processor/processor_base.cpp | 7 +++++++ src/sensor/sensor_base.cpp | 14 ++++++++++++++ 7 files changed, 84 insertions(+) diff --git a/src/capture/capture_base.cpp b/src/capture/capture_base.cpp index 4957daf4c..f596b4c1e 100644 --- a/src/capture/capture_base.cpp +++ b/src/capture/capture_base.cpp @@ -421,6 +421,22 @@ CheckLog CaptureBase::localCheck(bool _verbose, CaptureBasePtr _cap_ptr, std::os } } } + + auto frm_cap = _cap_ptr->getFrame(); + inconsistency_explanation << "Cap" << id() << " @ " << _cap_ptr + << " ---> Frm" << frm_cap->id() << " @ " << frm_cap + << " -X-> Frm" << id(); + auto frm_cap_list = frm_cap->getCaptureList(); + auto frame_has_cap = std::find_if(frm_cap_list.begin(), frm_cap_list.end(), [&_cap_ptr](CaptureBasePtr cap){ return cap == _cap_ptr;}); + log.assertTrue(frame_has_cap != frm_cap_list.end(), inconsistency_explanation); + + for(auto f : getFeatureList()) + { + inconsistency_explanation << "Cap " << id() << " @ " << _cap_ptr + << " ---> Ftr" << f->id() << " @ " << f + << " -X-> Cap" << id(); + log.assertTrue((f->getCapture() == _cap_ptr), inconsistency_explanation); + } return log; } bool CaptureBase::check(CheckLog& _log, std::shared_ptr<NodeBase> _node_ptr, bool _verbose, std::ostream& _stream, std::string _tabs) const diff --git a/src/factor/factor_base.cpp b/src/factor/factor_base.cpp index 698525ac0..919208234 100644 --- a/src/factor/factor_base.cpp +++ b/src/factor/factor_base.cpp @@ -454,6 +454,13 @@ CheckLog FactorBase::localCheck(bool _verbose, FactorBasePtr _fac_ptr, std::ostr log.assertTrue((getProblem() == ftr_ptr->getProblem()), inconsistency_explanation); + inconsistency_explanation << "Fac" << id() << " @ " << _fac_ptr + << " ---> Ftr" << ftr_ptr->id() << " @ " << ftr_ptr + << " -X-> Fac" << id(); + auto ftr_fac_list = ftr_ptr->getFactorList(); + auto ftr_has_fac = std::find_if(ftr_fac_list.begin(), ftr_fac_list.end(), [&_fac_ptr](FactorBasePtr fac){ return fac == _fac_ptr;}); + log.assertTrue(ftr_has_fac!= ftr_fac_list.end(), inconsistency_explanation); + // find state block pointers in all constrained nodes SensorBasePtr S = getSensor(); // get own sensor to check sb FrameBasePtr F = getFrame(); diff --git a/src/feature/feature_base.cpp b/src/feature/feature_base.cpp index 6dc625c79..0acccaf7a 100644 --- a/src/feature/feature_base.cpp +++ b/src/feature/feature_base.cpp @@ -226,6 +226,22 @@ CheckLog FeatureBase::localCheck(bool _verbose, FeatureBasePtr _ftr_ptr, std::os log.assertTrue((cby->hasFeatureOther(_ftr_ptr)), inconsistency_explanation); } + + auto cap_ftr = _ftr_ptr->getCapture(); + inconsistency_explanation << "Ftr" << id() << " @ " << _ftr_ptr + << " ---> Cap" << cap_ftr->id() << " @ " << cap_ftr + << " -X-> Ftr" << id(); + auto cap_ftr_list = cap_ftr->getFeatureList(); + auto frame_has_cap = std::find_if(cap_ftr_list.begin(), cap_ftr_list.end(), [&_ftr_ptr](FeatureBasePtr ftr){ return ftr == _ftr_ptr;}); + log.assertTrue(frame_has_cap != cap_ftr_list.end(), inconsistency_explanation); + + for(auto fac : getFactorList()) + { + inconsistency_explanation << "Ftr" << id() << " @ " << _ftr_ptr + << " ---> Fac" << fac->id() << " @ " << fac + << " -X-> Ftr" << id(); + log.assertTrue((fac->getFeature() == _ftr_ptr), inconsistency_explanation); + } return log; } bool FeatureBase::check(CheckLog& _log, std::shared_ptr<NodeBase> _node_ptr, bool _verbose, std::ostream& _stream, std::string _tabs) const diff --git a/src/frame/frame_base.cpp b/src/frame/frame_base.cpp index 27bead7e2..bca65f5a4 100644 --- a/src/frame/frame_base.cpp +++ b/src/frame/frame_base.cpp @@ -478,6 +478,22 @@ CheckLog FrameBase::localCheck(bool _verbose, FrameBasePtr _frm_ptr, std::ostrea } } } + + auto trj_ptr = getTrajectory(); + inconsistency_explanation << "Frm" << id() << " @ " << _frm_ptr + << " ---> Trj" << " @ " << trj_ptr + << " -X-> Frm" << id(); + auto trj_frm_list = trj_ptr->getFrameList(); + auto trj_has_frm = std::find_if(trj_frm_list.begin(), trj_frm_list.end(), [&_frm_ptr](FrameBasePtr frm){ return frm == _frm_ptr;}); + log.assertTrue(trj_has_frm != trj_frm_list.end(), inconsistency_explanation); + + for(auto C : getCaptureList()) + { + inconsistency_explanation << "Frm " << id() << " @ " << _frm_ptr + << " ---> Cap" << C->id() << " @ " << C + << " -X-> Frm" << id(); + log.assertTrue((C->getFrame() == _frm_ptr), inconsistency_explanation); + } return log; } diff --git a/src/landmark/landmark_base.cpp b/src/landmark/landmark_base.cpp index 2c4db3060..9f2552615 100644 --- a/src/landmark/landmark_base.cpp +++ b/src/landmark/landmark_base.cpp @@ -285,6 +285,14 @@ CheckLog LandmarkBase::localCheck(bool _verbose, LandmarkBasePtr _lmk_ptr, std:: } } } + + inconsistency_explanation << "Lmk" << id() << " @ " << _lmk_ptr + << " ---> Map" << map_ptr + << " -X-> Lmk" << id(); + auto map_lmk_list = map_ptr->getLandmarkList(); + auto map_has_lmk = std::find_if(map_lmk_list.begin(), map_lmk_list.end(), [&_lmk_ptr](LandmarkBasePtr lmk){ return lmk == _lmk_ptr;}); + log.assertTrue(map_has_lmk != map_lmk_list.end(), inconsistency_explanation); + return log; } bool LandmarkBase::check(CheckLog& _log, std::shared_ptr<NodeBase> _node_ptr, bool _verbose, std::ostream& _stream, std::string _tabs) const diff --git a/src/processor/processor_base.cpp b/src/processor/processor_base.cpp index 230a4c935..ada805258 100644 --- a/src/processor/processor_base.cpp +++ b/src/processor/processor_base.cpp @@ -228,6 +228,13 @@ CheckLog ProcessorBase::localCheck(bool _verbose, ProcessorBasePtr _prc_ptr, std << " is different from Sensor problem pointer " << sen_ptr->getProblem().get() << "\n"; log.assertTrue((getProblem() == sen_ptr->getProblem()), inconsistency_explanation); + inconsistency_explanation << "Prc" << id() << " @ " << _prc_ptr + << " ---> Sen" << sen_ptr->id() << " @ " << sen_ptr + << " -X-> Prc" << id(); + auto sen_prc_list = sen_ptr->getProcessorList(); + auto sen_has_prc = std::find_if(sen_prc_list.begin(), sen_prc_list.end(), [&_prc_ptr](ProcessorBasePtr prc){ return prc == _prc_ptr;}); + log.assertTrue(sen_has_prc != sen_prc_list.end(), inconsistency_explanation); + return log; } bool ProcessorBase::check(CheckLog& _log, std::shared_ptr<NodeBase> _node_ptr, bool _verbose, std::ostream& _stream, std::string _tabs) const diff --git a/src/sensor/sensor_base.cpp b/src/sensor/sensor_base.cpp index fe5891064..2ae05abfd 100644 --- a/src/sensor/sensor_base.cpp +++ b/src/sensor/sensor_base.cpp @@ -547,6 +547,20 @@ CheckLog SensorBase::localCheck(bool _verbose, SensorBasePtr _sen_ptr, std::ostr << " different from Hardware problem pointer " << hwd_ptr->getProblem().get() << "\n"; log.assertTrue((getProblem() == hwd_ptr->getProblem()), inconsistency_explanation); + inconsistency_explanation << "Sen" << id() << " @ " << _sen_ptr + << " ---> Hwd" << " @ " << hwd_ptr + << " -X-> Sen" << id(); + auto hwd_sen_list = hwd_ptr->getSensorList(); + auto hwd_has_sen = std::find_if(hwd_sen_list.begin(), hwd_sen_list.end(), [&_sen_ptr](SensorBasePtr sen){ return sen == _sen_ptr;}); + log.assertTrue(hwd_has_sen != hwd_sen_list.end(), inconsistency_explanation); + + for(auto prc : getProcessorList()) + { + inconsistency_explanation << "Sen" << id() << " @ " << _sen_ptr + << " ---> Prc" << prc->id() << " @ " << prc + << " -X-> Sen" << id(); + log.assertTrue((prc->getSensor() == _sen_ptr), inconsistency_explanation); + } return log; } -- GitLab