Kinect V2在linux下的驱动安装与使用(从装Ubuntu系统开始哦)
Kinect v2买来后,应该这样装哦
关于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。
驱动包安装前,需要进行一些依赖项的配置。
- Install build tools
sudo apt-get install build-essential cmake pkg-config
- Install libusb
sudo apt-get install libusb-1.0-0-dev
- Install TurboJPEG
sudo apt-get install libturbojpeg libjpeg-turbo8-dev
- Install OpenGL
sudo apt-get install libglfw3-dev
- 之后就到libfreenect2文件下编印安装就好:
在libfreenect2文件目录下,打开terminal:
mkdir build
cd build
camke ..
make
make install
- 上述只是安装了ubuntu16.04和Kinect V2 之间的驱动关系,之后还需要ROS和Kinect V2 之间,还需要iai_kinect2这个包来支撑。这个包大家直接下载下来,在catkin_make的工作目录下,catkin_make一下就好了。
- 最后,重新启动下电脑,重新插拔Kinect 的USB 接口。重新回到bin目录下,运行实例程序:
./Protonect
如果一切顺利,就可以看到带有些阴影的点云图像。
之所以有阴影,是因为相机还未进行标定和校准。下面就来进行kinect V2呢 的相机标定与校准。
kinect V2相机的标定与校准
相机的标定与校准程序利用的是Kinect V2的校准包,也就是上文安装的iai_kinect2包。
- 我们要进行相机标定,所以要准备chess棋盘格,我的棋盘格为8x11x0.02(短边的特征棋盘格角点数x长边棋盘格角点x棋盘格长度2cm)。
- 在iai_kincect2/kinect2_bridge/data下,建一个文件夹,存放标定拍的照片,文件名任意。
- 标定彩色相机,拿起棋盘格标定板,找到相机可以识别棋盘格特征点的位置,截取图像,图像截取时,在图像界面内,按“空格键"或”s“,即可截图,为了标定结果的准确性,一般取10~20幅图像:
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 record color
- 校准偏差:
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 calibrate color
- 以同样方法,标定并校准ir(红外相机信息):
//标定ir红外相机信息、在校准ir信息
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 record ir
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 calibrate ir
- 同样的方法,早校准图像和输据的同步信息(synchronized):
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 record sync
rosrun kinect2_calibration kinect2_calibration chess8x11x0.02 calibrate sync
- 查看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
- 在本节2中所述data目录下,新建文件夹,文件夹名称即为所得的serial number(文件夹名应为一串数字,而非字母哦)。
- 将之前存放图像输据的文件夹中,calib_color.yaml calib_depth.yaml calib_ir.yaml calib_pose.yaml,这四个文件,复制粘贴到serial number这串数字的文件夹中。
10.之后重新 rosrun kinenct_bridege一下,然后用重新打开一个terminal,用下述命令图像显示点云数据,是不是效果比之前好些了呢。
rosrun kinect2_viewer kinect2_viewer
更多推荐
所有评论(0)