JetSon TX2 Ubuntu16.04安装libfreenect 使用kinect1 附python wrapper

1. 安装依赖

  • libusb >= 1.0.18 (Windows needs >= 1.0.22)
  • CMake >= 3.1.0
  • python >= 2.7 or >= 3.3 (only if BUILD_PYTHON=ON or BUILD_PYTHON2=ON or BUILD_PYTHON3=ON or BUILD_REDIST_PACKAGE=OFF)

 2. 克隆以及编译libfreenect

克隆下来之后,编译之前,注释掉libfreenect/src/usb_libusb10.c文件中,第357行如下代码:

//libusb_reset_device(audioHandle);

 避免运行libfreenect/wrapper/python目录下 demo造成如下错误:

Found sibling device [same parent]
Failed to set the LED of K4W or 1473 device: -1
Found sibling device [same parent]
Could not open device: -1

步骤:

git clone https://github.com/OpenKinect/libfreenect
cd libfreenect
mkdir build
cd build
cmake .. -DBUILD_PYTHON2=ON #因为本人使用python2 但是系统默认的是python3,因此此处声明python2
make

如果在编译过程中出现如下错误:

[ 94%] Building CXX object wrappers/cpp/CMakeFiles/freenect-cppview.dir/cppview.cpp.o
In file included from /home/rais/version-control/libfreenect/wrappers/cpp/cppview.cpp:27:0:
/home/rais/version-control/libfreenect/wrappers/cpp/libfreenect.hpp:182:8: error: ‘unique_ptr’ in namespace ‘std’ does not name a template type
   std::unique_ptr<uint8_t[]> m_rgb_buffer;
        ^

/home/rais/version-control/libfreenect/wrappers/cpp/libfreenect.hpp: In member function ‘void Freenect::FreenectDevice::setVideoFormat(freenect_video_format, freenect_resolution)’:
/home/rais/version-control/libfreenect/wrappers/cpp/libfreenect.hpp:115:5: error: ‘m_rgb_buffer’ was not declared in this scope
     m_rgb_buffer.reset(new uint8_t[mode.bytes]);
     ^

wrappers/cpp/CMakeFiles/freenect-cppview.dir/build.make:62: recipe for target 'wrappers/cpp/CMakeFiles/freenect-cppview.dir/cppview.cpp.o' failed
make[2]: *** [wrappers/cpp/CMakeFiles/freenect-cppview.dir/cppview.cpp.o] Error 1
CMakeFiles/Makefile2:810: recipe for target 'wrappers/cpp/CMakeFiles/freenect-cppview.dir/all' failed
make[1]: *** [wrappers/cpp/CMakeFiles/freenect-cppview.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

那么你需要在libfreenect目录下的CMakeLists.txt文件中,大约119行处添加如下代码:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

Tips:如果遇到其他的错误,可以尝试减低Cmake 以及make的版本,因为本人使用的Jerson Tx2 板子,CPU架构不同于普通的PC,因此在降低Cmake、make版本过程当中遇到不少的错误,但是这些问题都能百度到解决方案。 

3. 测试

当你完成make之后,cd [你的路径]/libfreenect/build/bin/,执行: ./freenect-glview,如果出现以下错误:

nvidia@tegra-ubuntu:~/dl/libfreenect/build/bin$ ./freenect-glview
Kinect camera test
Number of devices found: 1
Found sibling device [same parent]
Found sibling device [same parent]
Trying to open ./audios.bin as firmware...
Trying to open /home/nvidia/.libfreenect/audios.bin as firmware...
Trying to open /usr/local/share/libfreenect/audios.bin as firmware...
Trying to open /usr/share/libfreenect/audios.bin as firmware...
Trying to open ./../Resources/audios.bin as firmware...
upload_firmware: failed to find firmware file.
upload_firmware failed: -2
Could not open device

那么你需要把:[你的路径]/libfreenect/src 目录下的:audios.bin 文件拷贝至 [你的路径]/libfreenect/build/bin 目录下,然后再次执行,应该就没有问题了(由于我是SSH远程操作服务器,所以后面出现了:

GL thread  freeglut (./freenect-glview): failed to open display '')

4. 编译python Wrapper

编译python wrapper需要在编译libfreenect完成之后进行否则会出现入下错误:

/usr/bin/ld: cannot find -lfreenect
/usr/bin/ld: cannot find -lfreenect_sync

依赖:

  • Cython
  • python-dev
  • python-numpy

编译方法,在 libfreenect/wrapper/python 目录下执行:

sudo python2 setup.py install # 全局安装,关于python2的问题前文提到是因为系统默认python版本的问题

本地安装,参考:Python_Wrapper

完成编译之后,安装OpenCV等相关依赖,运行 libfreenect/wrapper/python下的demo或者libfreenect/build/下的demo可以观察到相关的测试结果。

 

如果过程当中遇到其他的错误,可以到:libfreenect官方github,查找相应的解决方案。还有就是源码编译安装和在ROS安装过程中的libfreenect安装,没有冲突(至少在本人的Jetson tx2上没有冲突)。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值