NEW!  Version 3 of iPi Motion Capture is available. iPi Motion Capture 3 delivers new features for improved workflow including support of Kinect 2, improved arms tracking, simplified calibration and others. Read more >>

This documentation corresponds to version 2 of iPi Motion Capture. The latest documentation for version 3 can be found at https://docs.ipisoft.com/

User Guide for Dual Depth Sensor Configuration

From iPiSoft Wiki
Revision as of 17:32, 9 December 2011 by Pavel (Talk)
Jump to: navigation, search

Contents

System Requirements

  • Computer (desktop or laptop):
    • CPU: x86 compatible (Intel Pentium 4 or higher, AMD Athlon or higher), dual- or quad- core is preferable
    • Operating system: Windows 7 (x86 or x64), Windows Vista (x86 or x64), Windows XP SP3 (x86 or x64)
    • Video card: Direct3D 10-capable (Shader Model 4.0) gaming-class graphics card
    • USB: at least two USB 2.0 or USB 3.0 controllers
    • Storage system: HDD or SSD or RAID with write speed at least 55 Mb/sec
  • Two Microsoft Kinect Sensors with separate power adapters
  • Optional: active USB 2.0 extension cables
  • Optional: Kinect Adjustable Tripod Stands
  • Minimum required space: 3m by 3m (10 by 10 feet)


Note that before you start working with two Kinects it's highly recommended to get appropriate results with single Kinect solution: Quick Start Guide with MS Kinect Sensor.


Software Installation

iPi Recorder

Before installation:

  • unplug all cameras from computer


Download and run the setup package of the latest version of iPi Recorder. You will be presented with the following dialog.

IPi Recorder 2.0 Setup.png

  1. Select needed components
  2. Read and accept the license agreement by checking appropriate checkbox
  3. Press the Install button to begin installation
Note. Most of the components require administrative privileges because they install device drivers or write to Program Files and other system folders. On Windows Vista/7 you will be presented with UAC prompts when appropriate during installation. If you plan to use iPi Recorder under user which has no administrative rights, you can pre-install other components separately using administrator's account.
Important!
  1. You can plug only one MS Kinect / ASUS Xtion / PrimeSense Carmine sensor to one USB controller. 1 USB controller bandwidth is not enough to record from 2 sensors.
  2. You can plug not more than 2 Sony PS Eye cameras to one USB controller, otherwise you will not be able to capture at 60 fps with 640 x 480 resolution.
For more info see USB controllers.


Upon installation is complete, iPi Recorder will launch automatically. Continue with user's guide to get a knowledge of using the software.

Components

If some of the components is already installed, it has no checkbox and is marked with ALREADY INSTALLED label. You should not install all optional components in advance, without necessity. All of them can be installed separately at later time. Components descriptions below contain corresponding download links.

  • iPi Recorder 2.x.x.x. This is required component and cannot be unchecked.
    iPi Recorder itself.

Important! Each Kinect Sensor must be plugged in through separate USB controllers. If both Kinects are plugged in through one USB controller then the second Kinect will not work. How it looks in the Device Manager:

Dual-kinect-device-manager-good.png
Dual-kinect-device-manager-bad.png
Good
Bad
Both Kinects are plugged correctly
Both Kinects are plugged through one and the same USB controller
Run iPi Recorder and make sure that there are two items “MS Kinect Sensor (OpenNI)” in “Camera Selector” dialog:
Dual-kinect-camera-selector.png
Select both items “MS Kinect Sensor (OpenNI)” and press “Ok” button. As a result you should see something like this:
Dual-kinect-ipirecorder.png

Make sure that you can see correct colored “depth video” from both sensors and

  1. that you can change motor position for each sensor using appropriate slider and “Motor of” combobox
  2. that you can switch between RGB and “depth” video using “View RGB/Depth” button
  3. that actual frame rate is 30 fps (or 29.9) and frames drop is in range from 0 to 5 for each sensor

Note that values of Tilt and Roll are updated with a time lag. During recording these values cannot be updated assuming that in this case sensor should be static.

Recording video from two Depth Sensors

Environment

It is convenient to put each Kinect Sensor on a chair or a table. The picture below will help you to understand sensor field of view and possible distance from actor:

Click to enlarge
Click to enlarge
Side view
Top view

