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上找到更多信息。

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