locked
How to prevent interference between multiple Kinect v2 sensors RRS feed

  • Question

  • Hi,

    I have an application which used to use 3 Kinect v1 with partially overlapping field of views to have a large field of view of a scene. I am trying to upgrade this application to be able to use 3 Kinect v2, as the Kinect v1 is now discontinued.

    I am having problems dealing with interference on the depth stream. Every now and then, the light from one of the Kinect will give bad readings on another Kinect... This is not new, the Kinect v1 had interference problems too.

    To solve the interference problems with the v1, I used to simply toggle the IR emitters ON and OFF. Since my 3 Kinects don't need to acquire a frame at the same time, 2 of them would turn their emitters OFF and the one Kinect that would need to acquire a frame would turn its IR emitter ON.

    Now, since we can no longer control the IR emitter directly, can any one give me a good solution for preventing my Kinects from interfering each other ? My Kinects don't need to acquire a frame at the same time, but they may need to each acquire a frame on a short interval (about 100ms), so closing and opening the Kinects is not an option as up to 2 seconds can pass between the call to KinectSensor.Open() and the first non-null depth frame.

    Thank you.

    Tuesday, March 3, 2015 9:26 PM

All replies

  • I am facing the same situation. I am using 6 kinect to get some data in a scene. To avoid the interference problem, i have to open kinects one by one. The open process takes 1 - 1.5 second and the entire process takes about 7- 9 seconds to finish. It is too long for my purpose. Is there any other way to resolve this problem? Thx a lot.
    Monday, August 24, 2015 4:16 AM
  • I think you can select to close the IR projector in Kinect v2

    Microsoft MVP J# 2004-2010, Borland Spirit of Delphi 2001

    Monday, August 24, 2015 11:57 AM
  • These ideas maybe a little far fetched.... but definitely doable.

    You could use the opposite technique MS Research uses in their RoomAlive sample. They purposely overlap cameras and send gray codes to determine positioning - called a calibration step. This tells the system where each camera and project is in space (a little matrix algebra...).

    You could use this technique to determine where your cameras are in depth space, and for each camera perspective ignore where the overlapping one occurs in code.

    You can't turn off the emitter, but I've read designs that allow you to determing the frequency of each camera, this way you could do some FFT and Source separation to extract out the noise you're seeing.

    As far as stopping the ir emitter, no can do, but another idea would be to subscribe and unsubscribe to the events on the opposite camera in some form or pattern to help.


    Sr. Enterprise Architect | Trainer | Consultant | MCT | MCSD | MCPD | SharePoint TS | MS Virtual TS |Windows 8 App Store Developer | Linux Gentoo Geek | Raspberry Pi Owner | Micro .Net Developer | Kinect For Windows Device Developer |blog: http://dgoins.wordpress.com

    Monday, August 24, 2015 5:55 PM
  • Hi all

    I've done some work with multikinects and have also came across the light flickering. In my case the fields of view greatly overlap and the Kinects are quite close to each other. The cross-talk does not appear straight away but only after about 10 minutes, and it pretty much destroyed the fusion work I was trying to do. 

    The solution was to wait. Kinect v2 depth data is unreliable (depth varies by 20-30mm) for the first 45 minutes until it stabalises. This is most likely due to the temperature of the LEDs warming up to the point at which the unit is calibrated. From some reading, the temp of the LEDs changes the shape of the ToF pulses (on all ToF depth cameras), therefore a different shape to that from which it was calibrated will give you incorrect depth. 

    For my Kinects I only observed cross-talk interference during the warm up period. Once both sensors were at operating temperature (around 60-70 deg on the glass LED protectors inside the case, measured by digital thermometer) no interference was observed.  

    If however, you drop connection to one of the Kinects, the temp quickly drops and you get interference again. So always keep a sample app running in the background to keep the lasers on.

    Hope this helps,

    Phil

    EDIT - Turns out I should have continued scanning. The interference returns and my two currently in use Kinects it appears periodically every 60 minutes for about 10-15 minutes.


    • Edited by Phil Noonan Friday, October 2, 2015 10:22 AM
    Wednesday, August 26, 2015 9:40 AM
  • We currently work with two overlapping Kinects at a time and notice the interference from time to time. One of the Kinects start "wobbeling" (like Phil Noonan say, depth varies by a few centimeters) at some point. And the only way we found to stop it immediately was to disconnect (and reconnect) that Kinect from the power supply.

    We didn't really notice any patterns in when that happens. It didn't feel like it only happen during the warm up time, but I can't be sure. So now I'll look out more for that happening during the warm up time.

    I did know about the warm up time (the paper "First Experiences with Kinect V2 Sensor for Close Range 3D Modelling" mentions 30 minutes) and I understand how that affects depth accuracy. But I don't understand how that would lead to (increased) interference between multiple Kinects.

    A different theory (I think somewhere in this forum) was that the Kinects switch (more or less) randomly between different modulation frequencies all the time, and the interference happens when they switch to the same modulation frequency at the same time by chance. If that's true, resetting the power might reset which modulation frequency is chosen at any point in time, therefore reducing the chance that the interference happens again immediately.

    Wednesday, August 26, 2015 12:42 PM
  • Yes the frequency does modulate randomly. Here's is the article that explains this:

    http://semiaccurate.com/2013/10/16/xbox-ones-kinect-sensor-overcomes-problems-intelligence/


    Sr. Enterprise Architect | Trainer | Consultant | MCT | MCSD | MCPD | SharePoint TS | MS Virtual TS |Windows 8 App Store Developer | Linux Gentoo Geek | Raspberry Pi Owner | Micro .Net Developer | Kinect For Windows Device Developer |blog: http://dgoins.wordpress.com

    Wednesday, August 26, 2015 11:44 PM
  • While the article is really interesting and explains some things, it doesn't really mention randomly changing modulation frequencies. :-(

    Do you have any other sources going into more details?

    Thursday, August 27, 2015 10:00 AM
  • This research paper provides more detail into the multi-device interference problem and temperature drift.

    Sarbolandi, H., Lefoch, D., & Kolb, A. (2015, October). Kinect range sensing: Structured-light versus Time-of-Flight Kinect. Computer Vision and Image Understanding, 139, 1-20.

    Thursday, September 17, 2015 4:31 AM
  • Hi, 

    I wonder if you used multiple Kinects v2 in a single pc using SDK 2.0? As far as I have gone through the posts it is not supported to operate multiple Kinects v2 in a single pc!

    Could you please clarify?

    Thank you.

    Wednesday, March 9, 2016 1:42 PM
  • You'll need one machine per Kinect v2 sensor when using the official Microsoft 2.x SDK.

    If you only need color/IR/depth and have the hardware to support the bandwidth you may be able to get multiple devices working on a single machine with the Libfreenect 2 drivers.


    Brekel

    Wednesday, March 9, 2016 2:19 PM