Below in #Calibration section you will find information on 2 recommended sensors' mutual configuratioins.

Actor Clothing

Current version uses only depth information to track motions. So clothes requirements are:

  • no restrictions on clothes colors (just avoid shiny fabrics)
  • please use slim clothes to reduce noise in resulted animation

Recording Process

Important! Each Kinect Sensor must be plugged in through separate USB controllers. If both Kinects are plugged in through one USB controller then the second Kinect will not work. How it looks in the Device Manager:

Dual-kinect-device-manager-good.png
Dual-kinect-device-manager-bad.png
Good
Bad
Both Kinects are plugged correctly
Both Kinects are plugged through one and the same USB controller

Run iPi Recorder and mark both MS Kinect Sensors in the Camera Selector dialog:
Click to enlarge

Press “Ok” button. As a result you should see something like this:
Click to enlarge


Make sure that you can see correct colored “depth video” from both sensors and

  1. that you can change motor position for each sensor using appropriate slider and “Motor of” combobox
  2. that you can switch between RGB and “depth” video using “View RGB/Depth” button
  3. that actual frame rate is 30 fps (or 29.9) and frames drop is in range from 0 to 5 for each sensor

Note that you can turn off RGB streaming using appropriate checkbox in the Advanced Options section of Camera Selector dialog. Also you can change the position of cameras output and motor controls in the interface in case they are positioned in the wrong order:
Click to enlarge

Please don't forget to set output directory for recorded video:
Click to enlarge

Calibration

There are two possible arrangements of the two sensors:

  1. angle between sensors is between 60 and 90 degrees;
  2. angle between sensors in near to 180 degrees that means that sensors are placed opposite to each other.


The first configuration

Click to enlarge
Click to enlarge
Top view
Side view

Preparations

For calibration purposes flat rectangular veneer/plywood/cardboard/pasteboard is used:

  • horizontal size should be at least 0.5m (1m - 1.3m is recommended);
  • vertical size should be at least 0.7m (1m - 1.5m is recommended);
  • hold it vertically in front of yourself on outstretched arms;
  • make sure that this calibration board is good visible in both sensors (the amount of yellow is low in the area of the veneer/plywood/cardboard/pasteboard).
Dual-kinect-calibration-good.png
Dual-kinect-calibration-bad.png
Good
Bad
good size
good depth data
too many yellow (no depth data) points
too small
too close to human body


Important! Yellow color in the depth map means "depth here is unknown". Thus it is important to minimize the amount of yellow points using appropriate materials and clothes.

Recording

After you finished preparations and sensors setup you're ready to record the calibration video:

  • Start recording by pressing the "Start Video Recording" button.
  • Initial two seconds of video should contain only background and static objects. Presence of actor or any moving objects in the initial two seconds of recorded video is unacceptable.
  • Go to the capture area with prepared calibration plane (flat rectangular veneer/plywood/cardboard/pasteboard).
  • Turn the veneer/plywood/cardboard/pasteboard to the left and to the right thus view angle is changing but the veneer/plywood/cardboard/pasteboard is still visible in both sensors.
  • Stop the recording by pressing the "Stop Video Recording" button.
Dual-kinect-calibration-pos-0.jpg
Dual-kinect-calibration-pos-1.jpg
Dual-kinect-calibration-pos-2.jpg
Dual-kinect-calibration-pos-3.jpg
Dual-kinect-calibration-pos-2.jpg
Dual-kinect-calibration-pos-1.jpg
Dual-kinect-calibration-pos-0.jpg
Dual-kinect-calibration-pos-4.jpg
Dual-kinect-calibration-pos-5.jpg
Dual-kinect-calibration-pos-6.jpg
Dual-kinect-calibration-pos-4.jpg
Dual-kinect-calibration-pos-5.jpg


Note that is important to have variety in angles from one hand and good visibility of the calibration plane in each camera from the other hand. It is not so easy to reach good results for 90 degrees angle thus 60-80 degrees angles could be more practical.

Dual-kinect-calibration-pos-good.jpg
Dual-kinect-calibration-pos-bad.jpg
Good
Bad
the calibration plane is good visible in both sensors
the calibration plane is not visible in the left sensor


