From 484cecfd12af279cace88620a26357e22db2a773 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Sol=C3=A0?= <jsola@iri.upc.edu>
Date: Thu, 9 Dec 2021 18:41:54 +0100
Subject: [PATCH] Remove frame's time tolerance from all APIs

---
 demos/mcapi_pov_estimation.cpp                         |  2 +-
 demos/solo_mocap_imu.cpp                               |  2 +-
 demos/solo_real_pov_estimation.cpp                     |  4 ++--
 .../processor/processor_inertial_kinematics.h          |  9 ++++-----
 .../processor/processor_point_feet_nomove.h            |  7 +++----
 src/processor/processor_inertial_kinematics.cpp        |  2 +-
 src/processor/processor_point_feet_nomove.cpp          |  6 +++---
 test/gtest_factor_force_torque.cpp                     |  2 +-
 test/gtest_factor_inertial_kinematics.cpp              |  2 +-
 test/gtest_processor_inertial_kinematics.cpp           |  2 +-
 test/gtest_processor_point_feet_nomove.cpp             | 10 +++++-----
 11 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/demos/mcapi_pov_estimation.cpp b/demos/mcapi_pov_estimation.cpp
index 1b84705..c85c220 100644
--- a/demos/mcapi_pov_estimation.cpp
+++ b/demos/mcapi_pov_estimation.cpp
@@ -451,7 +451,7 @@ int main (int argc, char **argv) {
     TimeStamp t0(t_arr[0]);
     VectorComposite x_origin("POV", {p_ob_gtr_v[0], q_ob_gtr_v[0], v_ob_gtr_v[0]});
     VectorComposite std_origin("POV", {std_prior_p*Vector3d::Ones(), std_prior_o*Vector3d::Ones(), std_prior_v*Vector3d::Ones()});
-    FrameBasePtr KF1 = problem->setPriorFactor(x_origin, std_origin, t0, 0.0005);
+    FrameBasePtr KF1 = problem->setPriorFactor(x_origin, std_origin, t0);
     
     proc_imu->setOrigin(KF1);
     proc_legodom->setOrigin(KF1);
diff --git a/demos/solo_mocap_imu.cpp b/demos/solo_mocap_imu.cpp
index acead6c..82a0734 100644
--- a/demos/solo_mocap_imu.cpp
+++ b/demos/solo_mocap_imu.cpp
@@ -236,7 +236,7 @@ int main (int argc, char **argv) {
     VectorComposite x_origin("POV", {w_p_wi_init, w_qvec_wm, Vector3d::Zero()});
     VectorComposite std_origin("POV", {std_prior_p*Vector3d::Ones(), std_prior_o*Vector3d::Ones(), std_prior_v*Vector3d::Ones()});
     // FrameBasePtr KF1 = problem->setPriorFactor(x_origin, std_origin, t0, 0.0005);
-    FrameBasePtr KF1 = problem->setPriorInitialGuess(x_origin, t0, time_tolerance_mocap);  // if mocap used
+    FrameBasePtr KF1 = problem->setPriorInitialGuess(x_origin, t0);  // if mocap used
     
     proc_imu->setOrigin(KF1);
 
diff --git a/demos/solo_real_pov_estimation.cpp b/demos/solo_real_pov_estimation.cpp
index 51ade73..9845fc5 100644
--- a/demos/solo_real_pov_estimation.cpp
+++ b/demos/solo_real_pov_estimation.cpp
@@ -302,8 +302,8 @@ int main (int argc, char **argv) {
 
     VectorComposite x_origin("POV", {w_p_wm, w_qvec_wm, Vector3d::Zero()});
     VectorComposite std_origin("POV", {std_prior_p*Vector3d::Ones(), std_prior_o*Vector3d::Ones(), std_prior_v*Vector3d::Ones()});
-    // FrameBasePtr KF1 = problem->setPriorFactor(x_origin, std_origin, t0, 0.0005);
-    FrameBasePtr KF1 = problem->setPriorInitialGuess(x_origin, t0, 0.0005);  // if mocap used
+    // FrameBasePtr KF1 = problem->setPriorFactor(x_origin, std_origin, t0);
+    FrameBasePtr KF1 = problem->setPriorInitialGuess(x_origin, t0);  // if mocap used
     
     proc_imu->setOrigin(KF1);
 
diff --git a/include/bodydynamics/processor/processor_inertial_kinematics.h b/include/bodydynamics/processor/processor_inertial_kinematics.h
index 5bd8b2e..3bedaa8 100644
--- a/include/bodydynamics/processor/processor_inertial_kinematics.h
+++ b/include/bodydynamics/processor/processor_inertial_kinematics.h
@@ -72,9 +72,9 @@ class ProcessorInertialKinematics : public ProcessorBase{
         bool createInertialKinematicsFactor(CaptureInertialKinematicsPtr _cap_ikin, CaptureBasePtr _cap_angvel, CaptureBasePtr _cap_ikin_origin);
 
         void processCapture(CaptureBasePtr _incoming) override;
-        void processKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance) override;
+        void processKeyFrame(FrameBasePtr _keyframe_ptr) override;
         bool triggerInCapture(CaptureBasePtr) const override;
-        bool triggerInKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance) const override;
+        bool triggerInKeyFrame(FrameBasePtr _keyframe_ptr) const override;
         bool storeKeyFrame(FrameBasePtr) override;
         bool storeCapture(CaptureBasePtr) override;
         bool voteForKeyFrame() const override;
@@ -87,8 +87,7 @@ class ProcessorInertialKinematics : public ProcessorBase{
 
 
 
-inline bool ProcessorInertialKinematics::triggerInKeyFrame(FrameBasePtr _keyframe_ptr,
-                                                           const double& _time_tolerance) const
+inline bool ProcessorInertialKinematics::triggerInKeyFrame(FrameBasePtr _keyframe_ptr) const
 {
     return false;
 }
@@ -113,7 +112,7 @@ inline bool ProcessorInertialKinematics::voteForKeyFrame() const
     return false;
 }
 
-inline void ProcessorInertialKinematics::processKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance)
+inline void ProcessorInertialKinematics::processKeyFrame(FrameBasePtr _keyframe_ptr)
 {
 }
 
diff --git a/include/bodydynamics/processor/processor_point_feet_nomove.h b/include/bodydynamics/processor/processor_point_feet_nomove.h
index 8a63b72..f9265c5 100644
--- a/include/bodydynamics/processor/processor_point_feet_nomove.h
+++ b/include/bodydynamics/processor/processor_point_feet_nomove.h
@@ -61,9 +61,9 @@ class ProcessorPointFeetNomove : public ProcessorBase{
         bool createPointFeetNomoveFactor(CapturePointFeetNomovePtr _cap_pfnomove, CaptureBasePtr _cap_angvel, CaptureBasePtr _cap_pfnomove_origin);
 
         void processCapture(CaptureBasePtr _incoming) override;
-        void processKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance) override;
+        void processKeyFrame(FrameBasePtr _keyframe_ptr) override;
         bool triggerInCapture(CaptureBasePtr) const override;
-        bool triggerInKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance) const override;
+        bool triggerInKeyFrame(FrameBasePtr _keyframe_ptr) const override;
         bool storeKeyFrame(FrameBasePtr) override;
         bool storeCapture(CaptureBasePtr) override;
         bool voteForKeyFrame() const override;
@@ -77,8 +77,7 @@ class ProcessorPointFeetNomove : public ProcessorBase{
 
 
 
-inline bool ProcessorPointFeetNomove::triggerInKeyFrame(FrameBasePtr _keyframe_ptr,
-                                                           const double& _time_tolerance) const
+inline bool ProcessorPointFeetNomove::triggerInKeyFrame(FrameBasePtr _keyframe_ptr) const
 {
     return true;
 }
diff --git a/src/processor/processor_inertial_kinematics.cpp b/src/processor/processor_inertial_kinematics.cpp
index 6ab3a72..ff09770 100644
--- a/src/processor/processor_inertial_kinematics.cpp
+++ b/src/processor/processor_inertial_kinematics.cpp
@@ -77,7 +77,7 @@ inline void ProcessorInertialKinematics::processCapture(CaptureBasePtr _capture)
         && (buffer_capture_it != buffer_capture_.getContainer().end()))
     {
 
-        bool time_ok = buffer_capture_.simpleCheckTimeTolerance(buffer_frame_it->first, buffer_capture_it->first, buffer_frame_it->second->getTimeTolerance());
+        bool time_ok = buffer_capture_.simpleCheckTimeTolerance(buffer_frame_it->first, buffer_capture_it->first, getTimeTolerance());
         if (time_ok) {
             CaptureBasePtr cap_angvel = buffer_frame_it->second->getCaptureOf(sensor_angvel);
             auto min_ts = (buffer_frame_it->first < buffer_capture_it->first) ? buffer_frame_it->first : buffer_capture_it->first;
diff --git a/src/processor/processor_point_feet_nomove.cpp b/src/processor/processor_point_feet_nomove.cpp
index 2ba76fd..036fee9 100644
--- a/src/processor/processor_point_feet_nomove.cpp
+++ b/src/processor/processor_point_feet_nomove.cpp
@@ -52,8 +52,8 @@ void ProcessorPointFeetNomove::createFactorIfNecessary(){
         auto kf2_it = std::next(kf1_it);
         TimeStamp t1 = kf1_it->first;
         TimeStamp t2 = kf2_it->first;
-        auto cap1_it = buffer_capture_.selectIterator(t1, kf1_it->second->getTimeTolerance());
-        auto cap2_it = buffer_capture_.selectIterator(t2, kf1_it->second->getTimeTolerance());
+        auto cap1_it = buffer_capture_.selectIterator(t1, getTimeTolerance());
+        auto cap2_it = buffer_capture_.selectIterator(t2, getTimeTolerance());
 
         // check that the first 2 KF have corresponding captures in the capture buffer  
         // just quit and assume that you will someday have matching captures
@@ -143,7 +143,7 @@ inline void ProcessorPointFeetNomove::processCapture(CaptureBasePtr _capture)
 
 }
 
-inline void ProcessorPointFeetNomove::processKeyFrame(FrameBasePtr _keyframe_ptr, const double& _time_tolerance)
+inline void ProcessorPointFeetNomove::processKeyFrame(FrameBasePtr _keyframe_ptr)
 {
     if (!_keyframe_ptr)
     {
diff --git a/test/gtest_factor_force_torque.cpp b/test/gtest_factor_force_torque.cpp
index 5b69528..5a62fc0 100644
--- a/test/gtest_factor_force_torque.cpp
+++ b/test/gtest_factor_force_torque.cpp
@@ -241,7 +241,7 @@ class FactorInertialKinematics_2KF : public testing::Test
         tA_.set(0);
         x_origin_ = VectorComposite("POV", {Vector3d(0,0,0), Quaterniond::Identity().coeffs(), Vector3d(0,0,0)});
         s_origin_ = VectorComposite("POV", {1e-3*Vector3d(1,1,1), 1e-3*Vector3d(1,1,1), 1e-3*Vector3d(1,1,1)});
-        KFA_ = problem_->setPriorFactor(x_origin_, s_origin_, tA_, 0.005);
+        KFA_ = problem_->setPriorFactor(x_origin_, s_origin_, tA_);
 
 
         // ADD THE STATEBLOCKS AND SET THEIR DEFAULT VALUES
diff --git a/test/gtest_factor_inertial_kinematics.cpp b/test/gtest_factor_inertial_kinematics.cpp
index b390ba9..00d43d2 100644
--- a/test/gtest_factor_inertial_kinematics.cpp
+++ b/test/gtest_factor_inertial_kinematics.cpp
@@ -118,7 +118,7 @@ class FactorInertialKinematics_1KF : public testing::Test
         x_origin_ = VectorComposite("POV", {Vector3d(0,0,0), Quaterniond::Identity().coeffs(), Vector3d(0,0,0)});
         s_origin_ = VectorComposite("POV", {1e-3*Vector3d(1,1,1), 1e-3*Vector3d(1,1,1), 1e-3*Vector3d(1,1,1)});
         t_.set(0.0);
-        KF0_ = problem_->setPriorFactor(x_origin_, s_origin_, t_, 0.005);
+        KF0_ = problem_->setPriorFactor(x_origin_, s_origin_, t_);
 
         ParamsSensorInertialKinematicsPtr intr_ik = std::make_shared<ParamsSensorInertialKinematics>();
         SIK_ = std::make_shared<SensorInertialKinematics>(Eigen::VectorXd(0), intr_ik);
diff --git a/test/gtest_processor_inertial_kinematics.cpp b/test/gtest_processor_inertial_kinematics.cpp
index 59e1580..ded4ae7 100644
--- a/test/gtest_processor_inertial_kinematics.cpp
+++ b/test/gtest_processor_inertial_kinematics.cpp
@@ -123,7 +123,7 @@ class FactorInertialKinematics_2KF : public testing::Test
         VectorXd std_vec = pow(1e-3, 2)*VectorXd::Ones(18); 
         VectorComposite prior(x_origin_,  "POVCDL", {3,4,3,3,3,3});
         VectorComposite prior_std(std_vec, "POVCDL", {3,3,3,3,3,3});
-        problem_->setPriorFactor(prior, prior_std, t_, 0.001);
+        problem_->setPriorFactor(prior, prior_std, t_);
         KF0_ = problem_->getTrajectory()->getLastFrame();
 
         // Set origin of processor Imu
diff --git a/test/gtest_processor_point_feet_nomove.cpp b/test/gtest_processor_point_feet_nomove.cpp
index c4fb675..e501a8a 100644
--- a/test/gtest_processor_point_feet_nomove.cpp
+++ b/test/gtest_processor_point_feet_nomove.cpp
@@ -107,7 +107,7 @@ class PointFeetCaptures : public testing::Test
         VectorXd std_vec = pow(1e-3, 2)*VectorXd::Ones(6); 
         VectorComposite prior(x_origin_,   "PO", {3,4});
         VectorComposite prior_std(std_vec, "PO", {3,3});
-        problem_->setPriorFactor(prior, prior_std, 0.0, 0.001);
+        problem_->setPriorFactor(prior, prior_std, 0.0);
         KF0_ = problem_->getTrajectory()->getLastFrame();
 
         // Simulate captures with 4 point feet
@@ -158,10 +158,10 @@ TEST_F(PointFeetCaptures, process_all_capture_first)
 
     // factor creation due to keyFrameCallback
     FrameBasePtr KF1 = problem_->emplaceFrame(2.0, x_origin_);
-    proc_pfnm_base_->keyFrameCallback(KF1, 0.001);
+    proc_pfnm_base_->keyFrameCallback(KF1);
 
     FrameBasePtr KF2 = problem_->emplaceFrame(3.0, x_origin_);
-    proc_pfnm_base_->keyFrameCallback(KF2, 0.001);
+    proc_pfnm_base_->keyFrameCallback(KF2);
 
     problem_->print(4,1,1,1);
 }
@@ -171,10 +171,10 @@ TEST_F(PointFeetCaptures, process_all_capture_last)
 {
     // First, get the key frames from the keyFrameCallback
     FrameBasePtr KF1 = problem_->emplaceFrame(2.0, x_origin_);
-    proc_pfnm_base_->keyFrameCallback(KF1, 0.001);
+    proc_pfnm_base_->keyFrameCallback(KF1);
 
     FrameBasePtr KF2 = problem_->emplaceFrame(3.0, x_origin_);
-    proc_pfnm_base_->keyFrameCallback(KF2, 0.001);
+    proc_pfnm_base_->keyFrameCallback(KF2);
 
     // Then process the captures
     CPF0_->process();
-- 
GitLab