ROS indigo下Kinect v2的驅動安裝與調試


ROS indigo下Kinect v2的驅動安裝與調試

一、libfreenect2源碼安裝與測試

github地址:https://github.com/OpenKinect/libfreenect2

最終測試終端顯示如下:

yuanlibin@yuanlibin:~/libfreenect2/build$ ./bin/Protonect
Version: 0.2.0
Environment variables: LOGFILE=<protonect.log>
Usage: ./bin/Protonect [-gpu=<id>] [gl | cl | clkde | cuda | cudakde | cpu] [<device serial>]
        [-noviewer] [-norgb | -nodepth] [-help] [-version]
        [-frames <number of frames to process>]
To pause and unpause: pkill -USR1 Protonect
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 6 usb devices connected
[Error] [Freenect2Impl] failed to open Kinect v2: @2:5 LIBUSB_ERROR_ACCESS Access denied (insufficient permissions)
[Info] [Freenect2Impl] found 0 devices
no device connected!
yuanlibin@yuanlibin:~/libfreenect2/build$ sudo ./bin/Protonect
Version: 0.2.0
Environment variables: LOGFILE=<protonect.log>
Usage: ./bin/Protonect [-gpu=<id>] [gl | cl | clkde | cuda | cudakde | cpu] [<device serial>]
        [-noviewer] [-norgb | -nodepth] [-help] [-version]
        [-frames <number of frames to process>]
To pause and unpause: pkill -USR1 Protonect
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 6 usb devices connected
[Info] [Freenect2Impl] found valid Kinect v2 @2:5 with serial 003254763247
[Info] [Freenect2Impl] found 1 devices
[Info] [Freenect2DeviceImpl] opening...
[Info] [Freenect2DeviceImpl] transfer pool sizes rgb: 20*16384 ir: 60*8*33792
[Info] [Freenect2DeviceImpl] opened
[Info] [Freenect2DeviceImpl] starting...
[Debug] [Freenect2DeviceImpl] status 0x090000: 9729
[Debug] [Freenect2DeviceImpl] status 0x090000: 9731
[Info] [Freenect2DeviceImpl] submitting rgb transfers...
[Info] [Freenect2DeviceImpl] submitting depth transfers...
[Info] [Freenect2DeviceImpl] started
device serial: 003254763247
device firmware: 2.3.3913.0
[Debug] [DepthPacketStreamParser] not all subsequences received 0
[Debug] [DepthPacketStreamParser] skipping depth packet
[Debug] [DepthPacketStreamParser] skipping depth packet
[Debug] [DepthPacketStreamParser] skipping depth packet
[Debug] [DepthPacketStreamParser] skipping depth packet
[Debug] [RgbPacketStreamParser] skipping rgb packet!
[Info] [DepthPacketStreamParser] 4 packets were lost
[Info] [OpenGLDepthPacketProcessor] avg. time: 6.45557ms -> ~154.905Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.7065ms -> ~67.9972Hz
[Debug] [DepthPacketStreamParser] skipping depth packet
[Info] [DepthPacketStreamParser] 1 packets were lost
[Info] [OpenGLDepthPacketProcessor] avg. time: 7.00361ms -> ~142.783Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.0946ms -> ~70.9491Hz
[Debug] [DepthPacketStreamParser] skipping depth packet
[Info] [DepthPacketStreamParser] 1 packets were lost
[Info] [OpenGLDepthPacketProcessor] avg. time: 6.18776ms -> ~161.609Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.1463ms -> ~70.6897Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 5.06018ms -> ~197.621Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.4458ms -> ~69.2242Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 5.03082ms -> ~198.775Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.595ms -> ~68.5168Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 5.10736ms -> ~195.796Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 15.1131ms -> ~66.1676Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 5.05573ms -> ~197.795Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.2058ms -> ~70.3937Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 5.19326ms -> ~192.557Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 13.9728ms -> ~71.5675Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 5.41113ms -> ~184.804Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.4546ms -> ~69.1822Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 5.85608ms -> ~170.763Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.8185ms -> ~67.4832Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 6.48623ms -> ~154.173Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.9838ms -> ~66.7385Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 9.83449ms -> ~101.683Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 15.2176ms -> ~65.7133Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 11.5814ms -> ~86.3453Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 15.1936ms -> ~65.817Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 11.2376ms -> ~88.9869Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 15.3206ms -> ~65.2715Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 10.45ms -> ~95.6942Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 15.2756ms -> ~65.4638Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 9.9264ms -> ~100.741Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 15.1589ms -> ~65.9679Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 9.85152ms -> ~101.507Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 15.096ms -> ~66.2426Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 9.81726ms -> ~101.861Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.9504ms -> ~66.8881Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 9.81506ms -> ~101.884Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.9432ms -> ~66.9201Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 9.83013ms -> ~101.728Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.9232ms -> ~67.0098Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 7.37377ms -> ~135.616Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.6522ms -> ~68.2493Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 7.17901ms -> ~139.295Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 14.5835ms -> ~68.5707Hz
[Info] [OpenGLDepthPacketProcessor] avg. time: 7.17929ms -> ~139.289Hz
[Info] [TurboJpegRgbPacketProcessor] avg. time: 15.2584ms -> ~65.5379Hz
[Info] [Freenect2DeviceImpl] stopping...
[Info] [Freenect2DeviceImpl] canceling rgb transfers...
[Info] [Freenect2DeviceImpl] canceling depth transfers...
[Info] [Freenect2DeviceImpl] stopped
[Info] [Freenect2DeviceImpl] closing...
[Info] [Freenect2DeviceImpl] releasing usb interfaces...
[Info] [Freenect2DeviceImpl] deallocating usb transfer pools...
[Info] [Freenect2DeviceImpl] closing usb device...
[Info] [Freenect2DeviceImpl] closed
[Info] [Freenect2DeviceImpl] closing...
[Info] [Freenect2DeviceImpl] already closed, doing nothing
View Code

