Background

我试图让OpenNI在我的VM上播放 .

通过以下this guide安装以下内容:

  • 机器在VMWare Fusion 10上运行16.04 Ubuntu .

  • ROS动能

  • SensorKinect驱动程序

  • OpenNI V1不稳定1.5.4.0

  • NITE 1.5.2.23-dev

  • Kinect V1

Here's a link to my configure script, which I use to setup my environment, if you'd like to try to replicate this...

编辑:我在另一台机器上安装了原生Ubuntu,它的工作原理 . 这可能与USB虚拟化有关 .

当我运行openni_launch并拉起rviz时,我看不到任何深度图像 .

What I've Tried:

日志文件让我相信SensorKinect正在工作

roslaunch openni_launch openni.launch 日志:

Warning: USB events thread - failed to set priority. This might cause loss of data...
Warning: USB events thread - failed to set priority. This might cause loss of data...
[ INFO] [1522121606.505144800]: Number devices connected: 1
[ INFO] [1522121606.505358009]: 1. device on bus 001:54 is a SensorKinect (2ae) from PrimeSense (45e) with serial id '0000000000000000'
[ INFO] [1522121606.506565331]: Searching for device with index = 1
[ INFO] [1522121607.607632451]: Opened 'SensorKinect' on bus 1:54 with serial number '0000000000000000'
[ INFO] [1522121607.653087186]: rgb_frame_id = 'camera_rgb_optical_frame' 
[ INFO] [1522121607.653390668]: depth_frame_id = 'camera_depth_optical_frame' 
[ WARN] [1522121607.662732904]: Camera calibration file /home/rpg711/.ros/camera_info/rgb_0000000000000000.yaml not found.
[ WARN] [1522121607.662946732]: Using default parameters for RGB camera calibration.
[ WARN] [1522121607.663092588]: Camera calibration file /home/rpg711/.ros/camera_info/depth_0000000000000000.yaml not found.
[ WARN] [1522121607.663216989]: Using default parameters for IR camera calibration.
terminate called after throwing an instance of 'openni_wrapper::OpenNIException'
  what():  virtual void openni_wrapper::OpenNIDevice::startDepthStream() @ /tmp/binarydeb/ros-kinetic-openni-camera-1.11.0/src/openni_device.cpp @ 257 : starting depth stream failed. Reason: Failed to send a USB control request!
[camera/camera_nodelet_manager-2] process has died [pid 42770, exit code -6, cmd /opt/ros/kinetic/lib/nodelet/nodelet manager __name:=camera_nodelet_manager __log:=/home/rpg711/.ros/log/9ae56062-316f-11e8-942d-000c293fa5dd/camera-camera_nodelet_manager-2.log].
log file: /home/rpg711/.ros/log/9ae56062-316f-11e8-942d-000c293fa5dd/camera-camera_nodelet_manager-2*.log

dmesg | tail output ,因为我想验证我的kinect是否正确枚举了USB设备 . 请注意,序列号对应于openni_launch实例中的枚举设备:

$ dmesg | tail
[35661.422151] usb 1-2: new high-speed USB device number 65 using ehci-pci
[35661.580316] usb 1-2: New USB device found, idVendor=045e, idProduct=02ae
[35661.580319] usb 1-2: New USB device strings: Mfr=2, Product=1, SerialNumber=3
[35661.580320] usb 1-2: Product: Xbox NUI Camera
[35661.580321] usb 1-2: Manufacturer: Microsoft
[35661.580322] usb 1-2: SerialNumber: 0000000000000000

lsusb 输出,因为我想110%确定我不会发疯 . 请注意,设备ID 045e:02ae与openni日志对应1:1:

$ lsusb
Bus 001 Device 075: ID 045e:02ae Microsoft Corp. Xbox NUI Camera
Bus 001 Device 002: ID 0e0f:000b VMware, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc. 
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Question:

如何让rviz检测我的深度图像?