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