二、iai-kinect2源碼安裝與測試

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

說明:

在安裝依賴項中需要opencv2.4.*,不能用opencv3.*。

測試過程中先默認路徑安裝了opencv2.4.9,然后安裝iai-kinect2,可以正常運行。但是指定路徑安裝了opencv3.1.0就無法運行了。

但是在默認路徑安裝了opencv2.4.9后,先指定路徑安裝了opencv3.1.0,最后安裝iai-kinect2,是可以正常運行的。

 

1. 新建一個catkin_ws工作空間,編譯安裝iai-kinect2

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

2. 測試是否安裝成功

roslaunch kinect2_bridge kinect2_bridge.launch

若出現以下錯誤:

[FATAL] [1479522843.484561710]: Failed to load nodelet '/kinect2_points_xyzrgb_qhd` of type `depth_image_proc/point_cloud_xyzrgb` to manager `kinect2'
[FATAL] [1479522843.485011986]: Failed to load nodelet '/kinect2_points_xyzrgb_sd` of type `depth_image_proc/point_cloud_xyzrgb` to manager `kinect2'
[FATAL] [1479522843.485174496]: Failed to load nodelet '/kinect2_bridge` of type `kinect2_bridge/kinect2_bridge_nodelet` to manager `kinect2'
[kinect2-2] process has died [pid 14131, exit code -11, cmd /opt/ros/indigo/lib/nodelet/nodelet manager __name:=kinect2 __log:=/home/yuanlibin/.ros/log/a0154834-ae00-11e6-9636-1c1b0d61bf22/kinect2-2.log].
log file: /home/yuanlibin/.ros/log/a0154834-ae00-11e6-9636-1c1b0d61bf22/kinect2-2*.log
[kinect2_bridge-3] process has died [pid 14138, exit code 255, cmd /opt/ros/indigo/lib/nodelet/nodelet load kinect2_bridge/kinect2_bridge_nodelet kinect2 __name:=kinect2_bridge __log:=/home/yuanlibin/.ros/log/a0154834-ae00-11e6-9636-1c1b0d61bf22/kinect2_bridge-3.log].
log file: /home/yuanlibin/.ros/log/a0154834-ae00-11e6-9636-1c1b0d61bf22/kinect2_bridge-3*.log
[kinect2_bridge-3] restarting process
process[kinect2_bridge-3]: started with pid [14349]
[ INFO] [1479522843.775811528]: Loading nodelet /kinect2_bridge of type kinect2_bridge/kinect2_bridge_nodelet to manager kinect2 with the following remappings:
[ INFO] [1479522843.777704976]: waitForService: Service [/kinect2/load_nodelet] could not connect to host [yuanlibin:45567], waiting...
[kinect2_points_xyzrgb_sd-4] process has died [pid 14139, exit code 255, cmd /opt/ros/indigo/lib/nodelet/nodelet load depth_image_proc/point_cloud_xyzrgb kinect2 rgb/camera_info:=kinect2/sd/camera_info rgb/image_rect_color:=kinect2/sd/image_color_rect depth_registered/image_rect:=kinect2/sd/image_depth_rect depth_registered/points:=kinect2/sd/points __name:=kinect2_points_xyzrgb_sd __log:=/home/yuanlibin/.ros/log/a0154834-ae00-11e6-9636-1c1b0d61bf22/kinect2_points_xyzrgb_sd-4.log].
log file: /home/yuanlibin/.ros/log/a0154834-ae00-11e6-9636-1c1b0d61bf22/kinect2_points_xyzrgb_sd-4*.log
[kinect2_points_xyzrgb_qhd-5] process has died [pid 14140, exit code 255, cmd /opt/ros/indigo/lib/nodelet/nodelet load depth_image_proc/point_cloud_xyzrgb kinect2 rgb/camera_info:=kinect2/qhd/camera_info rgb/image_rect_color:=kinect2/qhd/image_color_rect depth_registered/image_rect:=kinect2/qhd/image_depth_rect depth_registered/points:=kinect2/qhd/points __name:=kinect2_points_xyzrgb_qhd __log:=/home/yuanlibin/.ros/log/a0154834-ae00-11e6-9636-1c1b0d61bf22/kinect2_points_xyzrgb_qhd-5.log].
log file: /home/yuanlibin/.ros/log/a0154834-ae00-11e6-9636-1c1b0d61bf22/kinect2_points_xyzrgb_qhd-5*.log
[kinect2_points_xyzrgb_sd-4] restarting process
process[kinect2_points_xyzrgb_sd-4]: started with pid [14368]
[kinect2_points_xyzrgb_qhd-5] restarting process
process[kinect2_points_xyzrgb_qhd-5]: started with pid [14369]
[kinect2_points_xyzrgb_hd-6] process has finished cleanly
log file: /home/yuanlibin/.ros/log/a0154834-ae00-11e6-9636-1c1b0d61bf22/kinect2_points_xyzrgb_hd-6*.log
[kinect2_points_xyzrgb_hd-6] restarting process
process[kinect2_points_xyzrgb_hd-6]: started with pid [15202]
View Code

是因為在.bashrc文件中要添加如下代碼,並且要注釋掉原來的rgbdslam_catkin_ws的那行代碼

#source /home/yuanlibin/rgbdslam_catkin_ws/devel/setup.bash
source /home/yuanlibin/catkin_ws/devel/setup.bash

最后測試

終端1

roslaunch kinect2_bridge kinect2_bridge.launch

終端2

rosrun kinect2_viewer kinect2_viewer

測試成功。

此時,可以按空格或者s鍵單張采集彩色圖、深度圖及其對應的點雲圖圖像。

如果要連續采集圖像,請參考博文:http://blog.csdn.net/sunbibei/article/details/51594824

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM