DSO(Direct Sparse Odometry)在windows下運行方法

簡述

本文主要是提供DSO如何在windows下編譯運行的方法。

(總是一些人建議用Linux,在我看如果是學習的前提下,編譯這些源代碼,linux很nice;如果是做一些基於windows下的應用,代碼的遷移可躲不開。)

源代碼地址:https://github.com/JakobEngel/dso
Win下修改代碼地址:https://github.com/jhincapie/DSOonWin

一、源碼不能在Windows下直接運行原因

我直接下載Github源碼,試圖在windows下運行DSO,遇到了以下問題。

  1. Unix一些頭文件,在windows下沒有對應頭文件。

    一些頭文件中包含了dso使用的基本功能,如時間、usleep等等,這些頭文件包括unistd.h、dirent.h。

  2. 代碼中基本函數,如swap,會導致編譯錯誤,如下圖。這些錯誤很讓人發懵,居然是C++的庫文件vector報錯。

二、解決方案(需要使用Nuget)

我嘗試了自己修改,比如重寫timeval和swap,沒有改完。但是在休息的時候看了下github,有人已經改過了,萬分驚喜。下載了嘗試編譯,除了一些小問題,可以直接運行。

源碼Github地址:https://github.com/jhincapie/DSOonWin

如何運行DSO

  1. 在自己的Visual Studio中擴展安裝Nuget,這是一個包管理器,我也只用過幾次,大致功能就是可以直接拉取一些常見的庫,如Eigen,OpenCV,SuiteParse的編譯好版本,並且配置好在工程中。

    但是需要注意:配置有時候可能會失效,則需要我們手動解決這個問題。

  2. 下載上述地址的代碼,使用VS2015及以上版本打開(若提示需要升級解決方案,確認即可)。按照上述主頁的方法,用Nuget更新所需庫,並且修改一處,見下圖。
    在這裏插入圖片描述

  3. 可能出現問題:png,jpeg,zlib幾個庫的依賴項未配置。

    出現以下錯誤:
    在這裏插入圖片描述
    解決方法:手動配置缺失lib的目錄,以jpeg舉例,依照下圖可以很容易找到:
    在這裏插入圖片描述
    運行時,可能還會出現找不到dll,在上述類似目錄中找到dll複製到exe目錄下即可。

運行結果如下,跑的是tum sequence 14

在這裏插入圖片描述

三、總結與數據集

  1. Nuget是個好東西,免去了很多麻煩。需要常見的slam用的庫都能找到,可以用點精力多學習一下。
  2. Github資源很多,做一下白嫖黨也不是不可以,但是記得給個Star。
  3. 自己在百度網盤保存了一些單目數據集,可供下載:
    鏈接:https://pan.baidu.com/s/1f556-SR1opC2A0JGI8uH3A
    提取碼:0e7z
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章