2424#include < mutex>
2525#include < thread>
2626
27+ #include " ImprovedTypes.hpp"
2728#include " Converter.h"
2829#include " G2oTypes.h"
2930#include " ORBmatcher.h"
3233
3334namespace ORB_SLAM3 {
3435
35- LoopClosing::LoopClosing (Atlas* pAtlas, KeyFrameDatabase* pDB,
36+ LoopClosing::LoopClosing (const Atlas_ptr & pAtlas, KeyFrameDatabase* pDB,
3637 ORBVocabulary* pVoc, const bool bFixScale,
3738 const bool bActiveLC)
3839 :
@@ -108,9 +109,9 @@ void LoopClosing::Run() {
108109#endif
109110 if (bFindedRegion) {
110111 if (mbMergeDetected) {
111- if ((mpTracker->mSensor == System ::IMU_MONOCULAR ||
112- mpTracker->mSensor == System ::IMU_STEREO ||
113- mpTracker->mSensor == System ::IMU_RGBD) &&
112+ if ((mpTracker->mSensor == CameraType ::IMU_MONOCULAR ||
113+ mpTracker->mSensor == CameraType ::IMU_STEREO ||
114+ mpTracker->mSensor == CameraType ::IMU_RGBD) &&
114115 (!mpCurrentKF->GetMap ()->isImuInitialized ())) {
115116 cout << " IMU is not initilized, merge is aborted" << endl;
116117 } else {
@@ -139,9 +140,9 @@ void LoopClosing::Run() {
139140 continue ;
140141 }
141142 // If inertial, force only yaw
142- if ((mpTracker->mSensor == System ::IMU_MONOCULAR ||
143- mpTracker->mSensor == System ::IMU_STEREO ||
144- mpTracker->mSensor == System ::IMU_RGBD) &&
143+ if ((mpTracker->mSensor == CameraType ::IMU_MONOCULAR ||
144+ mpTracker->mSensor == CameraType ::IMU_STEREO ||
145+ mpTracker->mSensor == CameraType ::IMU_RGBD) &&
145146 mpCurrentKF->GetMap ()->GetIniertialBA1 ()) {
146147 Eigen::Vector3d phi =
147148 LogSO3 (mSold_new .rotation ().toRotationMatrix ());
@@ -167,9 +168,9 @@ void LoopClosing::Run() {
167168 nMerges += 1 ;
168169#endif
169170 // TODO UNCOMMENT
170- if (mpTracker->mSensor == System ::IMU_MONOCULAR ||
171- mpTracker->mSensor == System ::IMU_STEREO ||
172- mpTracker->mSensor == System ::IMU_RGBD)
171+ if (mpTracker->mSensor == CameraType ::IMU_MONOCULAR ||
172+ mpTracker->mSensor == CameraType ::IMU_STEREO ||
173+ mpTracker->mSensor == CameraType ::IMU_RGBD)
173174 MergeLocal2 ();
174175 else
175176 MergeLocal ();
@@ -235,9 +236,9 @@ void LoopClosing::Run() {
235236 fabs (phi (2 )) < 0 .349f ) {
236237 if (mpCurrentKF->GetMap ()->IsInertial ()) {
237238 // If inertial, force only yaw
238- if ((mpTracker->mSensor == System ::IMU_MONOCULAR ||
239- mpTracker->mSensor == System ::IMU_STEREO ||
240- mpTracker->mSensor == System ::IMU_RGBD) &&
239+ if ((mpTracker->mSensor == CameraType ::IMU_MONOCULAR ||
240+ mpTracker->mSensor == CameraType ::IMU_STEREO ||
241+ mpTracker->mSensor == CameraType ::IMU_RGBD) &&
241242 mpCurrentKF->GetMap ()->GetIniertialBA2 ()) {
242243 phi (0 ) = 0 ;
243244 phi (1 ) = 0 ;
@@ -337,7 +338,7 @@ bool LoopClosing::NewDetectCommonRegions() {
337338 return false ;
338339 }
339340
340- if (mpTracker->mSensor == System ::STEREO &&
341+ if (mpTracker->mSensor == CameraType ::STEREO &&
341342 mpLastMap->GetAllKeyFrames ().size () < 5 ) // 12
342343 {
343344 // cout << "LoopClousure: Stereo KF inserted without check: " <<
@@ -558,7 +559,7 @@ bool LoopClosing::DetectAndReffineSim3FromLastKF(
558559
559560 bool bFixedScale =
560561 mbFixScale; // TODO CHECK; Solo para el monocular inertial
561- if (mpTracker->mSensor == System ::IMU_MONOCULAR &&
562+ if (mpTracker->mSensor == CameraType ::IMU_MONOCULAR &&
562563 !pCurrentKF->GetMap ()->GetIniertialBA2 ())
563564 bFixedScale = false ;
564565 int numOptMatches =
@@ -697,7 +698,7 @@ bool LoopClosing::DetectCommonRegionsFromBoW(
697698 {
698699 // Geometric validation
699700 bool bFixedScale = mbFixScale;
700- if (mpTracker->mSensor == System ::IMU_MONOCULAR &&
701+ if (mpTracker->mSensor == CameraType ::IMU_MONOCULAR &&
701702 !mpCurrentKF->GetMap ()->GetIniertialBA2 ())
702703 bFixedScale = false ;
703704
@@ -781,7 +782,7 @@ bool LoopClosing::DetectCommonRegionsFromBoW(
781782
782783 /* The bool below ('bFixedScale') is UNUSED and since all function calls below do not change state. this is not needed.
783784 bool bFixedScale = mbFixScale;
784- if(mpTracker->mSensor==System ::IMU_MONOCULAR && !mpCurrentKF->GetMap()->GetIniertialBA2())
785+ if(mpTracker->mSensor==CameraType ::IMU_MONOCULAR && !mpCurrentKF->GetMap()->GetIniertialBA2())
785786 bFixedScale=false;
786787 */
787788
@@ -1181,7 +1182,7 @@ void LoopClosing::CorrectLoop() {
11811182 // Optimize graph
11821183 bool bFixedScale = mbFixScale;
11831184 // TODO CHECK; Solo para el monocular inertial
1184- if (mpTracker->mSensor == System ::IMU_MONOCULAR &&
1185+ if (mpTracker->mSensor == CameraType ::IMU_MONOCULAR &&
11851186 !mpCurrentKF->GetMap ()->GetIniertialBA2 ())
11861187 bFixedScale = false ;
11871188
@@ -1642,9 +1643,9 @@ void LoopClosing::MergeLocal() {
16421643 std::back_inserter (vpLocalCurrentWindowKFs));
16431644 std::copy (spMergeConnectedKFs.begin (), spMergeConnectedKFs.end (),
16441645 std::back_inserter (vpMergeConnectedKFs));
1645- if (mpTracker->mSensor == System ::IMU_MONOCULAR ||
1646- mpTracker->mSensor == System ::IMU_STEREO ||
1647- mpTracker->mSensor == System ::IMU_RGBD) {
1646+ if (mpTracker->mSensor == CameraType ::IMU_MONOCULAR ||
1647+ mpTracker->mSensor == CameraType ::IMU_STEREO ||
1648+ mpTracker->mSensor == CameraType ::IMU_RGBD) {
16481649 Optimizer::MergeInertialBA (mpCurrentKF, mpMergeMatchedKF, &bStop,
16491650 pCurrentMap, vCorrectedSim3);
16501651 } else {
@@ -1673,7 +1674,7 @@ void LoopClosing::MergeLocal() {
16731674
16741675 if (vpCurrentMapKFs.size () == 0 ) {
16751676 } else {
1676- if (mpTracker->mSensor == System ::MONOCULAR) {
1677+ if (mpTracker->mSensor == CameraType ::MONOCULAR) {
16771678 unique_lock<mutex> currentLock (
16781679 pCurrentMap->mMutexMapUpdate ); // We update the current map with the
16791680 // Merge information
@@ -1742,7 +1743,7 @@ void LoopClosing::MergeLocal() {
17421743
17431744 // Optimize graph (and update the loop position for each element form the
17441745 // begining to the end)
1745- if (mpTracker->mSensor != System ::MONOCULAR) {
1746+ if (mpTracker->mSensor != CameraType ::MONOCULAR) {
17461747 Optimizer::OptimizeEssentialGraph (mpCurrentKF, vpMergeConnectedKFs,
17471748 vpLocalCurrentWindowKFs,
17481749 vpCurrentMapKFs, vpCurrentMapMPs);
@@ -1890,9 +1891,9 @@ void LoopClosing::MergeLocal2() {
18901891
18911892 const int numKFnew = pCurrentMap->KeyFramesInMap ();
18921893
1893- if ((mpTracker->mSensor == System ::IMU_MONOCULAR ||
1894- mpTracker->mSensor == System ::IMU_STEREO ||
1895- mpTracker->mSensor == System ::IMU_RGBD) &&
1894+ if ((mpTracker->mSensor == CameraType ::IMU_MONOCULAR ||
1895+ mpTracker->mSensor == CameraType ::IMU_STEREO ||
1896+ mpTracker->mSensor == CameraType ::IMU_RGBD) &&
18961897 !pCurrentMap->GetIniertialBA2 ()) {
18971898 // Map is not completly initialized
18981899 Eigen::Vector3d bg, ba;
0 commit comments