2016년 11월 15일 화요일

Kinect v2 for libfreenect2 - Windows

Microsoft Kinect SDK 를 사용하지 않고, OpenKinect 에서 제공되는 libfreenect 드라이버를 사용하여, Kinect v2 를 제어 하려고 합니다.


1. libfreenect2 다운로드


https://github.com/OpenKinect/libfreenect2 를 통해 다운로드하여, 특정 폴더에 저장합니다.
여기서는 git를 이용하여 다운로드 받았습니다.

# git clone https://github.com/OpenKinect/libfreenect2


2. Kinect v2 USB3.0 드라이버 설치


libfreenect2 를 사용하기 위해서,  Kinect Windows v2 SDK를 삭제하고, libusb 드라이버를 설치한다.

1) Zadig 에서 제공하는 드라이버가 그 예로, http://zadig.akeo.ie/ 에서 드라이버를 다운로드 받아 실행 시킨다.


2) 상단 메뉴 -> Options 에서,
List All Devices 를 선택하고, Ignore Hubs or Composite Parents 를 해제 한다.


3) 디바이스 목록에서 "Xbox NUI Sensor (Composite Parent) 선택하고,
Driver 는 "libusbK" 를 선택 후에 [Replace Driver] 버튼을 클릭하여, 드라이버를 변경한다.

 

3. libusb 라이브러리 설치


libfreenect2를 다운로드한 폴더로 이동, depends 폴더 안의 install_libusb_vs2015.cmd 를 실행합니다. ( 설치환경에 맞는 vs 버전으로 컴파일)




4. TurboJPEG 설치


http://sourceforge.net/projects/libjpeg-turbo/files 에서 다운로드 받습니다.
여기서는 libjpeg-turbo-1.5.1-vc64.exe 를 다운로드 받았습니다.




libjpeg-turbo-1.5.1-vc64.exe 를 실행하고, 저장 경로를 c:\libjpeg-turbo64 혹은 
libfreenect2/depends/libjpeg-turbo64 에 저장합니다.




윈도우의 시스템속성 - 고급 - 환경변수에서 "TurboJPEG_ROOT" 라는 이름으로 설치 경로를 등록해 줍니다.



5. GLFW 설치

http://www.glfw.org/download.html 에서 64bit 버전 윈도우 라이브러리 파일을 다운로드 받습니다.


다운로드 받은 파일을 압축 해제후, 파일들을 libfreenect2/depends/glfw 에 저장합니다.
윈도우의 시스템속성 - 고급 - 환경변수에서 "GLFW_ROOT" 라는 이름으로 경로를 등록시켜줍니다.



6. OpenCL 설치

 https://software.intel.com/en-us/intel-opencl 에서 "Intel® SDK for OpenCL™ Applications 2016"  를 다운로드 받습니다. 회원 가입 후 메일을 통해 다운로드 URL이 제공됩니다.
다운로드 받은 파일을 다음의 과정을 걸쳐서 설치합니다.










설치가 완료되면, 리부팅합니다.

7. OpenNI2 설치


http://structure.io/openni 에서 Windows 용의 OpenNI 2.2.0.22 Beta(x86)을 다운로드 받습니다. 압축해제 후, OpenNI-Windows-x64-2.2.exe를 실행합니다.
저장 경로는 기본으로 놔둔 채로 설치합니다.



8. CMAKE 설치

libfreenect2 를 위한 라이브러리 들이 설치되었다면, 처음 받은 libfreenect2를 컴파일 해야 합니다. 이때 사용되는 것은 cmake 인데, https://cmake.org/download/ 사이트가서 설치 파일을 다운로드 받습니다.

다운로드 받은 cmake-3.7.0-rc3-win64-x64.exe 파일을 실행합니다.











9. 최종빌드

최종 라이브러리를 생성하기 위해서, 콘솔에서 다음과 같이 실행 준다.

# mkdir build && cd build
# cmake .. -G "Visual Studio 14 2015 Win64"
# cmake --build . --config RelWithDebInfo --target install






컴파일이 완료되면, .\install\bin\Protonect.exe 를 입력하여 테스트 창을 실행 보자.
만약, 실행 후

[Error] [usb::TransferPool] failed to submit transfer: LIBUSB_ERROR_NOT_SUPPORTED Operation not supported or unimplemented on this platform

와 같은 오류 메세지가 나온다면, libusb 드라이버의 문제 일 수 도 있습니다.  다음 github 에서 미리 컴파일 된 버전을 다운로드 받습니다. https://github.com/xlz/libusb/releases/tag/v1.0.20-winiso 을 다운로 받아, libfreenect2/libusb 폴더에 넣은 후 다시 컴파일 합니다.

.\install\bin\Protonect.exe 를 실행시 와 같은 윈도창이 실행되면 설치가 모두 성공한것입니다.





10. OpenNI2 테스트



libfreenect2 키넥트 드라이버를 사용하여, OpemNI2 를 구동할 수 있습니다.
그러기 위해서, 

{libfreenect2 설치 경로}\libfreenect2\build\install\bin 폴더 안에 있는 모든 파일을 복사한 후에, 7. 에서 설치한 OpenNI2 의 경로인
즉, C:\Program Files\OpenNI2\Tools\OpenNI2\Drivers 안에 붙여 넣습니다. 

그후, C:\Program Files\OpenNI2\Tools\NiViewer.exe 를 실행하면 다음과 같이 실행되는 것을 확인할 수 있습니다.

.









댓글 3개:

  1. Thank you! Your post was very useful. (From Brazil)

    답글삭제
  2. 저 질문드릴게 있습니다!
    왠지 모르겠지만 zadig 에서 옵션 변경후에도 xbox ~ 이게 안나오는데
    어떤 설정을 해야하나요?? 오류인가요?

    답글삭제