目录
1.libfreenect2安装
(1)安装依赖
sudo apt-get install build-essential cmake pkg-config libturbojpeg libjpeg-turbo8-dev mesa-common-dev freeglut3-dev libxrandr-dev libxi-dev
(2)下载libfreenect2
在工作空间的文件夹src内进行操作。
cd ~/catkin_ws/src
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
cd depends; ./download_debs_trusty.sh
(3)安装其它
sudo dpkg -i debs/libusb*deb
sudo apt-get install libturbojpeg libjpeg-turbo8-dev
sudo apt-get install libglfw3-dev
sudo dpkg -i debs/libglfw3*deb; sudo apt-get install -f; sudo apt-get install libgl1-mesa-dri-lts-vivid
sudo apt-add-repository ppa:floe/beignet; sudo apt-get update; sudo apt-get install beignet-dev; sudo dpkg -i debs/ocl-icd*deb
(4)编译libfreenect2
cd libfreenect2
mkdir build && cd build
cmake ..
make
make install
默认是安装在usr/local中。
(5)建立别名
cd libfreenect2
sudo cp platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
(6)运行Kinect V2
重新插拔KInect V2,运行:
cd libfreenect2/build
./bin/Protonect
注意:如果这时显示No device connected
cd /etc/udev/rules.d
查看是否存在一个名为90-kinect2.rules的文件.如果存在,则sudo udevadm control --reload把kinect电源和数据线拔掉,再依次插入供电和数据线,若还是不行,重启一下电脑,基本可解决问题.
另外注意,v2只能连接电脑的usb3.0,就是电脑上蓝色的usb插口。
最近我发现了一个问题,我的电脑上连接了鼠标和键盘,再用kinect V2就始终显示[Kinect2Bridge::initDevice] no Kinect2 devices found!。我把键盘和鼠标拔掉了,再多拔插几次kinect就可以用了,不知道这个是不是我单独遇到的,还是其他人也遇到过。希望有大手子可以解答一下。
操作无误可显示如下图像:
2.安装iai-kinect2
(1)下载安装
把iai和lib放在同一个工作空间内,cd ~/catkin_ws/src
git clone https://github.com/code-iai/iai_kinect2.git
(2)编译iai
$cd iai_kinect2
$rosdep install -r --from-paths .
$cd ~/catkin_ws
$catkin_make
(3)运行iai
$roscore
$roslaunch kinect2_bridge kinect2_bridge.launch
$rosrun kinect2_viewer kinect2_viewer
可能会出现的问题:
[Error] [DepthPacketStreamParser] Packet buffer is NULL
[ERROR] [1598839556.338267422]: [DepthRegistrationOpenCL::init] could not find any suitable device
[Info] [Freenect2DeviceImpl] closing...
[Info] [Freenect2DeviceImpl] releasing usb interfaces...
[Info] [Freenect2DeviceImpl] deallocating usb transfer pools...
[Info] [Freenect2DeviceImpl] closing usb device...
[Info] [Freenect2DeviceImpl] closed
[ERROR] [1598839556.338687227]: [Kinect2Bridge::start] Initialization failed!
[Info] [Freenect2DeviceImpl] closing...
[Info] [Freenect2DeviceImpl] already closed, doing nothing
[Error] [OpenCLAllocator] queue.enqueueUnmapMemObject(b->buffer, b->data, NULL, &event): -36
[Error] [OpenCLAllocator] queue.enqueueUnmapMemObject(b->buffer, b->data, NULL, &event): -36
[Error] [OpenCLAllocator] queue.enqueueUnmapMemObject(b->buffer, b->data, NULL, &event): -36
[FATAL] [1598839556.443583332]: Failed to load nodelet '/kinect2_bridge` of type `kinect2_bridge/kinect2
这是由于电脑没有安装GPU,将命令修改为:
rosrun kinect2_bridge kinect2_bridge _depth_method:=cpu _reg_method:=cpu
操作无误可以出现: