OpenARK:UC Berkeley 開源可穿戴增強現實系統(C++)

1 OpenARK

OpenARK是於2016年在加州大學伯克利分校創建的開源可穿戴式增強現實(AR)系統。基於C++的軟件提供了創新的核心功能,可爲各種現成的AR組件提供動力,包括透視眼鏡,深度攝像頭和IMU。

開源平臺包括高級模塊,以幫助人機交互,例如3D手勢識別,平面檢測,avatar/姿勢跟蹤和多用戶協作,還包含基本工具,例如基於AR的相機校準,深度到立體,SLAM等。當前,它同時支持PMD Pico Flexx和Intel RealSense SR300攝像機。該項目在Windows和Linux上都原生構建。

http://augcog.berkeley.edu/OpenARK.html

  • 技術棧:C++, OpenCV, PCL, Boost, Intel RealSense SDK (1 or 2)/PMD SDK
  • 狀態:Beta 0.9.3
  • 應用演示:Vimeo

2 依賴

(1)硬件

  • 深度相機
  • RGB相機
  • 透明AR眼鏡(可選)

(2)軟件

  • Eigen 3
  • OpenCV 3.2.0+
  • PCL 1.8
  • Boost 1.6.4
  • Ceres-solver
  • DBoW2
  • 有關完整列表的信息,請參見DEPENDENCIES.md

3 安裝

3.1 從頭開始建設

以下文檔中提供了說明:

(1)Windows: documentation/Windows-build-instructions.pdf

現在可以使用新的依賴包安裝程序,它可以加快設置過程。請閱讀說明文件/Windows-build-instructions-quick.md以獲取說明。可以在https://github.com/sxyu/OpenARK-Deps/releases/download/0.0.1/openark-deps-vc14-win64.exe中找到安裝程序。

(2)Linux: documentation/Linux-build-instructions.md

要使用頭像模塊/演示:您將需要手動下載SMPL模型文件。說明位於data/avatar-model/README.md中。您也可以通過運行data/avatar-dataset/download.sh下載數據集樣本。

3.2 預建二進制文件(對於Windows)

此處提供了用於64位Windows的預構建二進制文件。僅針對主要版本進行了更新。靜態庫(帶有頭文件)和演示程序都包括在內。爲了使SVM正常工作,svm/文件夾必須存在於當前目錄中或OPENARK_DIR環境變量指向的目錄下。

4 用法

要在Visual Studio C ++項目中使用OpenARK:

根據配置說明設置所有依賴項(OpenCV,PCL等)後,將openark_x_x_x.lib添加到Project > MyProjectProperties > Linker > Input > Additional Dependencies。然後將OPENARK_DIR/include添加到C/C++ > General > Additional Include Directories。最後,確保在C/C++ > Code Generation下,將Runtime Library設置爲Multi-threaded DLL (/MD)。

現在,您可以#includeOpenARK的核心頭文件包含在任何文件中,並開始使用OpenARK。您可能還希望包括深度相機後端頭文件之一(例如SR300Camera.h)。

這是執行手部檢測程序的概述:

...
#include "core.h"
#include "SR300Camera.h"

#include "opencv2/core.hpp"
#include <vector>
...
int main() {
    ark::DepthCamera & camera = ark::SR300Camera(); // OpenARK camera backend
    ark::HandDetector detector(); // OpenARK hand detector; also see PlaneDetector
    
    // start the camera; alternatively, call nextFrame() manually inside the loop (slower)
    camera.beginCapture(); 
    ...
    while (true) {
        cv::imshow("XYZ Map", camera.getXYZMap());

        detector.update(camera);
        std::vector<ark::Hand::Ptr> hands = detector.getHands();
        
        // do something with the hands detected
        ...
        
        // quit when q is pressed
        if (cv::waitKey(1) == 'q') break;
    }
    
    ...
    // automatically stops capture on exit
}

附加樣本代碼在samplecode/可用。

5 自定義

OpenARK易於定製。請隨意在此平臺上構建,以滿足您的需求。

6 如何測試軟件

HandDemo.cpp中包含用於運行演示視頻的代碼。其他示例代碼可在/samplecode/中找到,您需要將其替換爲項目解決方案隨附的主要代碼。

7 使用OpenARK SLAM

當前,OpenARK僅支持與OpenARK SLAM一起使用的Intel Realsense D435i攝像機。OpenARK SLAM需要運行兩個配置文件,一個攝像機內參文件和一個vocab文件。這兩個文件的示例都可以在config文件夾中找到。要運行OpenARK SLAM演示,請運行:

OpenARK_SLAM_demo.exe <intrinsics file> <vocab file>

雖然提供的vocab文件應可用於大多數目的,但爲獲得最佳性能,應爲每個攝像機生成一個自定義的內參文件。您可以通過運行以下命令爲相機生成自定義的內參文件:

d435i_intrinsics_writer <camera name>

這將生成一個名爲<camera name>_intr.yaml的完整內參文件。

OpenARK SLAM大量利用了開源軟件包DBoW2,Okvis和Ceres。請在適當的時候尊重其許可證和信用/引用。

8 已知的問題

3.2.0之前的OpenCV不提供預構建的VC14+二進制文件。使用VC14運行VC12 OpenCV二進制文件將導致findCountours()中的內存錯誤。如果使用VC12+編譯OpenARK,則需要使用CMake從源代碼重建OpenCV。我們已使用VC14的OpenCV二進制文件隨附的OpenCV 3.2.0,以避免在使用Visual Studio 2015時出現此問題。

9 獲得幫助

如果您有任何疑問,疑慮,錯誤報告等,請在此存儲庫的問題跟蹤器中提交問題。

10 參與進來

增強認知中心歡迎感興趣的行業合作伙伴加入我們的聯盟,以支持OpenARK平臺。可以在cac.berkeley.edu上找到更多信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章