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)。
現在,您可以#include
OpenARK的核心頭文件包含在任何文件中,並開始使用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上找到更多信息。