⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system.cc

📁 this is software for visual SLAM
💻 CC
字号:
// Copyright 2008 Isis Innovation Limited#include "System.h"#include "OpenGL.h"#include <gvars3/instances.h>#include "ATANCamera.h"#include "MapMaker.h"#include "Tracker.h"#include "ARDriver.h"#include "MapViewer.h"using namespace CVD;using namespace std;using namespace GVars3;System::System()  : mGLWindow(mVideoSource.Size(), "PTAM"){  GUI.RegisterCommand("exit", GUICommandCallBack, this);  GUI.RegisterCommand("quit", GUICommandCallBack, this);    mimFrameBW.resize(mVideoSource.Size());  mimFrameRGB.resize(mVideoSource.Size());  // First, check if the camera is calibrated.  // If not, we need to run the calibration widget.  Vector<NUMTRACKERCAMPARAMETERS> vTest;    vTest = GV3::get<Vector<NUMTRACKERCAMPARAMETERS> >("Camera.Parameters", ATANCamera::mvDefaultParams, HIDDEN);  mpCamera = new ATANCamera("Camera");  if(vTest == ATANCamera::mvDefaultParams)    {      cout << endl;      cout << "! Camera.Parameters is not set, need to run the CameraCalibrator tool" << endl;      cout << "  and/or put the Camera.Parameters= line into the appropriate .cfg file." << endl;      exit(1);    }    mpMap = new Map;  mpMapMaker = new MapMaker(*mpMap, *mpCamera);  mpTracker = new Tracker(mVideoSource.Size(), *mpCamera, *mpMap, *mpMapMaker);  mpARDriver = new ARDriver(*mpCamera, mVideoSource.Size(), mGLWindow);  mpMapViewer = new MapViewer(*mpMap, mGLWindow);    GUI.ParseLine("GLWindow.AddMenu Menu Menu");  GUI.ParseLine("Menu.ShowMenu Root");  GUI.ParseLine("Menu.AddMenuButton Root Reset Reset Root");  GUI.ParseLine("Menu.AddMenuButton Root Spacebar PokeTracker Root");  GUI.ParseLine("DrawAR=0");  GUI.ParseLine("DrawMap=0");  GUI.ParseLine("Menu.AddMenuToggle Root \"View Map\" DrawMap Root");  GUI.ParseLine("Menu.AddMenuToggle Root \"Draw AR\" DrawAR Root");    mbDone = false;};void System::Run(){  while(!mbDone)    {            // We use two versions of each video frame:      // One black and white (for processing by the tracker etc)      // and one RGB, for drawing.      // Grab new video frame...      mVideoSource.GetAndFillFrameBWandRGB(mimFrameBW, mimFrameRGB);        static bool bFirstFrame = true;      if(bFirstFrame)	{	  mpARDriver->Init();	  bFirstFrame = false;	}            mGLWindow.SetupViewport();      mGLWindow.SetupVideoOrtho();      mGLWindow.SetupVideoRasterPosAndZoom();            if(!mpMap->IsGood())	mpARDriver->Reset();            static gvar3<int> gvnDrawMap("DrawMap", 0, HIDDEN|SILENT);      static gvar3<int> gvnDrawAR("DrawAR", 0, HIDDEN|SILENT);            bool bDrawMap = mpMap->IsGood() && *gvnDrawMap;      bool bDrawAR = mpMap->IsGood() && *gvnDrawAR;            mpTracker->TrackFrame(mimFrameBW, !bDrawAR && !bDrawMap);            if(bDrawMap)	mpMapViewer->DrawMap(mpTracker->GetCurrentPose());      else if(bDrawAR)	mpARDriver->Render(mimFrameRGB, mpTracker->GetCurrentPose());      //      mGLWindow.GetMousePoseUpdate();      string sCaption;      if(bDrawMap)	sCaption = mpMapViewer->GetMessageForUser();      else	sCaption = mpTracker->GetMessageForUser();      mGLWindow.DrawCaption(sCaption);      mGLWindow.DrawMenus();      mGLWindow.swap_buffers();      mGLWindow.HandlePendingEvents();    }}void System::GUICommandCallBack(void *ptr, string sCommand, string sParams){  if(sCommand=="quit" || sCommand == "exit")    static_cast<System*>(ptr)->mbDone = true;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -