1. 程式人生 > >ORB-SLAM2執行資料集時Pangolin介面卡住,不能生成軌跡以及用攝像頭執行非ROS版程式時如何退出的方法

ORB-SLAM2執行資料集時Pangolin介面卡住,不能生成軌跡以及用攝像頭執行非ROS版程式時如何退出的方法

問題1

最近用ORB-SLAM2執行KITTI資料集,最後PangolinORB-SLAM2:Current Frame視窗卡住,無法儲存軌跡檔案。
看程式碼發現是SLAM.Shoutdown()的問題。
方法一:
如果想得到軌跡檔案,將SLAM.Shoutdown()移到SALM.SaveTrajectoryKITTI(CameraTrajectory.txt)後面即可,但是還要在終端輸入ctrl+c,才能退出卡住的視窗。
方法二:
System.ccSLAM.Shoutdown()中將以下程式碼註釋掉:

if(mpViewer)
        pangolin::BindToContext("ORB-SLAM2: Map Viewer");

以前沒有遇到這個問題,猜測是Pangolin更新後存在bug。
注意:對程式碼做修改後,都要重新編譯。

問題2

以前在用小覓相機執行非ROS介面的程式時,如果直接在終端輸入ctrl+c,程式將直接退出,不會儲存軌跡檔案。
我當時在stereo_mynt.ccwhile(true)最後新增:

char c = cvWaitKey(1);
if(c == 27)
    break;

然後在視訊視窗按ESC鍵即可正常結束程式,最後儲存軌跡檔案。
不過後來Github有過幾次更新,變化如下:

bool flag = true;
void exit_while(int sig)
{
  flag = false;
}

while (flag)

我沒測試,看樣子應該是為了解決這個bug。