From cca0e23a199a485ddd03abe3b2b73807f76cebf9 Mon Sep 17 00:00:00 2001
From: jcasals <jcasals@iri.upc.edu>
Date: Tue, 14 Jul 2020 15:31:30 +0200
Subject: [PATCH] Multiple renamings

- Remove "Key" from frame-related functions' name
- FrameList -> FrameMap
- Rename FrameList Iterators to FrameMap Iterators
---
 demos/demo_analytic_autodiff_factor.cpp       |  4 +-
 demos/demo_wolf_imported_graph.cpp            |  4 +-
 demos/hello_wolf/processor_range_bearing.cpp  |  2 +-
 demos/solver/test_iQR_wolf2.cpp               |  4 +-
 include/core/common/wolf.h                    |  2 +-
 include/core/factor/factor_base.h             |  4 +-
 include/core/problem/problem.h                |  5 +-
 include/core/trajectory/trajectory_base.h     | 65 +++++++++----------
 src/ceres_wrapper/solver_ceres.cpp            |  2 +-
 src/problem/problem.cpp                       | 19 ++----
 src/sensor/sensor_base.cpp                    | 10 +--
 src/trajectory/trajectory_base.cpp            | 22 +++----
 test/gtest_factor_diff_drive.cpp              |  4 +-
 test/gtest_odom_2d.cpp                        | 12 ++--
 test/gtest_problem.cpp                        |  8 +--
 test/gtest_processor_base.cpp                 |  2 +-
 .../gtest_processor_tracker_feature_dummy.cpp |  6 +-
 ...gtest_processor_tracker_landmark_dummy.cpp |  6 +-
 test/gtest_solver_manager.cpp                 |  2 +-
 test/gtest_trajectory.cpp                     | 30 ++++-----
 test/gtest_tree_manager_sliding_window.cpp    |  4 +-
 21 files changed, 105 insertions(+), 112 deletions(-)

diff --git a/demos/demo_analytic_autodiff_factor.cpp b/demos/demo_analytic_autodiff_factor.cpp
index d72f6ce2d..0fd8d42cc 100644
--- a/demos/demo_analytic_autodiff_factor.cpp
+++ b/demos/demo_analytic_autodiff_factor.cpp
@@ -274,8 +274,8 @@ int main(int argc, char** argv)
         printf("\nError opening file\n");
 
     // PRIOR
-    FrameBasePtr first_frame_autodiff = wolf_problem_autodiff->getTrajectory()->getFrameList().front();
-    FrameBasePtr first_frame_analytic = wolf_problem_analytic->getTrajectory()->getFrameList().front();
+    FrameBasePtr first_frame_autodiff = wolf_problem_autodiff->getTrajectory()->getFrameMap().front();
+    FrameBasePtr first_frame_analytic = wolf_problem_analytic->getTrajectory()->getFrameMap().front();
     CaptureFix* initial_covariance_autodiff = new CaptureFix(TimeStamp(0), new SensorBase("ABSOLUTE POSE", nullptr, nullptr, nullptr, 0), first_frame_autodiff->getState(), Eigen::Matrix3d::Identity() * 0.01);
     CaptureFix* initial_covariance_analytic = new CaptureFix(TimeStamp(0), new SensorBase("ABSOLUTE POSE", nullptr, nullptr, nullptr, 0), first_frame_analytic->getState(), Eigen::Matrix3d::Identity() * 0.01);
     first_frame_autodiff->addCapture(initial_covariance_autodiff);
diff --git a/demos/demo_wolf_imported_graph.cpp b/demos/demo_wolf_imported_graph.cpp
index d3be8bc31..c0afa76e9 100644
--- a/demos/demo_wolf_imported_graph.cpp
+++ b/demos/demo_wolf_imported_graph.cpp
@@ -301,8 +301,8 @@ int main(int argc, char** argv)
         printf("\nError opening file\n");
 
     // PRIOR
-    FrameBasePtr first_frame_full = wolf_problem_full->getTrajectory()->getFrameList().front();
-    FrameBasePtr first_frame_prun = wolf_problem_prun->getTrajectory()->getFrameList().front();
+    FrameBasePtr first_frame_full = wolf_problem_full->getTrajectory()->getFrameMap().front();
+    FrameBasePtr first_frame_prun = wolf_problem_prun->getTrajectory()->getFrameMap().front();
     CaptureFix* initial_covariance_full = new CaptureFix(TimeStamp(0), new SensorBase("ABSLOUTE POSE", nullptr, nullptr, nullptr, 0), first_frame_full->getState(), Eigen::Matrix3d::Identity() * 0.01);
     CaptureFix* initial_covariance_prun = new CaptureFix(TimeStamp(0), new SensorBase("ABSLOUTE POSE", nullptr, nullptr, nullptr, 0), first_frame_prun->getState(), Eigen::Matrix3d::Identity() * 0.01);
     first_frame_full->addCapture(initial_covariance_full);
diff --git a/demos/hello_wolf/processor_range_bearing.cpp b/demos/hello_wolf/processor_range_bearing.cpp
index 08e77f76c..7df38e733 100644
--- a/demos/hello_wolf/processor_range_bearing.cpp
+++ b/demos/hello_wolf/processor_range_bearing.cpp
@@ -46,7 +46,7 @@ void ProcessorRangeBearing::processCapture(CaptureBasePtr _capture)
     if (!kf)
     {
         // No KeyFrame callback received -- we assume a KF is available to hold this _capture (checked in assert below)
-        kf = getProblem()->closestKeyFrameToTimeStamp(_capture->getTimeStamp());
+        kf = getProblem()->closestFrameToTimeStamp(_capture->getTimeStamp());
         assert( (fabs(kf->getTimeStamp() - _capture->getTimeStamp()) < params_->time_tolerance) && "Could not find a KF close enough to _capture!");
     }
 
