kinect_v2-ros(iai_kinect2)安装,环境ubuntu1604+INTEL+NVIDIA

使用Kinect_v2相机做一点东西,需要在ros里面用,所以需要安装kinect与ros间的驱动,即iai_kinect2

参考:

https://github.com/code-iai/iai_kinect2 

https://blog.csdn.net/wuguangbin1230/article/details/77184032

过程中需要安装libfreenect2(点击查看安装详细过程),libfreenect2安装后测试遇到问题,点击libfreenect2错误解答

前言:

2020.8.5日第二次安装libfreenect2补充

    OpenNI是微软的xbox 360配件kinect,在PC上的开源驱动必须安装的一个API。刚开始还以为OpenNI是一种类似cuda的运算加速应用。。。可为什么libfreenect2中安装OpenNI2是可选的呢?求教

2020.8.7日补充:

   最开始的时候,kinect的转接盒的线没插紧。。。导致虽然侥幸成功了,但是运行显示出来的视频特别卡。。。我还以为是驱动哪里没装好导致性能不够。。。折腾了两天各种装cuda、NVIDIA、屏蔽核显操作。。。

   甚至今天忽然怎么都启动不了kinect,我还以为是usb驱动、opengl、opencl、只用独显等出了问题,挨个折腾没效果。。最后发现原来线没插紧。。运行./libfreenect2/build/bin/Protonect报错是和插错usb2.0口是一样的,见遇到的问题的图。记得插好线...插好的长这样:

 一、第一次安装libfreenect2

  第一次安装:使用的是OpenNI2, 详见libfreenect2安装过程中给出的optional项;未安装cuda

  参考:https://blog.csdn.net/wuguangbin1230/article/details/77184032,详细过程见libfreenect2

  过程如下:

git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libturbojpeg libjpeg-turbo8-dev
sudo apt-get install libglfw3-dev
#安装OPENNI2
sudo apt-get install libopenni2-dev

mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2  #这样make后生成的库在home/gyh里,也可以用usr/local,这样生成的库就在usr/local里
make
make install

  设定udev rules:

sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/

  然后重新插拔Kinect2。尝试运行Demo程序:

gyh@gyh:~/libfreenect2/build$ ./bin/Protonect

  不出意外, 应该能够看到弹出窗口,显示如下效果:

 遇到的问题:

    1.装好后运行./bin/Protonect,不成功。结果如下图

  解决办法:参考 libfreenect2错误解答

    使用 lsusb -t  查看kinect连接的usb接口,确保为usb3.0接口:

    如下图,Bus 02, Driver=xhci_hcd/6p, 5000M;这个就是3.0口

    libfreenect2错误解答中给出的连接正确时的显示信息:

    更换正确的usb插口还不行的话,就多拔插usb头几次,多打开几次终端试几次。

二、安装编译iai_kinect2

    参考github/iai_kinect2

1.将源码包clone到工作空间中,我的是在~/research_subject/test_ws/src

cd ~/research_subject/test_ws/src
git clone https://github.com/code-iai/iai_kinect2.git
cd iai_kinect2
rosdep install -r --from-paths .
cd ~/research_subject/test_ws
catkin_make -DCMAKE_BUILD_TYPE="Release"

注意:rosdep会提示错误信息如下图:无法定位[kinect2_bridge] 和 [depth_registration],这是正常的,因为kinect2_bridge和kinect2_registration是本地的包,不需要安装

 2.连接好kinect相机,然后运行kinect2_bridge

roslaunch kinect2_bridge kinect2_bridge.launch

 运行后不会有什么反应,如果没有错误,就会停留在等待client启动的状态:

[ INFO] [1596467145.242440487]: [Kinect2Bridge::main] waiting for clients to connect

3.启动kinect2_viewer

rosrun kinect2_viewer kinect2_viewer

 就能看到弹出窗口,显示图像和点云叠加的信息。但是对的不准,需要校正。

三、第二次安装libfreenect2(使用cuda加速)

使用NVIDIA+INTEL核显双显卡的机子,测试Protonect和kinect2_viewer时,图像信息特别卡。希望用cuda加速

1.首先安装cuda

  • 此前已经安装了NVIDIA显卡驱动,在NVIDIA官网下载的对应显卡和系统版本的驱动,然后进行安装,教程见文件:1604安装问题。安装后的附加驱动里查看显卡驱动是这样的:

  • 进行cuda的安装,教程见文件:cuda9.0安装教程。安装包在官网下载9.0对应系统的runfile版本。我的是cuda_9.0.176_384.81_linux.run
  • 安装好cuda后,重启电脑发现显卡驱动又没了(显示分辨率不对,双屏没法用),但是还好没有循环登录或黑屏的问题。此时用cuda安装教程给的解决方法也没用,就重装一遍NVIDIA显卡驱动

2.重新安装libfreenect2

第一次装的时候,根据libfreenect2给出的optional项,安装了OpenNI2,这一次想着既然用了cuda了,是不是就不用再装OpenNI2了?因为他们都是optional的项,选一个就行了。

于是就把OpenNI2卸载了(apt remove),装libfreenect2时没问题,不过后面编译iai_kinect2的时候就报错缺少OpenNI2了。。于是又装回来了。

将第一次新建的build文件夹删除,然后重新开始编译libfreenect2,过程如下

#这些第一次安装libfreenect2时都做过了(当然从头装的话还是要做一遍的)
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libturbojpeg libjpeg-turbo8-dev
sudo apt-get install libglfw3-dev

#安装OPENNI2
sudo apt-get install libopenni2-dev

#第二次装,编译时按照下面的流程
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
cmake .. -DENABLE_CXX11=ON -DCUDA_PROPAGATE_HOST_FLAGS=off
make
make install

Set up udev rules for device access:

sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/

然后重新插拔Kinect2。尝试运行Demo程序:

gyh@gyh:~/libfreenect2/build$ ./bin/Protonect

3.重新编译iai_kinect2

 编译之前需要安装一些依赖,还有配置一下cuda环境:

  • 安装依赖:
sudo apt-get install nvidia-modprobe opencl-headers
  • 把下面的两行添加到.bashrc中:
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:${LD_LIBRARY_PATH}"
export PATH="/usr/local/cuda/bin:${PATH}"
  • 终端再运行一下下面语句:
echo "/usr/local/cuda/lib64" | sudo tee /etc/ld.so.conf.d/cuda.conf

sudo ldconfig

 

本来以为是要把OpenNI2卸载掉的,可是编译iai_kinect2时,报错如下,就又装回来了

然后再编译就没问题了

编译过程同第一次安装

 

完成之后,运行kinect2_bridge:

roslaunch kinect2_bridge kinect2_bridge.launch

能看到有关cuda的信息输出:

 

 再运行kinect2_viewer,正常。但是没感到有啥提高,还是卡卡的。。可能还是没装对吧。待续...  线插好就不卡了

三、校准Kinect

待续。。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值