以下的操作是在一个全新安装的Ubuntu 16.04
系统上进行的,目前已知在安装了ROS
的系统上并且已经安装过ROS
版本的Kinect V2
驱动的,可能需要先移除以前安装的面向ROS
编译的Kinect V2
驱动才行。
首先是安装配置驱动程序以及运行依赖库
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo apt-get install python-opencv
$ sudo apt-get install python-dev
$ sudo apt-get install python-pip
$ sudo pip install openni
$ sudo apt-get install git
Download libfreenect2 source
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
Install build tools
sudo apt-get install build-essential cmake pkg-config
Install libusb. The version must be >= 1.0.20.
sudo apt-get install libusb-1.0-0-dev
Install TurboJPEG
sudo apt-get install libturbojpeg libjpeg-turbo8-dev
Install OpenGL
sudo apt-get install libglfw3-dev
cd to libfreenect2 source path
$ mkdir build && cd build
##如果在安装过ROS的系统上执行,并且已经通过ROS安装过libfreenect2驱动,可能下面的要调整成“cmake .. -DCMAKE_INSTALL_PREFIX=/usr/” 才能成功覆盖已经安装过的文件,路径在usr下,方便寻找,装在home下,可能会导致找不到相关的头文件
eg:
In file included from pyfreenect2.cpp:1:0:
pyfreenect2.hpp:5:41: fatal error: libfreenect2/libfreenect2.hpp: 没有那个文件或目录
这个是我遇到的错,没事,重新安装一下就好
$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/
$ make
$ sudo make install
以上libfreenect的库装好。
安装Python接口
有两个库可以跑,但前提都是依赖libfreenect,一个是pyfreenect,一个是pylibfreenect,如果是python2的可以直接用pyfreenect的库,如果是python3的,最好还是pylibfreenect,因为虽然前者有python3的版本,但是我装上之后运行test只能显示第一帧图像就卡死了。
pyfreenect安装配置方法:
$ cd ~
$ sudo pip install cython
$ sudo pip install numpy
$ git clone https://github.com/remexre/pyfreenect2.git
$ cd pyfreenect2
$ sudo python setup.py install
$ sudo apt-get install gfortran
$ sudo apt-get install libopenblas-dev
$ sudo apt-get install liblapack-dev
$ sudo pip install scipy
安装路径自己定,我也不是安装在~目录下的
安装好测试一下:
$ cd ~/pyfreenect2
$ python test.py
可能会报错:
Traceback (most recent call last):
File "test.py", line 66, in <module>
bgr_frame_resize = scipy.misc.imresize(bgr_frame, size = .5)
AttributeError: 'module' object has no attribute 'imresize'
解决办法:pip install Pillow
最终运行成功:
pylibfreenect安装配置方法:
去github上下载pylibfreenect包,然后按照doc里面的安装教程进行安装即可,注意安装之前需要配置的库,比如cython等,安装好之后就可以用了。测验下example里面的例子,如果能跑,就说明配好了
这里除了教程里面的路径需要设置,还有可能遇到一个坑,
[Error] [Freenect2Impl] failed to open Kinect v2: @2:4 LIBUSB_ERROR_ACCESS Access denied (insufficient permissions)
提示你的usb权限不够,但是如果你加权限的sudo的话,就会报错:
Traceback (most recent call last):
File "selective_streams.py", line 8, in <module>
from pylibfreenect2 import Freenect2, SyncMultiFrameListener
File "/home/jun/.local/lib/python3.5/site-packages/pylibfreenect2/__init__.py", line 108, in <module>
from .libfreenect2 import *
ImportError: libfreenect2.so.0.2: cannot open shared object file: No such file or directory
这个让我郁闷了一个晚上,我以为是路径没有配置好,后来发现我直接在python里面import Freenect2是没有问题的,最后发现只需要执行一下:
sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
就可以了,我记得这个官方的原版教程是有这个的,很奇怪,我之前安装的时候貌似没有执行这一部也过了,所以万事不能以网上的教程为主,还得看官方发布的教程。
note:如果你的libfreenect的库是装在home路径下的,那么可能会出现,利用/freenect2Config.cmake找不到库,直接cmake报错:
Please set them or make sure they are set and tested correctly in the CMake files: freenect2_LIBRARY
这样的话,就需要修修改一下freenect2Config.cmake
将里面的usr/local/lib替换成你home路径下的lib路径即可。
参考:
1.libfreenect https://github.com/OpenKinect/libfreenect2/blob/master/README.md#libfreenect2
2 Kinect V2在Ubuntu 14.04系统上的驱动配置与安装 https://www.mobibrw.com/2017/8321
3 Python报错module 'scipy.misc' has no attribute 'imresize'
https://blog.csdn.net/qq1483661204/article/details/78155073#commentBox