Using multiple kinects


  • Launch rgbd-multikinect. You need to plug each Kinect on a different usb hub. You can set the number of connected devices with the —numdevices flag. Then you can switch between different devices using the number keys, or the Devices menu.
  • A calibration file can be set for each device using e.g. —calibration calibration_dir to set the directory where the calibration files are located. The file should be named calibration-SERIAL.yml where SERIAL is the serial number of the corresponding camera. It is recommended to initialize these files first by running the program and using “File/Save calibration parameters” to create default files.

To calibrate the extrinsics of each Kinect, you can:

  1. Put a checkerboard in front of the camera. If it can be seen from all the cameras, then simply click on “Refine with checkboard” to estimate the extrinsics.
  2. Use the 3D view and check calibration mode to manually move the current view until it matches the reference one.
  3. Once you’re close to a good alignment, the “Refine with ICP” button can help to finalize the registration.
  4. Another option is to use the calibrate-multiple-kinects program. You will first need to grab images of checkerboards seen by both cameras using uncalibrated rgbd-multikinect. Then you can call the calibration program with, e.g.:

./calibrate-multiple-kinects grab0 grab1 calibration-SERIAL1.yml calibration-SERIAL2.yml --pattern-size 0.025

grab0 and grab1 are the directories containing the grabbed checkboards. grab0 correspond to the reference camera, and grab1 to the Kinect whose extrinsics will be computed. calibration-SERIAL1.yml and calibration-SERIAL2.yml are the calibration files containing the intrinsics of each Kinect (see above to obtain them). —pattern-size is the same as in the calibration section. If calibration is successful, a calibration_multikinect.yml file will be generated, containing the computed R_extrinsics and T_extrinsics matrices, respectively the 3D rotation matrix and the 3D translation vector of the second camera w.r.t. the first one.

This file can then be fed to rgbd-multikinect by overwriting calibration-SERIAL2.yml with the generated file.

  • Note: PCL support is required by this demo.