Last active
September 23, 2021 11:33
-
-
Save RomanVolkov/c93bd36c4744286dd66b15a72399d7ac to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/CMakeLists.txt b/CMakeLists.txt | |
index 1f7c65b..950068c 100644 | |
--- a/CMakeLists.txt | |
+++ b/CMakeLists.txt | |
@@ -45,7 +45,7 @@ MESSAGE("OPENCV VERSION:") | |
MESSAGE(${OpenCV_VERSION}) | |
find_package(Eigen3 3.1.0 REQUIRED) | |
-find_package(Pangolin REQUIRED) | |
+#find_package(Pangolin REQUIRED) | |
include_directories( | |
${PROJECT_SOURCE_DIR} | |
diff --git a/build.sh b/build.sh | |
index 9aadf59..343b50b 100755 | |
--- a/build.sh | |
+++ b/build.sh | |
@@ -4,7 +4,7 @@ cd Thirdparty/DBoW2 | |
mkdir build | |
cd build | |
cmake .. -DCMAKE_BUILD_TYPE=Release | |
-make -j | |
+make | |
cd ../../g2o | |
@@ -13,7 +13,7 @@ echo "Configuring and building Thirdparty/g2o ..." | |
mkdir build | |
cd build | |
cmake .. -DCMAKE_BUILD_TYPE=Release | |
-make -j | |
+make | |
cd ../../../ | |
@@ -28,4 +28,4 @@ echo "Configuring and building ORB_SLAM3 ..." | |
mkdir build | |
cd build | |
cmake .. -DCMAKE_BUILD_TYPE=Release | |
-make -j | |
+make | |
diff --git a/include/LoopClosing.h b/include/LoopClosing.h | |
index 215b80a..5a3ffc8 100644 | |
--- a/include/LoopClosing.h | |
+++ b/include/LoopClosing.h | |
@@ -47,8 +47,7 @@ class LoopClosing | |
public: | |
typedef pair<set<KeyFrame*>,int> ConsistentGroup; | |
- typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>, | |
- Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose; | |
+ typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>> KeyFrameAndPose; | |
public: | |
diff --git a/include/Map.h b/include/Map.h | |
index 00396ba..780c17a 100644 | |
--- a/include/Map.h | |
+++ b/include/Map.h | |
@@ -24,7 +24,7 @@ | |
#include "KeyFrame.h" | |
#include <set> | |
-#include <pangolin/pangolin.h> | |
+// #include <pangolin/pangolin.h> | |
#include <mutex> | |
#include <boost/serialization/base_object.hpp> | |
@@ -186,8 +186,8 @@ protected: | |
int mnBigChangeIdx; | |
- // View of the map in aerial sight (for the AtlasViewer) | |
- GLubyte* mThumbnail; | |
+ // // View of the map in aerial sight (for the AtlasViewer) | |
+ // GLubyte* mThumbnail; | |
bool mIsInUse; | |
bool mHasTumbnail; | |
diff --git a/include/MapDrawer.h b/include/MapDrawer.h | |
index 88f256a..8e8caf2 100644 | |
--- a/include/MapDrawer.h | |
+++ b/include/MapDrawer.h | |
@@ -23,7 +23,7 @@ | |
#include"Atlas.h" | |
#include"MapPoint.h" | |
#include"KeyFrame.h" | |
-#include<pangolin/pangolin.h> | |
+// #include<pangolin/pangolin.h> | |
#include<mutex> | |
@@ -39,11 +39,11 @@ public: | |
void DrawMapPoints(); | |
void DrawKeyFrames(const bool bDrawKF, const bool bDrawGraph, const bool bDrawInertialGraph); | |
- void DrawCurrentCamera(pangolin::OpenGlMatrix &Twc); | |
+ // void DrawCurrentCamera(pangolin::OpenGlMatrix &Twc); | |
void SetCurrentCameraPose(const cv::Mat &Tcw); | |
void SetReferenceKeyFrame(KeyFrame *pKF); | |
- void GetCurrentOpenGLCameraMatrix(pangolin::OpenGlMatrix &M, pangolin::OpenGlMatrix &MOw); | |
- void GetCurrentOpenGLCameraMatrix(pangolin::OpenGlMatrix &M, pangolin::OpenGlMatrix &MOw, pangolin::OpenGlMatrix &MTwwp); | |
+ // void GetCurrentOpenGLCameraMatrix(pangolin::OpenGlMatrix &M, pangolin::OpenGlMatrix &MOw); | |
+ // void GetCurrentOpenGLCameraMatrix(pangolin::OpenGlMatrix &M, pangolin::OpenGlMatrix &MOw, pangolin::OpenGlMatrix &MTwwp); | |
private: | |
diff --git a/src/Map.cc b/src/Map.cc | |
index 9e5cf7b..76c5eed 100644 | |
--- a/src/Map.cc | |
+++ b/src/Map.cc | |
@@ -30,7 +30,7 @@ Map::Map():mnMaxKFid(0),mnBigChangeIdx(0), mbImuInitialized(false), mnMapChange( | |
mbFail(false), mIsInUse(false), mHasTumbnail(false), mbBad(false), mnMapChangeNotified(0), mbIsInertial(false), mbIMU_BA1(false), mbIMU_BA2(false) | |
{ | |
mnId=nNextId++; | |
- mThumbnail = static_cast<GLubyte*>(NULL); | |
+ //mThumbnail = static_cast<GLubyte*>(NULL); | |
} | |
Map::Map(int initKFid):mnInitKFid(initKFid), mnMaxKFid(initKFid),mnLastLoopKFid(initKFid), mnBigChangeIdx(0), mIsInUse(false), | |
@@ -38,7 +38,7 @@ Map::Map(int initKFid):mnInitKFid(initKFid), mnMaxKFid(initKFid),mnLastLoopKFid( | |
mnMapChange(0), mbFail(false), mnMapChangeNotified(0), mbIsInertial(false), mbIMU_BA1(false), mbIMU_BA2(false) | |
{ | |
mnId=nNextId++; | |
- mThumbnail = static_cast<GLubyte*>(NULL); | |
+ //mThumbnail = static_cast<GLubyte*>(NULL); | |
} | |
Map::~Map() | |
@@ -49,9 +49,9 @@ Map::~Map() | |
//TODO: erase all keyframes from memory | |
mspKeyFrames.clear(); | |
- if(mThumbnail) | |
- delete mThumbnail; | |
- mThumbnail = static_cast<GLubyte*>(NULL); | |
+ //if(mThumbnail) | |
+ // delete mThumbnail; | |
+ //mThumbnail = static_cast<GLubyte*>(NULL); | |
mvpReferenceMapPoints.clear(); | |
mvpKeyFrameOrigins.clear(); | |
diff --git a/src/MapDrawer.cc b/src/MapDrawer.cc | |
index 1331a9b..146c099 100644 | |
--- a/src/MapDrawer.cc | |
+++ b/src/MapDrawer.cc | |
@@ -20,7 +20,7 @@ | |
#include "MapDrawer.h" | |
#include "MapPoint.h" | |
#include "KeyFrame.h" | |
-#include <pangolin/pangolin.h> | |
+// #include <pangolin/pangolin.h> | |
#include <mutex> | |
namespace ORB_SLAM3 | |
@@ -122,309 +122,309 @@ bool MapDrawer::ParseViewerParamFile(cv::FileStorage &fSettings) | |
void MapDrawer::DrawMapPoints() | |
{ | |
- const vector<MapPoint*> &vpMPs = mpAtlas->GetAllMapPoints(); | |
- const vector<MapPoint*> &vpRefMPs = mpAtlas->GetReferenceMapPoints(); | |
+ // const vector<MapPoint*> &vpMPs = mpAtlas->GetAllMapPoints(); | |
+ // const vector<MapPoint*> &vpRefMPs = mpAtlas->GetReferenceMapPoints(); | |
- set<MapPoint*> spRefMPs(vpRefMPs.begin(), vpRefMPs.end()); | |
+ // set<MapPoint*> spRefMPs(vpRefMPs.begin(), vpRefMPs.end()); | |
- if(vpMPs.empty()) | |
- return; | |
+ // if(vpMPs.empty()) | |
+ // return; | |
- glPointSize(mPointSize); | |
- glBegin(GL_POINTS); | |
- glColor3f(0.0,0.0,0.0); | |
+ // glPointSize(mPointSize); | |
+ // glBegin(GL_POINTS); | |
+ // glColor3f(0.0,0.0,0.0); | |
- for(size_t i=0, iend=vpMPs.size(); i<iend;i++) | |
- { | |
- if(vpMPs[i]->isBad() || spRefMPs.count(vpMPs[i])) | |
- continue; | |
- cv::Mat pos = vpMPs[i]->GetWorldPos(); | |
- glVertex3f(pos.at<float>(0),pos.at<float>(1),pos.at<float>(2)); | |
- } | |
- glEnd(); | |
+ // for(size_t i=0, iend=vpMPs.size(); i<iend;i++) | |
+ // { | |
+ // if(vpMPs[i]->isBad() || spRefMPs.count(vpMPs[i])) | |
+ // continue; | |
+ // cv::Mat pos = vpMPs[i]->GetWorldPos(); | |
+ // glVertex3f(pos.at<float>(0),pos.at<float>(1),pos.at<float>(2)); | |
+ // } | |
+ // glEnd(); | |
- glPointSize(mPointSize); | |
- glBegin(GL_POINTS); | |
- glColor3f(1.0,0.0,0.0); | |
+ // glPointSize(mPointSize); | |
+ // glBegin(GL_POINTS); | |
+ // glColor3f(1.0,0.0,0.0); | |
- for(set<MapPoint*>::iterator sit=spRefMPs.begin(), send=spRefMPs.end(); sit!=send; sit++) | |
- { | |
- if((*sit)->isBad()) | |
- continue; | |
- cv::Mat pos = (*sit)->GetWorldPos(); | |
- glVertex3f(pos.at<float>(0),pos.at<float>(1),pos.at<float>(2)); | |
+ // for(set<MapPoint*>::iterator sit=spRefMPs.begin(), send=spRefMPs.end(); sit!=send; sit++) | |
+ // { | |
+ // if((*sit)->isBad()) | |
+ // continue; | |
+ // cv::Mat pos = (*sit)->GetWorldPos(); | |
+ // glVertex3f(pos.at<float>(0),pos.at<float>(1),pos.at<float>(2)); | |
- } | |
+ // } | |
- glEnd(); | |
+ // glEnd(); | |
} | |
void MapDrawer::DrawKeyFrames(const bool bDrawKF, const bool bDrawGraph, const bool bDrawInertialGraph) | |
{ | |
- const float &w = mKeyFrameSize; | |
- const float h = w*0.75; | |
- const float z = w*0.6; | |
- | |
- const vector<KeyFrame*> vpKFs = mpAtlas->GetAllKeyFrames(); | |
- | |
- if(bDrawKF) | |
- { | |
- for(size_t i=0; i<vpKFs.size(); i++) | |
- { | |
- KeyFrame* pKF = vpKFs[i]; | |
- cv::Mat Twc = pKF->GetPoseInverse().t(); | |
- unsigned int index_color = pKF->mnOriginMapId; | |
- | |
- glPushMatrix(); | |
- | |
- glMultMatrixf(Twc.ptr<GLfloat>(0)); | |
- | |
- if(!pKF->GetParent()) // It is the first KF in the map | |
- { | |
- glLineWidth(mKeyFrameLineWidth*5); | |
- glColor3f(1.0f,0.0f,0.0f); | |
- glBegin(GL_LINES); | |
- | |
- //cout << "Initial KF: " << mpAtlas->GetCurrentMap()->GetOriginKF()->mnId << endl; | |
- //cout << "Parent KF: " << vpKFs[i]->mnId << endl; | |
- } | |
- else | |
- { | |
- glLineWidth(mKeyFrameLineWidth); | |
- //glColor3f(0.0f,0.0f,1.0f); | |
- glColor3f(mfFrameColors[index_color][0],mfFrameColors[index_color][1],mfFrameColors[index_color][2]); | |
- glBegin(GL_LINES); | |
- } | |
- | |
- glVertex3f(0,0,0); | |
- glVertex3f(w,h,z); | |
- glVertex3f(0,0,0); | |
- glVertex3f(w,-h,z); | |
- glVertex3f(0,0,0); | |
- glVertex3f(-w,-h,z); | |
- glVertex3f(0,0,0); | |
- glVertex3f(-w,h,z); | |
- | |
- glVertex3f(w,h,z); | |
- glVertex3f(w,-h,z); | |
- | |
- glVertex3f(-w,h,z); | |
- glVertex3f(-w,-h,z); | |
- | |
- glVertex3f(-w,h,z); | |
- glVertex3f(w,h,z); | |
- | |
- glVertex3f(-w,-h,z); | |
- glVertex3f(w,-h,z); | |
- glEnd(); | |
- | |
- glPopMatrix(); | |
- | |
- //Draw lines with Loop and Merge candidates | |
- /*glLineWidth(mGraphLineWidth); | |
- glColor4f(1.0f,0.6f,0.0f,1.0f); | |
- glBegin(GL_LINES); | |
- cv::Mat Ow = pKF->GetCameraCenter(); | |
- const vector<KeyFrame*> vpLoopCandKFs = pKF->mvpLoopCandKFs; | |
- if(!vpLoopCandKFs.empty()) | |
- { | |
- for(vector<KeyFrame*>::const_iterator vit=vpLoopCandKFs.begin(), vend=vpLoopCandKFs.end(); vit!=vend; vit++) | |
- { | |
- cv::Mat Ow2 = (*vit)->GetCameraCenter(); | |
- glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
- glVertex3f(Ow2.at<float>(0),Ow2.at<float>(1),Ow2.at<float>(2)); | |
- } | |
- } | |
- const vector<KeyFrame*> vpMergeCandKFs = pKF->mvpMergeCandKFs; | |
- if(!vpMergeCandKFs.empty()) | |
- { | |
- for(vector<KeyFrame*>::const_iterator vit=vpMergeCandKFs.begin(), vend=vpMergeCandKFs.end(); vit!=vend; vit++) | |
- { | |
- cv::Mat Ow2 = (*vit)->GetCameraCenter(); | |
- glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
- glVertex3f(Ow2.at<float>(0),Ow2.at<float>(1),Ow2.at<float>(2)); | |
- } | |
- }*/ | |
- | |
- glEnd(); | |
- } | |
- } | |
+ // const float &w = mKeyFrameSize; | |
+ // const float h = w*0.75; | |
+ // const float z = w*0.6; | |
+ | |
+ // const vector<KeyFrame*> vpKFs = mpAtlas->GetAllKeyFrames(); | |
+ | |
+ // if(bDrawKF) | |
+ // { | |
+ // for(size_t i=0; i<vpKFs.size(); i++) | |
+ // { | |
+ // KeyFrame* pKF = vpKFs[i]; | |
+ // cv::Mat Twc = pKF->GetPoseInverse().t(); | |
+ // unsigned int index_color = pKF->mnOriginMapId; | |
+ | |
+ // glPushMatrix(); | |
+ | |
+ // glMultMatrixf(Twc.ptr<GLfloat>(0)); | |
+ | |
+ // if(!pKF->GetParent()) // It is the first KF in the map | |
+ // { | |
+ // glLineWidth(mKeyFrameLineWidth*5); | |
+ // glColor3f(1.0f,0.0f,0.0f); | |
+ // glBegin(GL_LINES); | |
+ | |
+ // //cout << "Initial KF: " << mpAtlas->GetCurrentMap()->GetOriginKF()->mnId << endl; | |
+ // //cout << "Parent KF: " << vpKFs[i]->mnId << endl; | |
+ // } | |
+ // else | |
+ // { | |
+ // glLineWidth(mKeyFrameLineWidth); | |
+ // //glColor3f(0.0f,0.0f,1.0f); | |
+ // glColor3f(mfFrameColors[index_color][0],mfFrameColors[index_color][1],mfFrameColors[index_color][2]); | |
+ // glBegin(GL_LINES); | |
+ // } | |
+ | |
+ // glVertex3f(0,0,0); | |
+ // glVertex3f(w,h,z); | |
+ // glVertex3f(0,0,0); | |
+ // glVertex3f(w,-h,z); | |
+ // glVertex3f(0,0,0); | |
+ // glVertex3f(-w,-h,z); | |
+ // glVertex3f(0,0,0); | |
+ // glVertex3f(-w,h,z); | |
+ | |
+ // glVertex3f(w,h,z); | |
+ // glVertex3f(w,-h,z); | |
+ | |
+ // glVertex3f(-w,h,z); | |
+ // glVertex3f(-w,-h,z); | |
+ | |
+ // glVertex3f(-w,h,z); | |
+ // glVertex3f(w,h,z); | |
+ | |
+ // glVertex3f(-w,-h,z); | |
+ // glVertex3f(w,-h,z); | |
+ // glEnd(); | |
+ | |
+ // glPopMatrix(); | |
+ | |
+ // //Draw lines with Loop and Merge candidates | |
+ // /*glLineWidth(mGraphLineWidth); | |
+ // glColor4f(1.0f,0.6f,0.0f,1.0f); | |
+ // glBegin(GL_LINES); | |
+ // cv::Mat Ow = pKF->GetCameraCenter(); | |
+ // const vector<KeyFrame*> vpLoopCandKFs = pKF->mvpLoopCandKFs; | |
+ // if(!vpLoopCandKFs.empty()) | |
+ // { | |
+ // for(vector<KeyFrame*>::const_iterator vit=vpLoopCandKFs.begin(), vend=vpLoopCandKFs.end(); vit!=vend; vit++) | |
+ // { | |
+ // cv::Mat Ow2 = (*vit)->GetCameraCenter(); | |
+ // glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
+ // glVertex3f(Ow2.at<float>(0),Ow2.at<float>(1),Ow2.at<float>(2)); | |
+ // } | |
+ // } | |
+ // const vector<KeyFrame*> vpMergeCandKFs = pKF->mvpMergeCandKFs; | |
+ // if(!vpMergeCandKFs.empty()) | |
+ // { | |
+ // for(vector<KeyFrame*>::const_iterator vit=vpMergeCandKFs.begin(), vend=vpMergeCandKFs.end(); vit!=vend; vit++) | |
+ // { | |
+ // cv::Mat Ow2 = (*vit)->GetCameraCenter(); | |
+ // glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
+ // glVertex3f(Ow2.at<float>(0),Ow2.at<float>(1),Ow2.at<float>(2)); | |
+ // } | |
+ // }*/ | |
+ | |
+ // glEnd(); | |
+ // } | |
+ // } | |
+ | |
+ // if(bDrawGraph) | |
+ // { | |
+ // glLineWidth(mGraphLineWidth); | |
+ // glColor4f(0.0f,1.0f,0.0f,0.6f); | |
+ // glBegin(GL_LINES); | |
+ | |
+ // // cout << "-----------------Draw graph-----------------" << endl; | |
+ // for(size_t i=0; i<vpKFs.size(); i++) | |
+ // { | |
+ // // Covisibility Graph | |
+ // const vector<KeyFrame*> vCovKFs = vpKFs[i]->GetCovisiblesByWeight(100); | |
+ // cv::Mat Ow = vpKFs[i]->GetCameraCenter(); | |
+ // if(!vCovKFs.empty()) | |
+ // { | |
+ // for(vector<KeyFrame*>::const_iterator vit=vCovKFs.begin(), vend=vCovKFs.end(); vit!=vend; vit++) | |
+ // { | |
+ // if((*vit)->mnId<vpKFs[i]->mnId) | |
+ // continue; | |
+ // cv::Mat Ow2 = (*vit)->GetCameraCenter(); | |
+ // glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
+ // glVertex3f(Ow2.at<float>(0),Ow2.at<float>(1),Ow2.at<float>(2)); | |
+ // } | |
+ // } | |
+ | |
+ // // Spanning tree | |
+ // KeyFrame* pParent = vpKFs[i]->GetParent(); | |
+ // if(pParent) | |
+ // { | |
+ // cv::Mat Owp = pParent->GetCameraCenter(); | |
+ // glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
+ // glVertex3f(Owp.at<float>(0),Owp.at<float>(1),Owp.at<float>(2)); | |
+ // } | |
+ | |
+ // // Loops | |
+ // set<KeyFrame*> sLoopKFs = vpKFs[i]->GetLoopEdges(); | |
+ // for(set<KeyFrame*>::iterator sit=sLoopKFs.begin(), send=sLoopKFs.end(); sit!=send; sit++) | |
+ // { | |
+ // if((*sit)->mnId<vpKFs[i]->mnId) | |
+ // continue; | |
+ // cv::Mat Owl = (*sit)->GetCameraCenter(); | |
+ // glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
+ // glVertex3f(Owl.at<float>(0),Owl.at<float>(1),Owl.at<float>(2)); | |
+ // } | |
+ // } | |
+ | |
+ // glEnd(); | |
+ // } | |
+ | |
+ // if(bDrawInertialGraph && mpAtlas->isImuInitialized()) | |
+ // { | |
+ // glLineWidth(mGraphLineWidth); | |
+ // glColor4f(1.0f,0.0f,0.0f,0.6f); | |
+ // glBegin(GL_LINES); | |
+ | |
+ // //Draw inertial links | |
+ // for(size_t i=0; i<vpKFs.size(); i++) | |
+ // { | |
+ // KeyFrame* pKFi = vpKFs[i]; | |
+ // cv::Mat Ow = pKFi->GetCameraCenter(); | |
+ // KeyFrame* pNext = pKFi->mNextKF; | |
+ // if(pNext) | |
+ // { | |
+ // cv::Mat Owp = pNext->GetCameraCenter(); | |
+ // glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
+ // glVertex3f(Owp.at<float>(0),Owp.at<float>(1),Owp.at<float>(2)); | |
+ // } | |
+ // } | |
+ | |
+ // glEnd(); | |
+ // } | |
+ | |
+ // vector<Map*> vpMaps = mpAtlas->GetAllMaps(); | |
+ | |
+ // if(bDrawKF) | |
+ // { | |
+ // for(Map* pMap : vpMaps) | |
+ // { | |
+ // if(pMap == mpAtlas->GetCurrentMap()) | |
+ // continue; | |
+ | |
+ // vector<KeyFrame*> vpKFs = pMap->GetAllKeyFrames(); | |
+ | |
+ // for(size_t i=0; i<vpKFs.size(); i++) | |
+ // { | |
+ // KeyFrame* pKF = vpKFs[i]; | |
+ // cv::Mat Twc = pKF->GetPoseInverse().t(); | |
+ // unsigned int index_color = pKF->mnOriginMapId; | |
+ | |
+ // glPushMatrix(); | |
+ | |
+ // glMultMatrixf(Twc.ptr<GLfloat>(0)); | |
+ | |
+ // if(!vpKFs[i]->GetParent()) // It is the first KF in the map | |
+ // { | |
+ // glLineWidth(mKeyFrameLineWidth*5); | |
+ // glColor3f(1.0f,0.0f,0.0f); | |
+ // glBegin(GL_LINES); | |
+ // } | |
+ // else | |
+ // { | |
+ // glLineWidth(mKeyFrameLineWidth); | |
+ // //glColor3f(0.0f,0.0f,1.0f); | |
+ // glColor3f(mfFrameColors[index_color][0],mfFrameColors[index_color][1],mfFrameColors[index_color][2]); | |
+ // glBegin(GL_LINES); | |
+ // } | |
+ | |
+ // glVertex3f(0,0,0); | |
+ // glVertex3f(w,h,z); | |
+ // glVertex3f(0,0,0); | |
+ // glVertex3f(w,-h,z); | |
+ // glVertex3f(0,0,0); | |
+ // glVertex3f(-w,-h,z); | |
+ // glVertex3f(0,0,0); | |
+ // glVertex3f(-w,h,z); | |
+ | |
+ // glVertex3f(w,h,z); | |
+ // glVertex3f(w,-h,z); | |
+ | |
+ // glVertex3f(-w,h,z); | |
+ // glVertex3f(-w,-h,z); | |
+ | |
+ // glVertex3f(-w,h,z); | |
+ // glVertex3f(w,h,z); | |
+ | |
+ // glVertex3f(-w,-h,z); | |
+ // glVertex3f(w,-h,z); | |
+ // glEnd(); | |
+ | |
+ // glPopMatrix(); | |
+ // } | |
+ // } | |
+ // } | |
+} | |
- if(bDrawGraph) | |
- { | |
- glLineWidth(mGraphLineWidth); | |
- glColor4f(0.0f,1.0f,0.0f,0.6f); | |
- glBegin(GL_LINES); | |
+// void MapDrawer::DrawCurrentCamera(pangolin::OpenGlMatrix &Twc) | |
+// { | |
+// const float &w = mCameraSize; | |
+// const float h = w*0.75; | |
+// const float z = w*0.6; | |
- // cout << "-----------------Draw graph-----------------" << endl; | |
- for(size_t i=0; i<vpKFs.size(); i++) | |
- { | |
- // Covisibility Graph | |
- const vector<KeyFrame*> vCovKFs = vpKFs[i]->GetCovisiblesByWeight(100); | |
- cv::Mat Ow = vpKFs[i]->GetCameraCenter(); | |
- if(!vCovKFs.empty()) | |
- { | |
- for(vector<KeyFrame*>::const_iterator vit=vCovKFs.begin(), vend=vCovKFs.end(); vit!=vend; vit++) | |
- { | |
- if((*vit)->mnId<vpKFs[i]->mnId) | |
- continue; | |
- cv::Mat Ow2 = (*vit)->GetCameraCenter(); | |
- glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
- glVertex3f(Ow2.at<float>(0),Ow2.at<float>(1),Ow2.at<float>(2)); | |
- } | |
- } | |
- | |
- // Spanning tree | |
- KeyFrame* pParent = vpKFs[i]->GetParent(); | |
- if(pParent) | |
- { | |
- cv::Mat Owp = pParent->GetCameraCenter(); | |
- glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
- glVertex3f(Owp.at<float>(0),Owp.at<float>(1),Owp.at<float>(2)); | |
- } | |
- | |
- // Loops | |
- set<KeyFrame*> sLoopKFs = vpKFs[i]->GetLoopEdges(); | |
- for(set<KeyFrame*>::iterator sit=sLoopKFs.begin(), send=sLoopKFs.end(); sit!=send; sit++) | |
- { | |
- if((*sit)->mnId<vpKFs[i]->mnId) | |
- continue; | |
- cv::Mat Owl = (*sit)->GetCameraCenter(); | |
- glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
- glVertex3f(Owl.at<float>(0),Owl.at<float>(1),Owl.at<float>(2)); | |
- } | |
- } | |
+// glPushMatrix(); | |
- glEnd(); | |
- } | |
+// #ifdef HAVE_GLES | |
+// glMultMatrixf(Twc.m); | |
+// #else | |
+// glMultMatrixd(Twc.m); | |
+// #endif | |
- if(bDrawInertialGraph && mpAtlas->isImuInitialized()) | |
- { | |
- glLineWidth(mGraphLineWidth); | |
- glColor4f(1.0f,0.0f,0.0f,0.6f); | |
- glBegin(GL_LINES); | |
+// glLineWidth(mCameraLineWidth); | |
+// glColor3f(0.0f,1.0f,0.0f); | |
+// glBegin(GL_LINES); | |
+// glVertex3f(0,0,0); | |
+// glVertex3f(w,h,z); | |
+// glVertex3f(0,0,0); | |
+// glVertex3f(w,-h,z); | |
+// glVertex3f(0,0,0); | |
+// glVertex3f(-w,-h,z); | |
+// glVertex3f(0,0,0); | |
+// glVertex3f(-w,h,z); | |
- //Draw inertial links | |
- for(size_t i=0; i<vpKFs.size(); i++) | |
- { | |
- KeyFrame* pKFi = vpKFs[i]; | |
- cv::Mat Ow = pKFi->GetCameraCenter(); | |
- KeyFrame* pNext = pKFi->mNextKF; | |
- if(pNext) | |
- { | |
- cv::Mat Owp = pNext->GetCameraCenter(); | |
- glVertex3f(Ow.at<float>(0),Ow.at<float>(1),Ow.at<float>(2)); | |
- glVertex3f(Owp.at<float>(0),Owp.at<float>(1),Owp.at<float>(2)); | |
- } | |
- } | |
+// glVertex3f(w,h,z); | |
+// glVertex3f(w,-h,z); | |
- glEnd(); | |
- } | |
+// glVertex3f(-w,h,z); | |
+// glVertex3f(-w,-h,z); | |
- vector<Map*> vpMaps = mpAtlas->GetAllMaps(); | |
+// glVertex3f(-w,h,z); | |
+// glVertex3f(w,h,z); | |
- if(bDrawKF) | |
- { | |
- for(Map* pMap : vpMaps) | |
- { | |
- if(pMap == mpAtlas->GetCurrentMap()) | |
- continue; | |
- | |
- vector<KeyFrame*> vpKFs = pMap->GetAllKeyFrames(); | |
- | |
- for(size_t i=0; i<vpKFs.size(); i++) | |
- { | |
- KeyFrame* pKF = vpKFs[i]; | |
- cv::Mat Twc = pKF->GetPoseInverse().t(); | |
- unsigned int index_color = pKF->mnOriginMapId; | |
- | |
- glPushMatrix(); | |
- | |
- glMultMatrixf(Twc.ptr<GLfloat>(0)); | |
- | |
- if(!vpKFs[i]->GetParent()) // It is the first KF in the map | |
- { | |
- glLineWidth(mKeyFrameLineWidth*5); | |
- glColor3f(1.0f,0.0f,0.0f); | |
- glBegin(GL_LINES); | |
- } | |
- else | |
- { | |
- glLineWidth(mKeyFrameLineWidth); | |
- //glColor3f(0.0f,0.0f,1.0f); | |
- glColor3f(mfFrameColors[index_color][0],mfFrameColors[index_color][1],mfFrameColors[index_color][2]); | |
- glBegin(GL_LINES); | |
- } | |
- | |
- glVertex3f(0,0,0); | |
- glVertex3f(w,h,z); | |
- glVertex3f(0,0,0); | |
- glVertex3f(w,-h,z); | |
- glVertex3f(0,0,0); | |
- glVertex3f(-w,-h,z); | |
- glVertex3f(0,0,0); | |
- glVertex3f(-w,h,z); | |
- | |
- glVertex3f(w,h,z); | |
- glVertex3f(w,-h,z); | |
- | |
- glVertex3f(-w,h,z); | |
- glVertex3f(-w,-h,z); | |
- | |
- glVertex3f(-w,h,z); | |
- glVertex3f(w,h,z); | |
- | |
- glVertex3f(-w,-h,z); | |
- glVertex3f(w,-h,z); | |
- glEnd(); | |
- | |
- glPopMatrix(); | |
- } | |
- } | |
- } | |
-} | |
+// glVertex3f(-w,-h,z); | |
+// glVertex3f(w,-h,z); | |
+// glEnd(); | |
-void MapDrawer::DrawCurrentCamera(pangolin::OpenGlMatrix &Twc) | |
-{ | |
- const float &w = mCameraSize; | |
- const float h = w*0.75; | |
- const float z = w*0.6; | |
- | |
- glPushMatrix(); | |
- | |
-#ifdef HAVE_GLES | |
- glMultMatrixf(Twc.m); | |
-#else | |
- glMultMatrixd(Twc.m); | |
-#endif | |
- | |
- glLineWidth(mCameraLineWidth); | |
- glColor3f(0.0f,1.0f,0.0f); | |
- glBegin(GL_LINES); | |
- glVertex3f(0,0,0); | |
- glVertex3f(w,h,z); | |
- glVertex3f(0,0,0); | |
- glVertex3f(w,-h,z); | |
- glVertex3f(0,0,0); | |
- glVertex3f(-w,-h,z); | |
- glVertex3f(0,0,0); | |
- glVertex3f(-w,h,z); | |
- | |
- glVertex3f(w,h,z); | |
- glVertex3f(w,-h,z); | |
- | |
- glVertex3f(-w,h,z); | |
- glVertex3f(-w,-h,z); | |
- | |
- glVertex3f(-w,h,z); | |
- glVertex3f(w,h,z); | |
- | |
- glVertex3f(-w,-h,z); | |
- glVertex3f(w,-h,z); | |
- glEnd(); | |
- | |
- glPopMatrix(); | |
-} | |
+// glPopMatrix(); | |
+// } | |
void MapDrawer::SetCurrentCameraPose(const cv::Mat &Tcw) | |
@@ -433,112 +433,112 @@ void MapDrawer::SetCurrentCameraPose(const cv::Mat &Tcw) | |
mCameraPose = Tcw.clone(); | |
} | |
-void MapDrawer::GetCurrentOpenGLCameraMatrix(pangolin::OpenGlMatrix &M, pangolin::OpenGlMatrix &MOw) | |
-{ | |
- if(!mCameraPose.empty()) | |
- { | |
- cv::Mat Rwc(3,3,CV_32F); | |
- cv::Mat twc(3,1,CV_32F); | |
- { | |
- unique_lock<mutex> lock(mMutexCamera); | |
- Rwc = mCameraPose.rowRange(0,3).colRange(0,3).t(); | |
- twc = -Rwc*mCameraPose.rowRange(0,3).col(3); | |
- } | |
- | |
- M.m[0] = Rwc.at<float>(0,0); | |
- M.m[1] = Rwc.at<float>(1,0); | |
- M.m[2] = Rwc.at<float>(2,0); | |
- M.m[3] = 0.0; | |
- | |
- M.m[4] = Rwc.at<float>(0,1); | |
- M.m[5] = Rwc.at<float>(1,1); | |
- M.m[6] = Rwc.at<float>(2,1); | |
- M.m[7] = 0.0; | |
- | |
- M.m[8] = Rwc.at<float>(0,2); | |
- M.m[9] = Rwc.at<float>(1,2); | |
- M.m[10] = Rwc.at<float>(2,2); | |
- M.m[11] = 0.0; | |
- | |
- M.m[12] = twc.at<float>(0); | |
- M.m[13] = twc.at<float>(1); | |
- M.m[14] = twc.at<float>(2); | |
- M.m[15] = 1.0; | |
- | |
- MOw.SetIdentity(); | |
- MOw.m[12] = twc.at<float>(0); | |
- MOw.m[13] = twc.at<float>(1); | |
- MOw.m[14] = twc.at<float>(2); | |
- } | |
- else | |
- { | |
- M.SetIdentity(); | |
- MOw.SetIdentity(); | |
- } | |
-} | |
- | |
-void MapDrawer::GetCurrentOpenGLCameraMatrix(pangolin::OpenGlMatrix &M, pangolin::OpenGlMatrix &MOw, pangolin::OpenGlMatrix &MTwwp) | |
-{ | |
- if(!mCameraPose.empty()) | |
- { | |
- cv::Mat Rwc(3,3,CV_32F); | |
- cv::Mat twc(3,1,CV_32F); | |
- cv::Mat Rwwp(3,3,CV_32F); | |
- { | |
- unique_lock<mutex> lock(mMutexCamera); | |
- Rwc = mCameraPose.rowRange(0,3).colRange(0,3).t(); | |
- twc = -Rwc*mCameraPose.rowRange(0,3).col(3); | |
- } | |
- | |
- M.m[0] = Rwc.at<float>(0,0); | |
- M.m[1] = Rwc.at<float>(1,0); | |
- M.m[2] = Rwc.at<float>(2,0); | |
- M.m[3] = 0.0; | |
- | |
- M.m[4] = Rwc.at<float>(0,1); | |
- M.m[5] = Rwc.at<float>(1,1); | |
- M.m[6] = Rwc.at<float>(2,1); | |
- M.m[7] = 0.0; | |
- | |
- M.m[8] = Rwc.at<float>(0,2); | |
- M.m[9] = Rwc.at<float>(1,2); | |
- M.m[10] = Rwc.at<float>(2,2); | |
- M.m[11] = 0.0; | |
- | |
- M.m[12] = twc.at<float>(0); | |
- M.m[13] = twc.at<float>(1); | |
- M.m[14] = twc.at<float>(2); | |
- M.m[15] = 1.0; | |
- | |
- MOw.SetIdentity(); | |
- MOw.m[12] = twc.at<float>(0); | |
- MOw.m[13] = twc.at<float>(1); | |
- MOw.m[14] = twc.at<float>(2); | |
- | |
- MTwwp.SetIdentity(); | |
- MTwwp.m[0] = Rwwp.at<float>(0,0); | |
- MTwwp.m[1] = Rwwp.at<float>(1,0); | |
- MTwwp.m[2] = Rwwp.at<float>(2,0); | |
- | |
- MTwwp.m[4] = Rwwp.at<float>(0,1); | |
- MTwwp.m[5] = Rwwp.at<float>(1,1); | |
- MTwwp.m[6] = Rwwp.at<float>(2,1); | |
- | |
- MTwwp.m[8] = Rwwp.at<float>(0,2); | |
- MTwwp.m[9] = Rwwp.at<float>(1,2); | |
- MTwwp.m[10] = Rwwp.at<float>(2,2); | |
- | |
- MTwwp.m[12] = twc.at<float>(0); | |
- MTwwp.m[13] = twc.at<float>(1); | |
- MTwwp.m[14] = twc.at<float>(2); | |
- } | |
- else | |
- { | |
- M.SetIdentity(); | |
- MOw.SetIdentity(); | |
- MTwwp.SetIdentity(); | |
- } | |
- | |
-} | |
+// void MapDrawer::GetCurrentOpenGLCameraMatrix(pangolin::OpenGlMatrix &M, pangolin::OpenGlMatrix &MOw) | |
+// { | |
+// if(!mCameraPose.empty()) | |
+// { | |
+// cv::Mat Rwc(3,3,CV_32F); | |
+// cv::Mat twc(3,1,CV_32F); | |
+// { | |
+// unique_lock<mutex> lock(mMutexCamera); | |
+// Rwc = mCameraPose.rowRange(0,3).colRange(0,3).t(); | |
+// twc = -Rwc*mCameraPose.rowRange(0,3).col(3); | |
+// } | |
+ | |
+// M.m[0] = Rwc.at<float>(0,0); | |
+// M.m[1] = Rwc.at<float>(1,0); | |
+// M.m[2] = Rwc.at<float>(2,0); | |
+// M.m[3] = 0.0; | |
+ | |
+// M.m[4] = Rwc.at<float>(0,1); | |
+// M.m[5] = Rwc.at<float>(1,1); | |
+// M.m[6] = Rwc.at<float>(2,1); | |
+// M.m[7] = 0.0; | |
+ | |
+// M.m[8] = Rwc.at<float>(0,2); | |
+// M.m[9] = Rwc.at<float>(1,2); | |
+// M.m[10] = Rwc.at<float>(2,2); | |
+// M.m[11] = 0.0; | |
+ | |
+// M.m[12] = twc.at<float>(0); | |
+// M.m[13] = twc.at<float>(1); | |
+// M.m[14] = twc.at<float>(2); | |
+// M.m[15] = 1.0; | |
+ | |
+// MOw.SetIdentity(); | |
+// MOw.m[12] = twc.at<float>(0); | |
+// MOw.m[13] = twc.at<float>(1); | |
+// MOw.m[14] = twc.at<float>(2); | |
+// } | |
+// else | |
+// { | |
+// M.SetIdentity(); | |
+// MOw.SetIdentity(); | |
+// } | |
+// } | |
+ | |
+// void MapDrawer::GetCurrentOpenGLCameraMatrix(pangolin::OpenGlMatrix &M, pangolin::OpenGlMatrix &MOw, pangolin::OpenGlMatrix &MTwwp) | |
+// { | |
+// if(!mCameraPose.empty()) | |
+// { | |
+// cv::Mat Rwc(3,3,CV_32F); | |
+// cv::Mat twc(3,1,CV_32F); | |
+// cv::Mat Rwwp(3,3,CV_32F); | |
+// { | |
+// unique_lock<mutex> lock(mMutexCamera); | |
+// Rwc = mCameraPose.rowRange(0,3).colRange(0,3).t(); | |
+// twc = -Rwc*mCameraPose.rowRange(0,3).col(3); | |
+// } | |
+ | |
+// M.m[0] = Rwc.at<float>(0,0); | |
+// M.m[1] = Rwc.at<float>(1,0); | |
+// M.m[2] = Rwc.at<float>(2,0); | |
+// M.m[3] = 0.0; | |
+ | |
+// M.m[4] = Rwc.at<float>(0,1); | |
+// M.m[5] = Rwc.at<float>(1,1); | |
+// M.m[6] = Rwc.at<float>(2,1); | |
+// M.m[7] = 0.0; | |
+ | |
+// M.m[8] = Rwc.at<float>(0,2); | |
+// M.m[9] = Rwc.at<float>(1,2); | |
+// M.m[10] = Rwc.at<float>(2,2); | |
+// M.m[11] = 0.0; | |
+ | |
+// M.m[12] = twc.at<float>(0); | |
+// M.m[13] = twc.at<float>(1); | |
+// M.m[14] = twc.at<float>(2); | |
+// M.m[15] = 1.0; | |
+ | |
+// MOw.SetIdentity(); | |
+// MOw.m[12] = twc.at<float>(0); | |
+// MOw.m[13] = twc.at<float>(1); | |
+// MOw.m[14] = twc.at<float>(2); | |
+ | |
+// MTwwp.SetIdentity(); | |
+// MTwwp.m[0] = Rwwp.at<float>(0,0); | |
+// MTwwp.m[1] = Rwwp.at<float>(1,0); | |
+// MTwwp.m[2] = Rwwp.at<float>(2,0); | |
+ | |
+// MTwwp.m[4] = Rwwp.at<float>(0,1); | |
+// MTwwp.m[5] = Rwwp.at<float>(1,1); | |
+// MTwwp.m[6] = Rwwp.at<float>(2,1); | |
+ | |
+// MTwwp.m[8] = Rwwp.at<float>(0,2); | |
+// MTwwp.m[9] = Rwwp.at<float>(1,2); | |
+// MTwwp.m[10] = Rwwp.at<float>(2,2); | |
+ | |
+// MTwwp.m[12] = twc.at<float>(0); | |
+// MTwwp.m[13] = twc.at<float>(1); | |
+// MTwwp.m[14] = twc.at<float>(2); | |
+// } | |
+// else | |
+// { | |
+// M.SetIdentity(); | |
+// MOw.SetIdentity(); | |
+// MTwwp.SetIdentity(); | |
+// } | |
+ | |
+// } | |
} //namespace ORB_SLAM | |
diff --git a/src/System.cc b/src/System.cc | |
index ab66b7c..2b2f189 100644 | |
--- a/src/System.cc | |
+++ b/src/System.cc | |
@@ -21,7 +21,7 @@ | |
#include "System.h" | |
#include "Converter.h" | |
#include <thread> | |
-#include <pangolin/pangolin.h> | |
+//include <pangolin/pangolin.h> | |
#include <iomanip> | |
#include <openssl/md5.h> | |
#include <boost/serialization/base_object.hpp> | |
@@ -471,8 +471,8 @@ void System::Shutdown() | |
usleep(5000); | |
} | |
- if(mpViewer) | |
- pangolin::BindToContext("ORB-SLAM2: Map Viewer"); | |
+ //if(mpViewer) | |
+ // pangolin::BindToContext("ORB-SLAM2: Map Viewer"); | |
} | |
diff --git a/src/Viewer.cc b/src/Viewer.cc | |
index 6ac81e1..1998cae 100644 | |
--- a/src/Viewer.cc | |
+++ b/src/Viewer.cc | |
@@ -18,7 +18,7 @@ | |
#include "Viewer.h" | |
-#include <pangolin/pangolin.h> | |
+// #include <pangolin/pangolin.h> | |
#include <mutex> | |
@@ -132,207 +132,207 @@ void Viewer::Run() | |
mbFinished = false; | |
mbStopped = false; | |
- pangolin::CreateWindowAndBind("ORB-SLAM3: Map Viewer",1024,768); | |
- | |
- // 3D Mouse handler requires depth testing to be enabled | |
- glEnable(GL_DEPTH_TEST); | |
- | |
- // Issue specific OpenGl we might need | |
- glEnable (GL_BLEND); | |
- glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | |
- | |
- pangolin::CreatePanel("menu").SetBounds(0.0,1.0,0.0,pangolin::Attach::Pix(175)); | |
- pangolin::Var<bool> menuFollowCamera("menu.Follow Camera",true,true); | |
- pangolin::Var<bool> menuCamView("menu.Camera View",false,false); | |
- pangolin::Var<bool> menuTopView("menu.Top View",false,false); | |
- // pangolin::Var<bool> menuSideView("menu.Side View",false,false); | |
- pangolin::Var<bool> menuShowPoints("menu.Show Points",true,true); | |
- pangolin::Var<bool> menuShowKeyFrames("menu.Show KeyFrames",true,true); | |
- pangolin::Var<bool> menuShowGraph("menu.Show Graph",false,true); | |
- pangolin::Var<bool> menuShowInertialGraph("menu.Show Inertial Graph",true,true); | |
- pangolin::Var<bool> menuLocalizationMode("menu.Localization Mode",false,true); | |
- pangolin::Var<bool> menuReset("menu.Reset",false,false); | |
- pangolin::Var<bool> menuStepByStep("menu.Step By Step",false,true); // false, true | |
- pangolin::Var<bool> menuStep("menu.Step",false,false); | |
- | |
- // Define Camera Render Object (for view / scene browsing) | |
- pangolin::OpenGlRenderState s_cam( | |
- pangolin::ProjectionMatrix(1024,768,mViewpointF,mViewpointF,512,389,0.1,1000), | |
- pangolin::ModelViewLookAt(mViewpointX,mViewpointY,mViewpointZ, 0,0,0,0.0,-1.0, 0.0) | |
- ); | |
- | |
- // Add named OpenGL viewport to window and provide 3D Handler | |
- pangolin::View& d_cam = pangolin::CreateDisplay() | |
- .SetBounds(0.0, 1.0, pangolin::Attach::Pix(175), 1.0, -1024.0f/768.0f) | |
- .SetHandler(new pangolin::Handler3D(s_cam)); | |
- | |
- pangolin::OpenGlMatrix Twc, Twr; | |
- Twc.SetIdentity(); | |
- pangolin::OpenGlMatrix Ow; // Oriented with g in the z axis | |
- Ow.SetIdentity(); | |
- pangolin::OpenGlMatrix Twwp; // Oriented with g in the z axis, but y and x from camera | |
- Twwp.SetIdentity(); | |
- cv::namedWindow("ORB-SLAM3: Current Frame"); | |
- | |
- bool bFollow = true; | |
- bool bLocalizationMode = false; | |
- bool bStepByStep = false; | |
- bool bCameraView = true; | |
- | |
- if(mpTracker->mSensor == mpSystem->MONOCULAR || mpTracker->mSensor == mpSystem->STEREO || mpTracker->mSensor == mpSystem->RGBD) | |
- { | |
- menuShowGraph = true; | |
- } | |
- | |
- while(1) | |
- { | |
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); | |
- | |
- mpMapDrawer->GetCurrentOpenGLCameraMatrix(Twc,Ow,Twwp); | |
- | |
- if(mbStopTrack) | |
- { | |
- menuStepByStep = true; | |
- mbStopTrack = false; | |
- } | |
- | |
- if(menuFollowCamera && bFollow) | |
- { | |
- if(bCameraView) | |
- s_cam.Follow(Twc); | |
- else | |
- s_cam.Follow(Ow); | |
- } | |
- else if(menuFollowCamera && !bFollow) | |
- { | |
- if(bCameraView) | |
- { | |
- s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,mViewpointF,mViewpointF,512,389,0.1,1000)); | |
- s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(mViewpointX,mViewpointY,mViewpointZ, 0,0,0,0.0,-1.0, 0.0)); | |
- s_cam.Follow(Twc); | |
- } | |
- else | |
- { | |
- s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,3000,3000,512,389,0.1,1000)); | |
- s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(0,0.01,10, 0,0,0,0.0,0.0, 1.0)); | |
- s_cam.Follow(Ow); | |
- } | |
- bFollow = true; | |
- } | |
- else if(!menuFollowCamera && bFollow) | |
- { | |
- bFollow = false; | |
- } | |
- | |
- if(menuCamView) | |
- { | |
- menuCamView = false; | |
- bCameraView = true; | |
- s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,mViewpointF,mViewpointF,512,389,0.1,10000)); | |
- s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(mViewpointX,mViewpointY,mViewpointZ, 0,0,0,0.0,-1.0, 0.0)); | |
- s_cam.Follow(Twc); | |
- } | |
- | |
- if(menuTopView && mpMapDrawer->mpAtlas->isImuInitialized()) | |
- { | |
- menuTopView = false; | |
- bCameraView = false; | |
- /*s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,3000,3000,512,389,0.1,1000)); | |
- s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(0,0.01,10, 0,0,0,0.0,0.0, 1.0));*/ | |
- s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,3000,3000,512,389,0.1,10000)); | |
- s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(0,0.01,50, 0,0,0,0.0,0.0, 1.0)); | |
- s_cam.Follow(Ow); | |
- } | |
- | |
- /*if(menuSideView && mpMapDrawer->mpAtlas->isImuInitialized()) | |
- { | |
- s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,3000,3000,512,389,0.1,10000)); | |
- s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(0.0,0.1,30.0,0,0,0,0.0,0.0,1.0)); | |
- s_cam.Follow(Twwp); | |
- }*/ | |
- | |
- | |
- if(menuLocalizationMode && !bLocalizationMode) | |
- { | |
- mpSystem->ActivateLocalizationMode(); | |
- bLocalizationMode = true; | |
- } | |
- else if(!menuLocalizationMode && bLocalizationMode) | |
- { | |
- mpSystem->DeactivateLocalizationMode(); | |
- bLocalizationMode = false; | |
- } | |
- | |
- if(menuStepByStep && !bStepByStep) | |
- { | |
- mpTracker->SetStepByStep(true); | |
- bStepByStep = true; | |
- } | |
- else if(!menuStepByStep && bStepByStep) | |
- { | |
- mpTracker->SetStepByStep(false); | |
- bStepByStep = false; | |
- } | |
- | |
- if(menuStep) | |
- { | |
- mpTracker->mbStep = true; | |
- menuStep = false; | |
- } | |
- | |
- | |
- d_cam.Activate(s_cam); | |
- glClearColor(1.0f,1.0f,1.0f,1.0f); | |
- mpMapDrawer->DrawCurrentCamera(Twc); | |
- if(menuShowKeyFrames || menuShowGraph || menuShowInertialGraph) | |
- mpMapDrawer->DrawKeyFrames(menuShowKeyFrames,menuShowGraph, menuShowInertialGraph); | |
- if(menuShowPoints) | |
- mpMapDrawer->DrawMapPoints(); | |
- | |
- pangolin::FinishFrame(); | |
- | |
- cv::Mat toShow; | |
- cv::Mat im = mpFrameDrawer->DrawFrame(true); | |
- | |
- if(both){ | |
- cv::Mat imRight = mpFrameDrawer->DrawRightFrame(); | |
- cv::hconcat(im,imRight,toShow); | |
- } | |
- else{ | |
- toShow = im; | |
- } | |
- | |
- cv::imshow("ORB-SLAM3: Current Frame",toShow); | |
- cv::waitKey(mT); | |
- | |
- if(menuReset) | |
- { | |
- menuShowGraph = true; | |
- menuShowInertialGraph = true; | |
- menuShowKeyFrames = true; | |
- menuShowPoints = true; | |
- menuLocalizationMode = false; | |
- if(bLocalizationMode) | |
- mpSystem->DeactivateLocalizationMode(); | |
- bLocalizationMode = false; | |
- bFollow = true; | |
- menuFollowCamera = true; | |
- //mpSystem->Reset(); | |
- mpSystem->ResetActiveMap(); | |
- menuReset = false; | |
- } | |
- | |
- if(Stop()) | |
- { | |
- while(isStopped()) | |
- { | |
- usleep(3000); | |
- } | |
- } | |
- | |
- if(CheckFinish()) | |
- break; | |
- } | |
+ // pangolin::CreateWindowAndBind("ORB-SLAM3: Map Viewer",1024,768); | |
+ | |
+ // // 3D Mouse handler requires depth testing to be enabled | |
+ // glEnable(GL_DEPTH_TEST); | |
+ | |
+ // // Issue specific OpenGl we might need | |
+ // glEnable (GL_BLEND); | |
+ // glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | |
+ | |
+ // pangolin::CreatePanel("menu").SetBounds(0.0,1.0,0.0,pangolin::Attach::Pix(175)); | |
+ // pangolin::Var<bool> menuFollowCamera("menu.Follow Camera",true,true); | |
+ // pangolin::Var<bool> menuCamView("menu.Camera View",false,false); | |
+ // pangolin::Var<bool> menuTopView("menu.Top View",false,false); | |
+ // // pangolin::Var<bool> menuSideView("menu.Side View",false,false); | |
+ // pangolin::Var<bool> menuShowPoints("menu.Show Points",true,true); | |
+ // pangolin::Var<bool> menuShowKeyFrames("menu.Show KeyFrames",true,true); | |
+ // pangolin::Var<bool> menuShowGraph("menu.Show Graph",false,true); | |
+ // pangolin::Var<bool> menuShowInertialGraph("menu.Show Inertial Graph",true,true); | |
+ // pangolin::Var<bool> menuLocalizationMode("menu.Localization Mode",false,true); | |
+ // pangolin::Var<bool> menuReset("menu.Reset",false,false); | |
+ // pangolin::Var<bool> menuStepByStep("menu.Step By Step",false,true); // false, true | |
+ // pangolin::Var<bool> menuStep("menu.Step",false,false); | |
+ | |
+ // // Define Camera Render Object (for view / scene browsing) | |
+ // pangolin::OpenGlRenderState s_cam( | |
+ // pangolin::ProjectionMatrix(1024,768,mViewpointF,mViewpointF,512,389,0.1,1000), | |
+ // pangolin::ModelViewLookAt(mViewpointX,mViewpointY,mViewpointZ, 0,0,0,0.0,-1.0, 0.0) | |
+ // ); | |
+ | |
+ // // Add named OpenGL viewport to window and provide 3D Handler | |
+ // pangolin::View& d_cam = pangolin::CreateDisplay() | |
+ // .SetBounds(0.0, 1.0, pangolin::Attach::Pix(175), 1.0, -1024.0f/768.0f) | |
+ // .SetHandler(new pangolin::Handler3D(s_cam)); | |
+ | |
+ // pangolin::OpenGlMatrix Twc, Twr; | |
+ // Twc.SetIdentity(); | |
+ // pangolin::OpenGlMatrix Ow; // Oriented with g in the z axis | |
+ // Ow.SetIdentity(); | |
+ // pangolin::OpenGlMatrix Twwp; // Oriented with g in the z axis, but y and x from camera | |
+ // Twwp.SetIdentity(); | |
+ // cv::namedWindow("ORB-SLAM3: Current Frame"); | |
+ | |
+ // bool bFollow = true; | |
+ // bool bLocalizationMode = false; | |
+ // bool bStepByStep = false; | |
+ // bool bCameraView = true; | |
+ | |
+ // if(mpTracker->mSensor == mpSystem->MONOCULAR || mpTracker->mSensor == mpSystem->STEREO || mpTracker->mSensor == mpSystem->RGBD) | |
+ // { | |
+ // menuShowGraph = true; | |
+ // } | |
+ | |
+ // while(1) | |
+ // { | |
+ // glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); | |
+ | |
+ // mpMapDrawer->GetCurrentOpenGLCameraMatrix(Twc,Ow,Twwp); | |
+ | |
+ // if(mbStopTrack) | |
+ // { | |
+ // menuStepByStep = true; | |
+ // mbStopTrack = false; | |
+ // } | |
+ | |
+ // if(menuFollowCamera && bFollow) | |
+ // { | |
+ // if(bCameraView) | |
+ // s_cam.Follow(Twc); | |
+ // else | |
+ // s_cam.Follow(Ow); | |
+ // } | |
+ // else if(menuFollowCamera && !bFollow) | |
+ // { | |
+ // if(bCameraView) | |
+ // { | |
+ // s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,mViewpointF,mViewpointF,512,389,0.1,1000)); | |
+ // s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(mViewpointX,mViewpointY,mViewpointZ, 0,0,0,0.0,-1.0, 0.0)); | |
+ // s_cam.Follow(Twc); | |
+ // } | |
+ // else | |
+ // { | |
+ // s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,3000,3000,512,389,0.1,1000)); | |
+ // s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(0,0.01,10, 0,0,0,0.0,0.0, 1.0)); | |
+ // s_cam.Follow(Ow); | |
+ // } | |
+ // bFollow = true; | |
+ // } | |
+ // else if(!menuFollowCamera && bFollow) | |
+ // { | |
+ // bFollow = false; | |
+ // } | |
+ | |
+ // if(menuCamView) | |
+ // { | |
+ // menuCamView = false; | |
+ // bCameraView = true; | |
+ // s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,mViewpointF,mViewpointF,512,389,0.1,10000)); | |
+ // s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(mViewpointX,mViewpointY,mViewpointZ, 0,0,0,0.0,-1.0, 0.0)); | |
+ // s_cam.Follow(Twc); | |
+ // } | |
+ | |
+ // if(menuTopView && mpMapDrawer->mpAtlas->isImuInitialized()) | |
+ // { | |
+ // menuTopView = false; | |
+ // bCameraView = false; | |
+ // /*s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,3000,3000,512,389,0.1,1000)); | |
+ // s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(0,0.01,10, 0,0,0,0.0,0.0, 1.0));*/ | |
+ // s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,3000,3000,512,389,0.1,10000)); | |
+ // s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(0,0.01,50, 0,0,0,0.0,0.0, 1.0)); | |
+ // s_cam.Follow(Ow); | |
+ // } | |
+ | |
+ // /*if(menuSideView && mpMapDrawer->mpAtlas->isImuInitialized()) | |
+ // { | |
+ // s_cam.SetProjectionMatrix(pangolin::ProjectionMatrix(1024,768,3000,3000,512,389,0.1,10000)); | |
+ // s_cam.SetModelViewMatrix(pangolin::ModelViewLookAt(0.0,0.1,30.0,0,0,0,0.0,0.0,1.0)); | |
+ // s_cam.Follow(Twwp); | |
+ // }*/ | |
+ | |
+ | |
+ // if(menuLocalizationMode && !bLocalizationMode) | |
+ // { | |
+ // mpSystem->ActivateLocalizationMode(); | |
+ // bLocalizationMode = true; | |
+ // } | |
+ // else if(!menuLocalizationMode && bLocalizationMode) | |
+ // { | |
+ // mpSystem->DeactivateLocalizationMode(); | |
+ // bLocalizationMode = false; | |
+ // } | |
+ | |
+ // if(menuStepByStep && !bStepByStep) | |
+ // { | |
+ // mpTracker->SetStepByStep(true); | |
+ // bStepByStep = true; | |
+ // } | |
+ // else if(!menuStepByStep && bStepByStep) | |
+ // { | |
+ // mpTracker->SetStepByStep(false); | |
+ // bStepByStep = false; | |
+ // } | |
+ | |
+ // if(menuStep) | |
+ // { | |
+ // mpTracker->mbStep = true; | |
+ // menuStep = false; | |
+ // } | |
+ | |
+ | |
+ // d_cam.Activate(s_cam); | |
+ // glClearColor(1.0f,1.0f,1.0f,1.0f); | |
+ // mpMapDrawer->DrawCurrentCamera(Twc); | |
+ // if(menuShowKeyFrames || menuShowGraph || menuShowInertialGraph) | |
+ // mpMapDrawer->DrawKeyFrames(menuShowKeyFrames,menuShowGraph, menuShowInertialGraph); | |
+ // if(menuShowPoints) | |
+ // mpMapDrawer->DrawMapPoints(); | |
+ | |
+ // pangolin::FinishFrame(); | |
+ | |
+ // cv::Mat toShow; | |
+ // cv::Mat im = mpFrameDrawer->DrawFrame(true); | |
+ | |
+ // if(both){ | |
+ // cv::Mat imRight = mpFrameDrawer->DrawRightFrame(); | |
+ // cv::hconcat(im,imRight,toShow); | |
+ // } | |
+ // else{ | |
+ // toShow = im; | |
+ // } | |
+ | |
+ // cv::imshow("ORB-SLAM3: Current Frame",toShow); | |
+ // cv::waitKey(mT); | |
+ | |
+ // if(menuReset) | |
+ // { | |
+ // menuShowGraph = true; | |
+ // menuShowInertialGraph = true; | |
+ // menuShowKeyFrames = true; | |
+ // menuShowPoints = true; | |
+ // menuLocalizationMode = false; | |
+ // if(bLocalizationMode) | |
+ // mpSystem->DeactivateLocalizationMode(); | |
+ // bLocalizationMode = false; | |
+ // bFollow = true; | |
+ // menuFollowCamera = true; | |
+ // //mpSystem->Reset(); | |
+ // mpSystem->ResetActiveMap(); | |
+ // menuReset = false; | |
+ // } | |
+ | |
+ // if(Stop()) | |
+ // { | |
+ // while(isStopped()) | |
+ // { | |
+ // usleep(3000); | |
+ // } | |
+ // } | |
+ | |
+ // if(CheckFinish()) | |
+ // break; | |
+ // } | |
SetFinish(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment