系统环境:ubuntu 16.04
NVIDIA显卡版本:Geforce T705
NVIDIA显卡驱动:390.87
CUDA:8.0
cudnn版本:V5.1.10
OpenCV版本:2.4.9(注意:要调用iai_kinect里面的kinect2_bridge函数必须用2.4.x的OpenCV版本,修正:后来发现不安装OpenCV也没有问题)
gcc g++版本:5.4.0
很好的一篇参考:ROS下Kinect2的驱动安装及简单应用
需要注意的是Kinect V1 与 Kinect V2的驱动和功能包是不一样的。
sudo apt-get install ros-kinetic-openni-camera ros-kinetic-openni-launch
sudo apt-get install ros-kinetic-freenect-camera
sudo apt-get install ros-kinetic-freenect-stack
rosstack profile && rospack profile
//openni
//libfreenect for kinect
sudo apt-get install libfreenect-dev
sudo apt-get install ros-kinetic-freenect-launch
sudo apt-get install ros-kinetic-depthimage-to-laserscan
//openni
//Installing dependencies:
sudo apt-get install g++ python libusb-1.0-0-dev freeglut3-dev
sudo apt-get install doxygen graphviz mono-complete
sudo apt-get install openjdk-9-jdk
//Intalling OpenNI:
git clone https://github.com/OpenNI/OpenNI.git
cd OpenNI
git checkout Unstable-1.5.4.0
cd Platform/Linux/CreateRedist
sudo chmod +x RedistMaker
./RedistMaker
cd ../Redist/OpenNI-Bin-Dev-Linux-[1.5.4.0]
sudo ./install.sh
//install Kinect driver
git clone git://github.com/ph4m/SensorKinect.git
cd SensorKinect/Platform/Linux/CreateRedist
sudo chmod +x RedistMaker
./RedistMaker
cd ../Redist/Sensor-Bin-Linux-x64-v*
sudo ./install.sh
安装完成后,插入Kinect传感器,运行节点就能使用Kinect。
启动roscore后,在另外一个终端运行如下命令:
rosrun openni_camera openni_node
roslaunch openni_launch openni.launch
roslaunch freenect_launch freenect.launch
先使用以下命令查看电脑适合的NVIDIA驱动,得知可安装比较稳定的NVIDIA 390.87驱动(虽然上面显示最新的是4xx之后了,但是安装总不成功,最后试了390.87能安装成功):
sudo apt-cache search nvidia-*
先禁用系统自带的驱动,把nouveau驱动加入黑名单,即在/etc/modprobe.d/blacklist.conf的后面加入:
blacklist nouveau
2)备份initramfs文件
sudo mv /boot/initramfs- ( u n a m e − r ) . i m g / b o o t / i n i t r a m f s − (uname -r).img /boot/initramfs- (uname−r).img/boot/initramfs−(uname -r).img.bat
3)重新建立initramfs文件
sudo dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
4)检查nouveau驱动,确保没有被加载
lsmod | grep nouveau
在官网下载驱动安装的方法总失败,遂弃之。
到官网下载了最新的驱动,ctrl+alt+F1,进入命令模式,使用runfile的方式安装驱动,除了一个什么“”Would you like to run the nvidia-xconfig utility to automatically update your X configuration file…”什么的,选择 了No,其他全都选了y(最后一个选项是要在实时系统内核中使用Nvidia驱动):
安装Nvidia驱动:
sudo apt-get install nvidia-390
安装完后记得要重启,输入以下代码才能看到有输出,不然会报找不到nvidia的错误:
nvidia-smi
nvidia驱动最难安装,安装好了nvidia驱动之后,到cuda官网选择下载驱动能兼容的cuda,接下来倒是非常顺利。
安装CUDA 8.0 run文件,在问到是否安装nvidia驱动时选择no,因为前面已经装好了,其他都是yes,问到安装路径时不填(安装到默认路径)就好了,把下载好的cudnn5.1解压,首先打开里面的include文件夹,打开终端输入:
sudo cp cudnn.h /usr/local/cuda/include/
cd ~/cuda/lib64
sudo cp lib* /usr/local/cuda/lib64/
安装完cudnn后,需要修改链接:
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so
设置环境变量,记得把代码里面的8.0改成你自己的cuda版本号:
echo 'export PATH=/usr/local/cuda-8.0/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
先安装OpenCV
安装的时候出现问题:
nvcc fatal : Unsupported gpu architecture 'compute_11' CMake Error at cuda_compile_generated_matrix_operations.cu.o.cmake:206 (message): Error generating /home/smie/Documents/opencv2.4.11/build/modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_gene rated_matrix_operations.cu.o make[2]: *** [modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/./cuda_compile_generated_matrix_operations.cu.o] Error 1 make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2 make[1]: ***
以上的报错是由于要在camke的过程中选择适合的CUDA的计算能力,我的电脑显卡Geforce T705,是3.5的计算能力,根据在Wikipedia上查找到的信息,对应的CUDA_GENERATION版本是Kepler。
因此在Cmake安装OpenCV时使用以下命令可解决:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_TIFF=ON -D BUILD_EXAMPLES=ON -D CUDA_GENERATION=Kepler -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_OPENNI=ON -D WITH_OPENGL=ON ..
make的时候有报__mempcpy__错误,将CmakeLists文件开头增加一句命令就好:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")
然后再用以下命令重新配置:
cmake-gui
点击configure与generation
然后输入以下命令就可以了。
make
sudo make install
OpenCV安装依旧报错:
errors detected in the compilation of "/tmp/tmpxft_000038a5_00000000-10_NCVPyramid.compute_35.cpp1.ii".
CMake Error at cuda_compile_generated_NCVPyramid.cu.o.cmake:266 (message):
Error generating file
/media/xiong/9971bab0-8b7b-433e-9d2a-d6344dc82aac/opencv-2.4.9/build/modules/gpu/CMakeFiles/cuda_compile.dir/src/nvidia/core/./cuda_compile_generated_NCVPyramid.cu.o
修改NCVPixelOperations.hpp文件即可。
在youtube上看到了一种方法,首先在
installLibfreenect2.sh下载网址上下载包,按照里面教程来装就没有问题。解压至home文件夹下,打开终端输入如下指令:
sh installLibfreenect2.sh
最后使用以下命令为kinect2配置接口协议,安装成功:
sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/#配置接口协议,注意运行目录为上一层的目录
进入bin文件夹下,运行如下命令:
./Protonect
参考文章:
1 ROS 安装kinect驱动+测试
2 使用PCL点云库在kinect v2设备上运行pcl_openni2_viewer时解决no device connected问题
3 安装kinect v1驱动和kinect v2驱动,适合新手入门
4 Ubuntu 14.04中升级gcc到版本4.9.2并切换使用它们
5 Ubuntu 16.04安装 CUDA7.5
6 Ubuntu 16.04 + Nvidia 显卡驱动 + Cuda 8.0 (问题总结 + 解决方案)
7 Ubuntu16.04系统下CUDA7.5配置Caffe教程
8 ubuntu下安装nvidia显卡驱动
9 编译opencv 2.4.13error:1 /usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope
10 Unsupported gpu architecture 'compute_11’解决方法
11 github libfreenect2安装
12 For Kinect V2
13 OpenKinect
14 PCL点云库安装