Kinect device causes conflict with Webcam

I am doing a project that involves both a kinect device and another USB webcam. The kinect portion and the webcam portion were built separately and were working as expected, but only during the integration step did I find out that my webcam cannot work every time my kinect device is plugged into the same computer.

Kinect device is running using Microsoft Kinect SDK and the webcam is connected using OpenCV which uses DirectShow to facilitates the connection.

I tried using other programs like virtualdub and other ways to access the webcam through Directshow, and every time it works when Kinect is unplugged, and stops working when Kinect is plugged in.

I thought it might has something to do with shortage of power for the webcam, but Directshow was able to recognize the webcam without being able to get the video stream. The webcam and kinect device are also on 2 different side of the computer so they aren't both drawing current near each other. The webcam does not have external power supply and only runs using a USB cable, but I also tried running the webcam using externally powered USB hub and the problem still exists.

What is causing Directshow to mess up the webcam connection every time Kinect device is connected at the same time as the webcam? Is there any way for me to check Directshow on the problem with the webcam?


Here's a partial answer. The problem is that your PC has a set of USB Host Controllers. You can see the list in the Device Manager in the "Universal Serial Bus controllers" tree. Your PC will have one only "USB2 Enhanced Host Controller", and several "USB Universal Host Controller" entries. When a device is loaded, the Windows kernel decides what host controller is needed and appropriate for the device. Printers, for example, have low bandwidth needs, and a Universal host is fine. All cameras, and the Kinect device, requires an Enhanced host, so both the webcam and Kinect end up on the same host. The Kinect LED is blinking, even when no obvious process is using it, so I suspect that the Kinect driver is using some (or a lot) of the USB bandwidth. I can't tell for sure until I hook up a USB packet monitor app. If the Kinect is using bandwidth, this would explain why your DirectShow app can access the webcam.

So what to do?

I have two older dual XEON workstations here (HP and Dell) and these use the same Intel 88201 chipset with one Enhanced Host and multiple Universals. Its not possible to load the Enhanced driver on a Universal host. A newer Acer laptop has multiple Enhanced hosts and I can stream video from the webcam and display a stream from the Kinect, at the same time.

The only solution is another PCI or PCI-e USB2 or USB3 card that supports the Enhanced driver. I'm preparing a Tech Note on my website that provides more detail.

SD PiXCL Automation Technologies, Canada.

链接地址: http://www.djcxy.com/p/81092.html

上一篇: 网络摄像头在Ubuntu的同一个USB总线上

下一篇: Kinect设备与网络摄像头产生冲突