diff --git a/demos/solver/test_iQR_wolf2.cpp b/demos/solver/test_iQR_wolf2.cpp
index de9f6f157..82aab6219 100644
--- a/demos/solver/test_iQR_wolf2.cpp
+++ b/demos/solver/test_iQR_wolf2.cpp
@@ -363,8 +363,8 @@ int main(int argc, char *argv[])
     // Vehicle poses
     std::cout << "Vehicle poses..." << std::endl;
     int i = 0;
-    Eigen::VectorXd state_poses(wolf_manager_QR->getProblem()->getTrajectory()->getFrameList().size() * 3);
-    for (auto frame_it = wolf_manager_QR->getProblem()->getTrajectory()->getFrameList().begin(); frame_it != wolf_manager_QR->getProblem()->getTrajectory()->getFrameList().end(); frame_it++)
+    Eigen::VectorXd state_poses(wolf_manager_QR->getProblem()->getTrajectory()->getFrameMap().size() * 3);
+    for (auto frame_it = wolf_manager_QR->getProblem()->getTrajectory()->getFrameMap().begin(); frame_it != wolf_manager_QR->getProblem()->getTrajectory()->getFrameMap().end(); frame_it++)
     {
         if (complex_angle)
             state_poses.segment(i, 3) << *(*frame_it)->getP()->get(), *((*frame_it)->getP()->get() + 1), atan2(*(*frame_it)->getO()->get(), *((*frame_it)->getO()->get() + 1));
diff --git a/include/core/common/wolf.h b/include/core/common/wolf.h
index a06198842..97f9a50ff 100644
--- a/include/core/common/wolf.h
+++ b/include/core/common/wolf.h
@@ -237,7 +237,7 @@ WOLF_PTR_TYPEDEFS(FrameBase);
 WOLF_LIST_TYPEDEFS(FrameBase);
 
 class TimeStamp;
-typedef std::map<TimeStamp, FrameBasePtr> FrameList;
+typedef std::map<TimeStamp, FrameBasePtr> FrameMap;
 
 // - Capture
 WOLF_PTR_TYPEDEFS(CaptureBase);
diff --git a/include/core/factor/factor_base.h b/include/core/factor/factor_base.h
index 89c3397ef..c600f8a24 100644
--- a/include/core/factor/factor_base.h
+++ b/include/core/factor/factor_base.h
@@ -4,8 +4,8 @@
 // Forward declarations for node templates
 namespace wolf{
 class FeatureBase;
-class FrameListIter;
-class FrameListRevIter;
+class TrajectoryIter;
+class TrajectoryRevIter;
 }
 
 //Wolf includes
diff --git a/include/core/problem/problem.h b/include/core/problem/problem.h
index 70d33d427..002015f83 100644
--- a/include/core/problem/problem.h
+++ b/include/core/problem/problem.h
@@ -306,9 +306,8 @@ class Problem : public std::enable_shared_from_this<Problem>
 
         // Frame getters
         FrameBasePtr getLastFrame( ) const;
-        FrameBasePtr getLastKeyFrame( ) const;
         FrameBasePtr getLastKeyOrAuxFrame( ) const;
-        FrameBasePtr closestKeyFrameToTimeStamp(const TimeStamp& _ts) const;
+        FrameBasePtr closestFrameToTimeStamp(const TimeStamp& _ts) const;
 
         /** \brief Give the permission to a processor to create a new key Frame
          *
@@ -373,7 +372,7 @@ class Problem : public std::enable_shared_from_this<Problem>
         bool getCovarianceBlock(std::map<StateBlockPtr, unsigned int> _sb_2_idx, Eigen::MatrixXd& _cov) const;
         bool getCovarianceBlock(StateBlockPtr _state, Eigen::MatrixXd& _cov, const int _row_and_col = 0) const;
         bool getFrameCovariance(FrameBaseConstPtr _frame_ptr, Eigen::MatrixXd& _covariance) const;
-        bool getLastKeyFrameCovariance(Eigen::MatrixXd& _covariance) const;
+        bool getLastFrameCovariance(Eigen::MatrixXd& _covariance) const;
         bool getLastKeyOrAuxFrameCovariance(Eigen::MatrixXd& _covariance) const;
         bool getLandmarkCovariance(LandmarkBaseConstPtr _landmark_ptr, Eigen::MatrixXd& _covariance) const;
 
diff --git a/include/core/trajectory/trajectory_base.h b/include/core/trajectory/trajectory_base.h
index 3fa3c1cba..cb89fa517 100644
--- a/include/core/trajectory/trajectory_base.h
+++ b/include/core/trajectory/trajectory_base.h
@@ -17,10 +17,10 @@ class FrameBase;
 
 namespace wolf {
 
-class FrameListIter : public std::map<TimeStamp, FrameBasePtr>::const_iterator
+class TrajectoryIter : public std::map<TimeStamp, FrameBasePtr>::const_iterator
 {
     public:
-        FrameListIter(std::map<TimeStamp, FrameBasePtr>::const_iterator src)
+        TrajectoryIter(std::map<TimeStamp, FrameBasePtr>::const_iterator src)
             : std::map<TimeStamp, FrameBasePtr>::const_iterator(std::move(src))
         {
 
@@ -32,10 +32,10 @@ class FrameListIter : public std::map<TimeStamp, FrameBasePtr>::const_iterator
         }
 };
 
-class FrameListRevIter : public std::map<TimeStamp, FrameBasePtr>::const_reverse_iterator
+class TrajectoryRevIter : public std::map<TimeStamp, FrameBasePtr>::const_reverse_iterator
 {
     public:
-        FrameListRevIter(std::map<TimeStamp, FrameBasePtr>::const_reverse_iterator src)
+        TrajectoryRevIter(std::map<TimeStamp, FrameBasePtr>::const_reverse_iterator src)
             : std::map<TimeStamp, FrameBasePtr>::const_reverse_iterator(std::move(src))
         {
 
@@ -46,9 +46,9 @@ class FrameListRevIter : public std::map<TimeStamp, FrameBasePtr>::const_reverse
             return std::map<TimeStamp, FrameBasePtr>::const_reverse_iterator::operator*().second;
         }
 };
-// typedef std::map<TimeStamp, FrameBasePtr> FrameList;
-// typedef std::map<TimeStamp, FrameBasePtr>::const_iterator FrameListIter;
-// typedef std::map<TimeStamp, FrameBasePtr>::const_reverse_iterator FrameListRevIter;
+// typedef std::map<TimeStamp, FrameBasePtr> FrameMap;
+// typedef std::map<TimeStamp, FrameBasePtr>::const_iterator TrajectoryIter;
+// typedef std::map<TimeStamp, FrameBasePtr>::const_reverse_iterator TrajectoryRevIter;
 
 //class TrajectoryBase
 class TrajectoryBase : public NodeBase, public std::enable_shared_from_this<TrajectoryBase>
@@ -56,7 +56,7 @@ class TrajectoryBase : public NodeBase, public std::enable_shared_from_this<Traj
     friend FrameBase;
 
     private:
-         FrameList frame_list_;
+         FrameMap frame_map_;
 
     protected:
         std::string frame_structure_;  // Defines the structure of the Frames in the Trajectory.
@@ -68,15 +68,14 @@ class TrajectoryBase : public NodeBase, public std::enable_shared_from_this<Traj
         ~TrajectoryBase() override;
         
         // Frames
-        const FrameList& getFrameList() const;
+        const FrameMap& getFrameMap() const;
         FrameBasePtr getLastFrame() const;
         FrameBasePtr getFirstFrame() const;
-        FrameBasePtr getLastKeyFrame() const;
-        FrameBasePtr closestKeyFrameToTimeStamp(const TimeStamp& _ts) const;
-        FrameListIter begin() const;
-        FrameListIter end() const;
-        FrameListRevIter rbegin() const;
-        FrameListRevIter rend() const;
+        FrameBasePtr closestFrameToTimeStamp(const TimeStamp& _ts) const;
+        TrajectoryIter begin() const;
+        TrajectoryIter end() const;
+        TrajectoryRevIter rbegin() const;
+        TrajectoryRevIter rend() const;
 
         virtual void printHeader(int depth, //
                                  bool constr_by, //
@@ -102,40 +101,40 @@ class TrajectoryBase : public NodeBase, public std::enable_shared_from_this<Traj
         void getFactorList(FactorBasePtrList & _fac_list) const;
 };
 
-inline const FrameList& TrajectoryBase::getFrameList() const
+inline const FrameMap& TrajectoryBase::getFrameMap() const
 {
-    return frame_list_;
-    // return frame_list_;
+    return frame_map_;
+    // return frame_map_;
 }
 
-inline FrameBasePtr TrajectoryBase::getLastFrame() const
-{
-    auto it = static_cast<FrameListRevIter>(frame_list_.rbegin());
-    return *it;
-}
+// inline FrameBasePtr TrajectoryBase::getLastFrame() const
+// {
+//     auto it = static_cast<TrajectoryRevIter>(frame_map_.rbegin());
+//     return *it;
+// }
 inline FrameBasePtr TrajectoryBase::getFirstFrame() const
 {
-    auto it = static_cast<FrameListIter>(frame_list_.begin());
+    auto it = static_cast<TrajectoryIter>(frame_map_.begin());
     return *it;
 }
-inline FrameListIter TrajectoryBase::begin() const
+inline TrajectoryIter TrajectoryBase::begin() const
 {
-    return static_cast<FrameListIter>(frame_list_.begin());
+    return static_cast<TrajectoryIter>(frame_map_.begin());
 }
-inline FrameListIter TrajectoryBase::end() const
+inline TrajectoryIter TrajectoryBase::end() const
 {
-    return static_cast<FrameListIter>(frame_list_.end());
+    return static_cast<TrajectoryIter>(frame_map_.end());
 }
-inline FrameListRevIter TrajectoryBase::rbegin() const
+inline TrajectoryRevIter TrajectoryBase::rbegin() const
 {
-    return static_cast<FrameListRevIter>(frame_list_.rbegin());
+    return static_cast<TrajectoryRevIter>(frame_map_.rbegin());
 }
-inline FrameListRevIter TrajectoryBase::rend() const
+inline TrajectoryRevIter TrajectoryBase::rend() const
 {
-    return static_cast<FrameListRevIter>(frame_list_.rend());
+    return static_cast<TrajectoryRevIter>(frame_map_.rend());
 }
 
-inline FrameBasePtr TrajectoryBase::getLastKeyFrame() const
+inline FrameBasePtr TrajectoryBase::getLastFrame() const
 {
     // return last_key_frame_ptr_;
     auto last = this->rbegin();
diff --git a/src/ceres_wrapper/solver_ceres.cpp b/src/ceres_wrapper/solver_ceres.cpp
index 4c161bfd7..033b0f910 100644
--- a/src/ceres_wrapper/solver_ceres.cpp
+++ b/src/ceres_wrapper/solver_ceres.cpp
@@ -165,7 +165,7 @@ void SolverCeres::computeCovariances(const CovarianceBlocksToBeComputed _blocks)
         case CovarianceBlocksToBeComputed::ROBOT_LANDMARKS:
         {
             //robot-robot
-            auto last_key_frame = wolf_problem_->getLastKeyFrame();
+            auto last_key_frame = wolf_problem_->getLastFrame();
 
             state_block_pairs.emplace_back(last_key_frame->getP(), last_key_frame->getP());
             state_block_pairs.emplace_back(last_key_frame->getP(), last_key_frame->getO());
diff --git a/src/problem/problem.cpp b/src/problem/problem.cpp
index e50283b26..b151a6929 100644
--- a/src/problem/problem.cpp
+++ b/src/problem/problem.cpp
@@ -415,7 +415,7 @@ TimeStamp Problem::getTimeStamp ( ) const
 
     if (not ts.ok())
     {
-        const auto& last_kf_or_aux = trajectory_ptr_->getLastKeyFrame();
+        const auto& last_kf_or_aux = trajectory_ptr_->getLastFrame();
 
         if (last_kf_or_aux)
             ts = last_kf_or_aux->getTimeStamp(); // Use last estimated frame's state
@@ -449,7 +449,7 @@ VectorComposite Problem::getState(const StateStructure& _structure) const
 
     VectorComposite state_last;
 
-    const auto& last_kf_or_aux = trajectory_ptr_->getLastKeyFrame();
+    const auto& last_kf_or_aux = trajectory_ptr_->getLastFrame();
 
     if (last_kf_or_aux)
         state_last = last_kf_or_aux->getState(structure);
@@ -498,7 +498,7 @@ VectorComposite Problem::getState (const TimeStamp& _ts, const StateStructure& _
 
     VectorComposite state_last;
 
-    const auto& last_kf_or_aux = trajectory_ptr_->closestKeyFrameToTimeStamp(_ts);
+    const auto& last_kf_or_aux = trajectory_ptr_->closestFrameToTimeStamp(_ts);
 
     if (last_kf_or_aux)
         state_last = last_kf_or_aux->getState(structure);
@@ -859,9 +859,9 @@ bool Problem::getFrameCovariance(FrameBaseConstPtr _frame_ptr, Eigen::MatrixXd&
     return success;
 }
 
-bool Problem::getLastKeyFrameCovariance(Eigen::MatrixXd& cov) const
+bool Problem::getLastFrameCovariance(Eigen::MatrixXd& cov) const
 {
-    FrameBasePtr frm = getLastKeyFrame();
+    FrameBasePtr frm = getLastFrame();
     return getFrameCovariance(frm, cov);
 }
 
@@ -945,14 +945,9 @@ FrameBasePtr Problem::getLastFrame() const
     return trajectory_ptr_->getLastFrame();
 }
 
-FrameBasePtr Problem::getLastKeyFrame() const
+FrameBasePtr Problem::closestFrameToTimeStamp(const TimeStamp& _ts) const
 {
-    return trajectory_ptr_->getLastKeyFrame();
-}
-
-FrameBasePtr Problem::closestKeyFrameToTimeStamp(const TimeStamp& _ts) const
-{
-    return trajectory_ptr_->closestKeyFrameToTimeStamp(_ts);
+    return trajectory_ptr_->closestFrameToTimeStamp(_ts);
 }
 
 void Problem::setPriorOptions(const std::string& _mode,
diff --git a/src/sensor/sensor_base.cpp b/src/sensor/sensor_base.cpp
index 6e5713912..fefc4d332 100644
--- a/src/sensor/sensor_base.cpp
+++ b/src/sensor/sensor_base.cpp
@@ -220,9 +220,9 @@ CaptureBasePtr SensorBase::lastCapture(void) const
     CaptureBasePtr capture = nullptr;
     if (getProblem())
     {
-        // auto frame_list = getProblem()->getTrajectory()->getFrameList();
+        // auto frame_list = getProblem()->getTrajectory()->getFrameMap();
         auto trajectory = getProblem()->getTrajectory();
-        FrameListRevIter frame_rev_it = trajectory->rbegin();
+        TrajectoryRevIter frame_rev_it = trajectory->rbegin();
         while (frame_rev_it != trajectory->rend())
         {
             capture = (*frame_rev_it)->getCaptureOf(shared_from_this());
@@ -242,7 +242,7 @@ CaptureBasePtr SensorBase::lastKeyCapture(void) const
     if (getProblem())
     {
         auto trajectory = getProblem()->getTrajectory();
-        FrameListRevIter frame_rev_it = trajectory->rbegin();
+        TrajectoryRevIter frame_rev_it = trajectory->rbegin();
         while (frame_rev_it != trajectory->rend())
         {
             if ((*frame_rev_it)->isKey())
@@ -264,11 +264,11 @@ CaptureBasePtr SensorBase::lastCapture(const TimeStamp& _ts) const
     CaptureBasePtr capture = nullptr;
     if (getProblem())
     {
-        // auto frame_list = getProblem()->getTrajectory()->getFrameList();
+        // auto frame_list = getProblem()->getTrajectory()->getFrameMap();
         auto trajectory = getProblem()->getTrajectory();
 
         // We iterate in reverse since we're likely to find it close to the rbegin() place.
-        FrameListRevIter frame_rev_it = trajectory->rbegin();
+        TrajectoryRevIter frame_rev_it = trajectory->rbegin();
         while (frame_rev_it != trajectory->rend())
         {
             if ((*frame_rev_it)->getTimeStamp() <= _ts)
diff --git a/src/trajectory/trajectory_base.cpp b/src/trajectory/trajectory_base.cpp
index 528b25e03..9f91e0216 100644
--- a/src/trajectory/trajectory_base.cpp
+++ b/src/trajectory/trajectory_base.cpp
@@ -7,7 +7,7 @@ TrajectoryBase::TrajectoryBase() :
     NodeBase("TRAJECTORY", "TrajectoryBase")
 {
 //    WOLF_DEBUG("constructed T");
-    frame_list_ = FrameList();
+    frame_map_ = FrameMap();
 }
 
 TrajectoryBase::~TrajectoryBase()
@@ -18,9 +18,9 @@ TrajectoryBase::~TrajectoryBase()
 FrameBasePtr TrajectoryBase::addFrame(FrameBasePtr _frame_ptr)
 {
     // add to list
-    assert(frame_list_.count(_frame_ptr->getTimeStamp()) == 0 && "Trying to add a keyframe with the same timestamp of an existing one");
+    assert(frame_map_.count(_frame_ptr->getTimeStamp()) == 0 && "Trying to add a keyframe with the same timestamp of an existing one");
 
-    frame_list_.emplace(_frame_ptr->getTimeStamp(), _frame_ptr);
+    frame_map_.emplace(_frame_ptr->getTimeStamp(), _frame_ptr);
 
     return _frame_ptr;
 }
@@ -28,8 +28,8 @@ FrameBasePtr TrajectoryBase::addFrame(FrameBasePtr _frame_ptr)
 void TrajectoryBase::removeFrame(FrameBasePtr _frame_ptr)
 {
     // add to list
-    // frame_list_.erase(_frame_ptr);
-    frame_list_.erase(_frame_ptr->getTimeStamp());
+    // frame_map_.erase(_frame_ptr);
+    frame_map_.erase(_frame_ptr->getTimeStamp());
 }
 
 void TrajectoryBase::getFactorList(FactorBasePtrList & _fac_list) const
@@ -39,11 +39,11 @@ void TrajectoryBase::getFactorList(FactorBasePtrList & _fac_list) const
 }
 
 
-FrameBasePtr TrajectoryBase::closestKeyFrameToTimeStamp(const TimeStamp& _ts) const
+FrameBasePtr TrajectoryBase::closestFrameToTimeStamp(const TimeStamp& _ts) const
 {
     FrameBasePtr closest_kf = nullptr;
-    //If frame_list_ is empty then closestKeyFrameToTimeStamp is meaningless
-    if(not frame_list_.empty())
+    //If frame_map_ is empty then closestFrameToTimeStamp is meaningless
+    if(not frame_map_.empty())
     {
         //Let me use shorter names for this explanation: lower_bound -> lb & upper_bound -> ub
         //In the std they fulfill the following properties:
@@ -51,8 +51,8 @@ FrameBasePtr TrajectoryBase::closestKeyFrameToTimeStamp(const TimeStamp& _ts) co
         //        ub is the first element such that ts < lb.
         // The ub definition is fine, and what one would expect. On the other hand the lb definition is NOT the ACTUAL lower bound but the following position
         // so, lb = lb_true + 1.
-        auto lower_bound = frame_list_.lower_bound(_ts);
-        auto upper_bound = frame_list_.upper_bound(_ts);
+        auto lower_bound = frame_map_.lower_bound(_ts);
+        auto upper_bound = frame_map_.upper_bound(_ts);
 
         //We get out of the way the easy cases. If lb is exactly the first element it can mean two things:
         //    * _ts belongs to the "past", thus the closest frame is the first one
@@ -91,7 +91,7 @@ FrameBasePtr TrajectoryBase::closestKeyFrameToTimeStamp(const TimeStamp& _ts) co
 
 void TrajectoryBase::printHeader(int _depth, bool _metric, bool _state_blocks, bool _constr_by, std::ostream& _stream, std::string _tabs) const
 {
-    _stream << _tabs << "Trajectory" << ((_depth < 1) ? (" -- " + std::to_string(getFrameList().size()) + "F") : "")  << std::endl;
+    _stream << _tabs << "Trajectory" << ((_depth < 1) ? (" -- " + std::to_string(getFrameMap().size()) + "F") : "")  << std::endl;
 }
 void TrajectoryBase::print(int _depth, bool _constr_by, bool _metric, bool _state_blocks, std::ostream& _stream, std::string _tabs) const
 {
diff --git a/test/gtest_factor_diff_drive.cpp b/test/gtest_factor_diff_drive.cpp
index 0a914d715..51661f8ab 100644
--- a/test/gtest_factor_diff_drive.cpp
+++ b/test/gtest_factor_diff_drive.cpp
@@ -498,7 +498,7 @@ TEST(FactorDiffDrive, preintegrate_and_solve_sensor_intrinsics_gt)
         C->process();
     }
 
-    auto F2 = problem->getLastKeyFrame();
+    auto F2 = problem->getLastFrame();
 
     // Fix boundaries
     F0->fix();
@@ -634,7 +634,7 @@ TEST(FactorDiffDrive, preintegrate_and_solve_sensor_intrinsics)
         C->process();
     }
 
-    auto F2 = problem->getLastKeyFrame();
+    auto F2 = problem->getLastFrame();
 
 //    VectorComposite x2c(x2, "PO", {2,1});
     F2->setState(x2, "PO"); // Impose known final state regardless of integrated value.
diff --git a/test/gtest_odom_2d.cpp b/test/gtest_odom_2d.cpp
index d432e4482..3b525a12e 100644
--- a/test/gtest_odom_2d.cpp
+++ b/test/gtest_odom_2d.cpp
@@ -228,7 +228,7 @@ TEST(Odom2d, VoteForKfAndSolve)
     solver.computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL_MARGINALS);
 
     //    std::cout << "Initial pose : " << problem->getCurrentState().transpose() << std::endl;
-    //    std::cout << "Initial covariance : " << std::endl << problem->getLastKeyFrameCovariance() << std::endl;
+    //    std::cout << "Initial covariance : " << std::endl << problem->getLastFrameCovariance() << std::endl;
     //    std::cout << "Motion data  : " << data.transpose() << std::endl;
 
     // Check covariance values
@@ -426,9 +426,9 @@ TEST(Odom2d, KF_callback)
     FrameBasePtr keyframe_2 = problem->emplaceKeyFrame(t_split, x_split);
 
     // there must be 2KF and one F
-    ASSERT_EQ(problem->getTrajectory()->getFrameList().size(), 2);
+    ASSERT_EQ(problem->getTrajectory()->getFrameMap().size(), 2);
     // The last KF must have TS = 0.08
-    ASSERT_EQ(problem->getLastKeyFrame()->getTimeStamp().getNanoSeconds(), 80000000);
+    ASSERT_EQ(problem->getLastFrame()->getTimeStamp().getNanoSeconds(), 80000000);
 
     ASSERT_TRUE(problem->check(0));
     processor_odom2d->keyFrameCallback(keyframe_2, dt/2);
@@ -446,9 +446,9 @@ TEST(Odom2d, KF_callback)
 //    std::cout << report << std::endl;
     solver.computeCovariances(SolverManager::CovarianceBlocksToBeComputed::ALL_MARGINALS);
 
-    ASSERT_POSE2d_APPROX(problem->getLastKeyFrame()->getStateVector() , integrated_pose_vector[n_split], 1e-6);
+    ASSERT_POSE2d_APPROX(problem->getLastFrame()->getStateVector() , integrated_pose_vector[n_split], 1e-6);
     MatrixXd computed_cov;
-    ASSERT_TRUE(problem->getLastKeyFrameCovariance(computed_cov));
+    ASSERT_TRUE(problem->getLastFrameCovariance(computed_cov));
     ASSERT_MATRIX_APPROX(computed_cov, integrated_cov_vector [n_split], 1e-6);
 
     ////////////////////////////////////////////////////////////////
@@ -493,7 +493,7 @@ TEST(Odom2d, KF_callback)
     // check other KF in the future of the split KF
     MatrixXd KF2_cov;
     ASSERT_TRUE(problem->getFrameCovariance(keyframe_2, KF2_cov));
-    ASSERT_POSE2d_APPROX(problem->getLastKeyFrame()->getStateVector(), integrated_pose_vector[n_split], 1e-6);
+    ASSERT_POSE2d_APPROX(problem->getLastFrame()->getStateVector(), integrated_pose_vector[n_split], 1e-6);
     ASSERT_MATRIX_APPROX(KF2_cov,                                integrated_cov_vector [n_split], 1e-6);
 
     // Check full trajectory
diff --git a/test/gtest_problem.cpp b/test/gtest_problem.cpp
index be4f4b60f..657ddc48a 100644
--- a/test/gtest_problem.cpp
+++ b/test/gtest_problem.cpp
@@ -132,7 +132,7 @@ TEST(Problem, SetOrigin_PO_2d)
     F->getFactorList(fac_list);
 
     // check that we have one frame (prior)
-    ASSERT_EQ(T->getFrameList().size(), (SizeStd) 1);
+    ASSERT_EQ(T->getFrameMap().size(), (SizeStd) 1);
     // check that we have one capture (prior)
     ASSERT_EQ(F->getCaptureList().size(), (SizeStd) 1);
     // check that we have two features (prior: one per state block)
@@ -191,7 +191,7 @@ TEST(Problem, SetOrigin_PO_3d)
     F->getFactorList(fac_list);
 
     // check that we have one frame (prior)
-    ASSERT_EQ(T->getFrameList().size(), (SizeStd) 1);
+    ASSERT_EQ(T->getFrameMap().size(), (SizeStd) 1);
     // check that we have one capture (prior)
     ASSERT_EQ(F->getCaptureList().size(), (SizeStd) 1);
     // check that we have two features (prior: one per state block)
@@ -229,7 +229,7 @@ TEST(Problem, emplaceFrame_factory)
     FrameBasePtr f2 = P->emplaceKeyFrame(2, "POV", 3,  VectorXd(10) );
 
     // check that all frames are effectively in the trajectory
-    ASSERT_EQ(P->getTrajectory()->getFrameList().size(), (SizeStd) 3);
+    ASSERT_EQ(P->getTrajectory()->getFrameMap().size(), (SizeStd) 3);
 
     ASSERT_EQ(f0->getStateVector().size(), 3 );
     ASSERT_EQ(f1->getStateVector().size(), 7 );
@@ -477,7 +477,7 @@ TEST(Problem, check)
 
     // remove stuff from problem, and re-check
 
-    auto F = problem->getLastKeyFrame();
+    auto F = problem->getLastFrame();
 
     auto cby = F->getConstrainedByList().front();
 
diff --git a/test/gtest_processor_base.cpp b/test/gtest_processor_base.cpp
index a47822ae8..c3277078d 100644
--- a/test/gtest_processor_base.cpp
+++ b/test/gtest_processor_base.cpp
@@ -134,7 +134,7 @@ TEST(ProcessorBase, KeyFrameCallback)
         std::cout << "6\n";
 
         // Only odom creating KFs
-        ASSERT_TRUE( problem->getLastKeyFrame()->getStructure().compare("PO")==0 );
+        ASSERT_TRUE( problem->getLastFrame()->getStructure().compare("PO")==0 );
     }
 }
 
diff --git a/test/gtest_processor_tracker_feature_dummy.cpp b/test/gtest_processor_tracker_feature_dummy.cpp
index 6238a5786..7b6dc1c40 100644
--- a/test/gtest_processor_tracker_feature_dummy.cpp
+++ b/test/gtest_processor_tracker_feature_dummy.cpp
@@ -287,8 +287,8 @@ TEST_F(ProcessorTrackerFeatureDummyTest, process)
     CaptureBasePtr cap1 = std::make_shared<CaptureVoid>(0, sensor);
     cap1->process();
 
-    ASSERT_TRUE(problem->getTrajectory()->getLastKeyFrame() != nullptr);
-    ASSERT_EQ(problem->getTrajectory()->getLastKeyFrame()->id(), cap1->getFrame()->id());
+    ASSERT_TRUE(problem->getTrajectory()->getLastFrame() != nullptr);
+    ASSERT_EQ(problem->getTrajectory()->getLastFrame()->id(), cap1->getFrame()->id());
     ASSERT_TRUE(problem->check(0));
 
     //2ND TIME
@@ -322,7 +322,7 @@ TEST_F(ProcessorTrackerFeatureDummyTest, process)
     cap5->process();
 
     ASSERT_TRUE(cap4->getFrame()->isKey());
-    ASSERT_EQ(problem->getTrajectory()->getLastKeyFrame()->id(), cap4->getFrame()->id());
+    ASSERT_EQ(problem->getTrajectory()->getLastFrame()->id(), cap4->getFrame()->id());
     ASSERT_TRUE(problem->check(0));
 
     // check factors
diff --git a/test/gtest_processor_tracker_landmark_dummy.cpp b/test/gtest_processor_tracker_landmark_dummy.cpp
index 44dfbdf14..d0fe1b1d8 100644
--- a/test/gtest_processor_tracker_landmark_dummy.cpp
+++ b/test/gtest_processor_tracker_landmark_dummy.cpp
@@ -321,8 +321,8 @@ TEST_F(ProcessorTrackerLandmarkDummyTest, process)
     CaptureBasePtr cap1 = std::make_shared<CaptureVoid>(0, sensor);
     cap1->process();
 
-    ASSERT_TRUE(problem->getTrajectory()->getLastKeyFrame() != nullptr);
-    ASSERT_EQ(problem->getTrajectory()->getLastKeyFrame(), cap1->getFrame());
+    ASSERT_TRUE(problem->getTrajectory()->getLastFrame() != nullptr);
+    ASSERT_EQ(problem->getTrajectory()->getLastFrame(), cap1->getFrame());
 
     //2ND TIME
     WOLF_DEBUG("Second time...");
@@ -351,7 +351,7 @@ TEST_F(ProcessorTrackerLandmarkDummyTest, process)
     CaptureBasePtr cap5 = std::make_shared<CaptureVoid>(4, sensor);
     cap5->process();
 
-    ASSERT_EQ(problem->getTrajectory()->getLastKeyFrame(), cap4->getFrame());
+    ASSERT_EQ(problem->getTrajectory()->getLastFrame(), cap4->getFrame());
     ASSERT_EQ(processor->getOrigin(), cap4);
     ASSERT_EQ(processor->getLast(), cap5);
 
diff --git a/test/gtest_solver_manager.cpp b/test/gtest_solver_manager.cpp
index 934b32666..30bf42ca3 100644
--- a/test/gtest_solver_manager.cpp
+++ b/test/gtest_solver_manager.cpp
@@ -580,7 +580,7 @@ TEST(SolverManager, MultiThreadingTruncatedNotifications)
 
         ts += 1.0;
 
-        if (P->getTrajectory()->getFrameList().size() > 10)
+        if (P->getTrajectory()->getFrameMap().size() > 10)
             (*P->getTrajectory()->begin())->remove();
 
         if (std::chrono::duration_cast<std::chrono::duration<double>>(std::chrono::high_resolution_clock::now() - start).count() > Dt)
diff --git a/test/gtest_trajectory.cpp b/test/gtest_trajectory.cpp
index fd9472999..ff103bc09 100644
--- a/test/gtest_trajectory.cpp
+++ b/test/gtest_trajectory.cpp
@@ -44,22 +44,22 @@ TEST(TrajectoryBase, ClosestKeyFrame)
 
     FrameBasePtr KF; // closest key-frame queried
 
-    KF = T->closestKeyFrameToTimeStamp(-0.8);                // before all keyframes    --> return F1
+    KF = T->closestFrameToTimeStamp(-0.8);                // before all keyframes    --> return F1
     ASSERT_EQ(KF->id(), F1->id());                           // same id!
 
-    KF = T->closestKeyFrameToTimeStamp(1.1);                 // between keyframes       --> return F1
+    KF = T->closestFrameToTimeStamp(1.1);                 // between keyframes       --> return F1
     ASSERT_EQ(KF->id(), F1->id());                           // same id!
 
-    KF = T->closestKeyFrameToTimeStamp(1.9);                 // between keyframes       --> return F2
+    KF = T->closestFrameToTimeStamp(1.9);                 // between keyframes       --> return F2
     ASSERT_EQ(KF->id(), F2->id());                           // same id!
 
-    KF = T->closestKeyFrameToTimeStamp(2.6);                 // between keyframe and auxiliary frame, but closer to auxiliary frame --> return F2
+    KF = T->closestFrameToTimeStamp(2.6);                 // between keyframe and auxiliary frame, but closer to auxiliary frame --> return F2
     ASSERT_EQ(KF->id(), F2->id());                           // same id!
 
-    KF = T->closestKeyFrameToTimeStamp(3.2);                 // after the auxiliary frame, between closer to frame --> return F2
+    KF = T->closestFrameToTimeStamp(3.2);                 // after the auxiliary frame, between closer to frame --> return F2
     ASSERT_EQ(KF->id(), F2->id());                           // same id!
 
-    KF = T->closestKeyFrameToTimeStamp(4.2);                 // after the last frame --> return F2
+    KF = T->closestFrameToTimeStamp(4.2);                 // after the last frame --> return F2
     ASSERT_EQ(KF->id(), F2->id());                           // same id!
 }
 
@@ -82,14 +82,14 @@ TEST(TrajectoryBase, Add_Remove_Frame)
     // add F1
     FrameBasePtr F1 = P->emplaceKeyFrame(1, Eigen::Vector3d::Zero()); // 2 non-fixed
     if (debug) P->print(2,0,0,0);
-    ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 1);
+    ASSERT_EQ(T->getFrameMap().             size(), (SizeStd) 1);
     ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 2);
     std::cout << __LINE__ << std::endl;
 
     // add F2
     FrameBasePtr F2 = P->emplaceKeyFrame(2, Eigen::Vector3d::Zero()); // 1 fixed, 1 not
     if (debug) P->print(2,0,0,0);
-    ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 2);
+    ASSERT_EQ(T->getFrameMap().             size(), (SizeStd) 2);
     ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 4);
     std::cout << __LINE__ << std::endl;
 
@@ -98,11 +98,11 @@ TEST(TrajectoryBase, Add_Remove_Frame)
 //                                                              P->getDim(),
                                                               std::list<VectorXd>({Eigen::Vector2d::Zero(),Eigen::Vector1d::Zero()}));
     if (debug) P->print(2,0,0,0);
-    ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 2);
+    ASSERT_EQ(T->getFrameMap().             size(), (SizeStd) 2);
     ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 4);
     std::cout << __LINE__ << std::endl;
 
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F2->id());
+    ASSERT_EQ(T->getLastFrame()->id(), F2->id());
     std::cout << __LINE__ << std::endl;
 
     N.update();
@@ -112,23 +112,23 @@ TEST(TrajectoryBase, Add_Remove_Frame)
     // remove frames and keyframes
     F2->remove(); // KF
     if (debug) P->print(2,0,0,0);
-    ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 1);
+    ASSERT_EQ(T->getFrameMap().             size(), (SizeStd) 1);
     ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 2);
     std::cout << __LINE__ << std::endl;
 
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F1->id());
+    ASSERT_EQ(T->getLastFrame()->id(), F1->id());
     std::cout << __LINE__ << std::endl;
 
     F3->remove(); // F
     if (debug) P->print(2,0,0,0);
-    ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 1);
+    ASSERT_EQ(T->getFrameMap().             size(), (SizeStd) 1);
     std::cout << __LINE__ << std::endl;
 
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F1->id());
+    ASSERT_EQ(T->getLastFrame()->id(), F1->id());
 
     F1->remove(); // KF
     if (debug) P->print(2,0,0,0);
-    ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 0);
+    ASSERT_EQ(T->getFrameMap().             size(), (SizeStd) 0);
     std::cout << __LINE__ << std::endl;
 
     N.update();
diff --git a/test/gtest_tree_manager_sliding_window.cpp b/test/gtest_tree_manager_sliding_window.cpp
index a92607e2d..b8ff8240e 100644
--- a/test/gtest_tree_manager_sliding_window.cpp
+++ b/test/gtest_tree_manager_sliding_window.cpp
@@ -79,7 +79,7 @@ TEST(TreeManagerSlidingWindow, slidingWindowFixViral)
     P->applyPriorOptions(0);
 
     // FRAME 1 ----------------------------------------------------------
-    auto F1 = P->getTrajectory()->getLastKeyFrame();
+    auto F1 = P->getTrajectory()->getLastFrame();
     ASSERT_TRUE(F1 != nullptr);
 
     Vector7d state = F1->getStateVector();
@@ -175,7 +175,7 @@ TEST(TreeManagerSlidingWindow, slidingWindowNoFixNoViral)
     P->applyPriorOptions(0);
 
     // FRAME 1 (prior) ----------------------------------------------------------
-    auto F1 = P->getTrajectory()->getLastKeyFrame();
+    auto F1 = P->getTrajectory()->getLastFrame();
     ASSERT_TRUE(F1 != nullptr);
 
     Vector7d state = F1->getStateVector();
-- 
GitLab