Kinect V2在linux下的驱动安装与使用(从装Ubuntu系统开始哦)

关于Kinect的背景

教研室采购了一个Kinect V2,拿来玩玩。首先,Kinect V2设备的运行需要有驱动支持。而我的Kinect 主要在Ubuntu系统下运行,因而需要在Ubuntu系统下安装驱动。

之前电脑中的ubuntu系统是安装在虚拟机下的,在经过搜索与咨询后,发现Kinect V2的驱动在虚拟机中虽然可以安装,但是设备无法被虚拟机检测到,即使我将Kinect 所需的USB3.0映射到虚拟机也不行。而且,更为重要的是,Kinect v2处理的数据量包括深度信息、彩色图像信息以及它们之间的匹配,因而Kinect V2需求的数据传送量很大,大约为250M/s。而这么大的数据传输量,也决定了不适合用虚拟机装Kinect的驱动。
因而,首先需要在原有的WIndows系统基础上,重新安装一个具有ubuntu的双系统。之后在新系统下安装驱动、测试相机、标定和校准相机,这也是本文的主要内容。

Windows下安装ubuntu双系统

1.首先,在windows系统下,分配留给ubuntu的硬盘空间。
2. 之后在官方(阿里云镜像)按需下载镜像,我用的是深圳蓝鲸智能机器人有限公司的xiaoqiang.ios.该镜像是基于ubuntu16.04的ros镜像。
3. 下载类似ultraISO的启动盘制作工具,将U盘制成启动盘。
4. 重启系统,进入BIOS启动界面,将UEFI的u盘启动作为第一选项。
5. 输入系统预设系统用户名、帐号、密码信息后,即可进入安装界面。
6. 进入分区界面,选中要安装的硬盘(别手抖选成系统盘,否则Windows下什么都没了哟!),按需分配/boot/efi、/SWAP、/等区,一般“/”区最大,把前两个区分好,剩下的都给它就好了。
7. 之后,装完系统,再把U盘拔掉,重新进入BIOS,选择UBUNTU启动选项,进入系统就完成安装了!

uBuntu16.04下安装kinect v2的驱动

Kinect V2在ubuntu系统下的驱动包,叫libfreenect2
驱动包安装前,需要进行一些依赖项的配置。

  1. Install build tools
    sudo apt-get install build-essential cmake pkg-config
  2. Install libusb
    sudo apt-get install libusb-1.0-0-dev
  3. Install TurboJPEG
    sudo apt-get install libturbojpeg libjpeg-turbo8-dev
  4. Install OpenGL
    sudo apt-get install libglfw3-dev
  5. 之后就到libfreenect2文件下编印安装就好:
    在libfreenect2文件目录下,打开terminal:
mkdir build
cd build 
camke ..
make 
make install
  1. 上述只是安装了ubuntu16.04和Kinect V2 之间的驱动关系,之后还需要ROS和Kinect V2 之间,还需要iai_kinect2这个包来支撑。这个包大家直接下载下来,在catkin_make的工作目录下,catkin_make一下就好了。
  2. 最后,重新启动下电脑,重新插拔Kinect 的USB 接口。重新回到bin目录下,运行实例程序:
./Protonect

如果一切顺利,就可以看到带有些阴影的点云图像。
之所以有阴影,是因为相机还未进行标定和校准。下面就来进行kinect V2呢 的相机标定与校准。

kinect V2相机的标定与校准

相机的标定与校准程序利用的是Kinect V2的校准包,也就是上文安装的iai_kinect2包。

  1. 我们要进行相机标定,所以要准备chess棋盘格,我的棋盘格为8x11x0.02(短边的特征棋盘格角点数x长边棋盘格角点x棋盘格长度2cm)。
  2. 在iai_kincect2/kinect2_bridge/data下,建一个文件夹,存放标定拍的照片,文件名任意。
  3. 标定彩色相机,拿起棋盘格标定板,找到相机可以识别棋盘格特征点的位置,截取图像,图像截取时,在图像界面内,按“空格键"或”s“,即可截图,为了标定结果的准确性,一般取10~20幅图像:
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 record color
  1. 校准偏差:
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 calibrate color
  1. 以同样方法,标定并校准ir(红外相机信息):
//标定ir红外相机信息、在校准ir信息
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 record ir

rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 calibrate ir
  1. 同样的方法,早校准图像和输据的同步信息(synchronized):
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 record sync
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 calibrate sync
  1. 查看kinect下的serial number:
xiaoqiang@xiaoqiang:~$ rosrun kinect2_bridge kinect2_bridge 
[ INFO] [Kinect2Bridge::initialize] parameter:
        base_name: kinect2
           sensor: default
        fps_limit: -1
       calib_path: /home/xiaoqiang/Documents/ros/src/iai_kinect2/kinect2_bridge/data/
          use_png: false
     jpeg_quality: 90
        png_level: 1
     depth_method: opengl
     depth_device: -1
       reg_method: default
       reg_device: -1
        max_depth: 12
        min_depth: 0.1
       queue_size: 2
 bilateral_filter: true
edge_aware_filter: true
       publish_tf: false
     base_name_tf: kinect2
   worker_threads: 4
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 5 usb devices connected
[Info] [Freenect2Impl] found valid Kinect v2 @2:5 with serial 1650×××33947

上图的最后一行,就是serial number,通过运行下述命令行得到。

rosrun kinect2_bridge kinect2_bridge 
  1. 在本节2中所述data目录下,新建文件夹,文件夹名称即为所得的serial number(文件夹名应为一串数字,而非字母哦)。
  2. 将之前存放图像输据的文件夹中,calib_color.yaml calib_depth.yaml calib_ir.yaml calib_pose.yaml,这四个文件,复制粘贴到serial number这串数字的文件夹中。
    10.之后重新 rosrun kinenct_bridege一下,然后用重新打开一个terminal,用下述命令图像显示点云数据,是不是效果比之前好些了呢。
rosrun kinect2_viewer kinect2_viewer 
  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值