Ubuntu 16.04 安装 CUDA 9.0 + Kinect V2 安装与使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ydsf16/article/details/82992073

更多SLAM相关文章请参阅 SLAM专栏

这篇文章的目的是为了在Ubuntu 16.04下使用 Kinect V2。 Kinect V2的使用需要配准的彩色图像和深度图。彩色图像和深度图的注册是一个计算力要求很高的过程,一般需要GPU。一般的笔记本电脑会有集成的Intel显卡和Nvidia显卡两个显卡。使用Intel显卡并不能支撑这么高的计算力,因此必须使用Nvidia显卡。这就要求必须安装Nvidia显卡驱动和Nvidia显卡的OpenCL。Nvidia的CUDA驱动中带有OpenCL,因此只需要安装CUDA驱动即可,但是这个安装过程有一些事项必须注意,否则就会导致循环登录等一些糟心问题。

1. CUDA 安装

1.1 下载cuda驱动

在这个网址下载".run"的cuda驱动:https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal

1.2 安装cuda

STEP1 停掉Nouveau

新建一个黑名单:

sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

在里面添加

blacklist nouveau
options nouveau modeset=0

然后执行:

sudo update-initramfs -u

STEP2 退出图像化界面,同时按:CTRL+ALT+F1

STEP4 停掉服务

sudo /etc/init.d/lightdm stop

STEP5 安装CUDA

首先进入到“cuda_9.0.176_384.81_linux.run”文件所在的地址,然后执行:

sudo sh cuda_9.0.176_384.81_linux.run

这里需要特别注意,一定不要安装OpenGL,否则就会出现循环登录的情况。除了OpenGL以外的其他选项都可以进行安装。

STEP6 启动服务

sudo /etc/init.d/lightdm start

这时,就自动切换到了图形登录界面,输入密码进入系统。<这里可能会出现分辨率变化的问题,下面有解决方案>

STEP7 添加程序相关索引

首先打开 .barshrc文件

$ sudo gedit ~/.bashrc

添加如下信息:

export LD_LIBRARY_PATH="/usr/local/cuda/lib64:${LD_LIBRARY_PATH}"
export PATH="/usr/local/cuda/bin:${PATH}"

然后执行

source ~/.bashrc
echo "/usr/local/cuda/lib64" | sudo tee /etc/ld.so.conf.d/cuda.conf
sudo ldconfig

STEP8 验证是否安装正确

 验证驱动版本,保证驱动程序已经安装正常

cat /proc/driver/nvidia/version

查看NVCC版本

nvcc -V

分辨率错误处理

错误的原因是错误的xorg.conf配置,做法是将备份的conf重新设置回xorg.conf。

sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
sudo touch /etc/X11/xorg.conf
sudo reboot

2. 安装Kinect V2驱动

这里使用开源ROS驱动 IAI Kinect2: https://github.com/code-iai/iai_kinect2

安装IAI Kinect2之前还需要安装单独的驱动:https://github.com/OpenKinect/libfreenect2

两个驱动的安装都比较简单,而且官方的说明写的都很详细,直接看官方安装说明即可。

需要特别注意的是,安装 libfreenect2 的时候可以选择编译cuda:

cmake .. -DENABLE_CXX11=ON -DCUDA_PROPAGATE_HOST_FLAGS=off

如果安装libfreenect2的位置不是home的话,再编译IAI Kinect2的时候需要注意加上:

-Dfreenect2_DIR=path_to_freenect2/lib/cmake/freenect2 to catkin_make

3. 使用 Kinect V2

如果需要发布点云,需要运行launch文件

kinect2_bridge kinect2_bridge.launch

我们还可以手动设置kinect2_bridge.launch一些参数:

建议把depth_method 设为opencl,reg_method也设为opencl,这样处理的速度会比较快。

我们还可以设置图像发布的频率:设置fpb_limit 为自己想要发布的频率数值,比如20。

<arg name="base_name"         default="kinect2"/>
  <arg name="sensor"            default=""/>
  <arg name="publish_tf"        default="false"/>
  <arg name="base_name_tf"      default="$(arg base_name)"/>
  <arg name="fps_limit"         default="-1.0"/>
  <arg name="calib_path"        default="$(find kinect2_bridge)/data/"/>
  <arg name="use_png"           default="false"/>
  <arg name="jpeg_quality"      default="90"/>
  <arg name="png_level"         default="1"/>
  <arg name="depth_method"      default="default"/>
  <arg name="depth_device"      default="-1"/>
  <arg name="reg_method"        default="default"/>
  <arg name="reg_device"        default="-1"/>
  <arg name="max_depth"         default="12.0"/>
  <arg name="min_depth"         default="0.1"/>
  <arg name="queue_size"        default="5"/>
  <arg name="bilateral_filter"  default="true"/>
  <arg name="edge_aware_filter" default="true"/>
  <arg name="worker_threads"    default="4"/>
  <arg name="machine"           default="localhost"/>
  <arg name="nodelet_manager"   default="$(arg base_name)"/>
  <arg name="start_manager"     default="true"/>
  <arg name="use_machine"       default="true"/>
  <arg name="respawn"           default="true"/>
  <arg name="use_nodelet"       default="true"/>
<arg name="output" default="screen"/>

最后需要说的是IAI Kinect2是一个自适应的程序,只有订阅相关topic时,才生产数据,生产数据的频率设定的发布帧率而改变。

猜你喜欢

转载自blog.csdn.net/ydsf16/article/details/82992073
今日推荐