Please open the captured video in the iPi Studio and check the following:

  • At least two initial seconds of video contains only background and static objects (no actor, no calibration plane)
  • The floor (ground) is good visible on the depth maps from both sensors
  • The calibration plane is good visible on the depth maps most the time
  • The calibration plane is moving and has at least 30 degrees variety in the horizontal view angle
  • The amount of yellow points is relatively small

Processing

  • Please make sure that the ground plane is determined correctly for both sensors after calibration video opening in the iPi Studio (to switch between sensors use buttons "Camera 1" and "Camera 2" in the top toolbar).

KSensor-process-step2.png


  • After that it is convenient to turn off visualization of background points (View -> Hide Background).

Dual-kinect-hide-background.png


  • Set the beginning of Region of Interest (ROI) to the point where calibration plane is good visible in both sensors.

Dual-kinect-calibration-roi-beg.png


  • Adjust the end of ROI:
    • the length of ROI should be at leat 5 seconds (150 frames)
    • ROI should contain good variety of horizontal view angles for the calibration plane
  • Go to the Calibration tab, select "Angle between sensors is 30 - 90 degrees" option and click "Calibrate Based on 3D Plane" button

Dual-kinect-calibration-start.png


  • Please wait for the end of calibration process
  • Evaluate the result:
    • turn on "Show Depth From All Sensors" option in the "View" menu
    • rotate the scene and check how 3D-points from different sensors fit with each other

Dual-kinect-calibration-res-eval.jpg


  • Save the result:
    • go to the Scene tab
    • click "Save scene..." button
    • choose file name for your scene parameters

Dual-kinect-calibration-save.png

Video tutorial from TrueBones


The second configuration

Click to enlarge
Click to enlarge
Top view
Side view

Preparations

In this case flat rectangular veneer/plywood/cardboard/pasteboard is also used. But this box is held in one near-straight arm side by side with body. Each Kinect sensor sees different sides of board. Thus thickness of the board should not exceed 3 cm.

Recording

It is also important to have variety in angles from one hand and good visibility of the calibration plane in each camera from the other hand:

Dual-kinect-calibration-180-pos-good.jpg
Dual-kinect-calibration-180-pos-bad.jpg
Good
Bad
the calibration plane is good visible in both sensors
the calibration plane is not visible in the left sensor

Processing

It's mostly similar to processing of the first configuration. The only difference is that before pressing "Calibrate Based on 3D Plane" button you should choose "Angle between sensors is 100 - 180 degrees" radio button.

Tracking

Recording and processing of performance video is generally the same as for single Kinect solution: Quick Start Guide with MS Kinect Sensor#Processing Video from Depth Sensor.

The main difference is that after loading captured video into iPi Studio you should load your scene parameters:

  • switch to the Scene tab
  • click "Load scene..." button
  • select file with scene parameters which has been saved during calibration process

That's all. After that you're ready for the processing:

  • Position timeline slider to the frame where actor is in T-pose
  • Adjust actor height using appropriate slider on tab “Actor”
  • Select “Move” tool on toolbar.
  • Move actor model to left or right to match roughly actor silhouette on video.
  • etc.

Next Steps


Materials

Video






Users' Feedback

Brilliant work guys.
We just tested our setup with two Kinects at 90 degrees.
As imagined, most of the occlusion issues are solved.
I'm seeing that dKS tracking is just slightly slower
than with single Kinect tracking, but the time difference is negligible.
With a single Kinect, I was getting about 0.67 sec per frame;
with dKS I'm seeing about 0.7 sec per frame.
I think that's very good for my graphics card.
(My graphics card is a Nvidia GTX 460,
which these days is probably considered a mid-range card.)

At a glance, the dKS tracking results appears to be more stable
than with a single Kinect.
Okay, I have several tracked dKS motions now and
I just finished applying iPi Studio's Configurable Jitter Removal
to a few clips. I have to say, this mocap looks incredibly solid!
The results are far superior to the data
I was getting using a single Kinect.
I have successfully calibrated the 180 degree angle with iPiSoft.
It is great, it calibrates at 180 degrees producing
a full 360 Hologram of myself in iPiSoft.
The tracking is rock solid and the results are out of this world.
I am utterly astonished.
http://www.youtube.com/watch?v=WTyzFGJNGEo
Personal tools