Skip to content
This repository has been archived by the owner on May 3, 2021. It is now read-only.

Tracker Pose Calibration

Guido Sanchez edited this page Jun 11, 2016 · 12 revisions

#Overview In order to setup your PSMove tracking space we need to compute the location and orientation of each of the PSMove cameras you have connected. Additionally, if you plan to use the service with an HMD we need to determine where the PSMove tracking space is relative to HMD tracking space. If you have an HMD, make sure it's connected first and you have started SteamVR.

Begin the calibration process by selecting the "Compute Tracker Poses" option in the "Tracker Settings" menu:

#Step 1: Verify your HMD tracking (optional) The first screen you are presented in the camera pose tool lets you test that your HMD is tracking as expected. You should see a blue wireframe shape representing the chaperone bounds provided by SteamVR and a model of an HMD (currently it's always an Oculus DK2 model) showing the tracking position and orientation of the HMD. If the HMD doesn't track as expected, make sure you have SteamVR started and restart PSMoveService and then relaunch the PSMoveConfigTool.

#Step 2: Verify your tracking camera video feeds The next screen allows you verify that your PSMove tracking cameras are streaming video properly. Sometimes the camera drivers can get in a bad state the and video feed can start cutting out. Cycle through the camera feeds with "Previous Tracker" and "Next Tracker" buttons (if you have more than one tracker). If one of the video feeds isn't working, go take a look at the Troubleshooting-(Windows) wiki page.

#Step 3: Select the camera pose estimation method There are two techniques for computing camera poses: "HMD Coregistration" and "Calibration Mat". The first method is easier to do and recommended if you only have one tracking camera, but can sometimes be less accurate and it requires that you have an HMD. The second method is more accurate and recommended if you are using more than one camera, but is a bit more involved and does not require an HMD.

#Step 4a: Coregistration with HMD Camera pose estimation by HMD Coregistration involves attaching a psmove controller to your HMD and moving the pair around in front of the tracking cameras. The config tool records the position of the PSMove controller relative to each PSMove tracking camera and the HMD position relative to the HMD tracker. We then compute the transform needed to align the recorded PSMove positions with the recorded HMD positions. This transform is the location and orientation of the PS3EYE camera relative to the HMD tracker.

##Attaching the PSMove to your HMD Before you can coregister you need to firmly attach your PSMove to your HMD. If the PSMove slides around much during coregistration you won't get a good alignment transform. If you are careful, it's possible to firmly hold the PSMove on top of the HMD.

I personally use a small velcro square to attach my PSMove to my DK2. I recommend putting the scratchy side on the HMD and the fuzzy size on the PSMove. I did this backwards. I am now full of regret:

##Recording samples Once the PSMove is attached you can start recording poses. As you do you'll see a yellow ribbon showing the strip of samples you recorded for the HMD positions. Recording typically only lasts a few seconds.

##Testing the calibration If all went well you should see the camera frustums for each tracking camera you have as well as the tracked PSMove controller position. Hopefully when you hold the PSMove close to your HMD is should be correspondingly close on screen. If things look way off, try re-running the calibration. Sometimes it takes a few tries to get a good alignment. If you still can't get good camera pose estimation, consider trying the calibration mat method described next.

#Step 4b: Calibration Mat The second method of determining the location of your tracking cameras involves using a "Calibration Mat":

You place the calibration mat in view of all of your PSMove tracking cameras and then PSMoveController at each numbered location on the mat. The calibration tool records the pixel position of the PSMove bulb at each numbered location. The calibration mat is a known size (8.5in. x 11in.). We define the center of the calibration mat to be the origin of the PSMove tracking space. Using the measured pixel locations, the pre-defined X,Y,Z locations of the PSMove controller at each sample location, and the focal length of each tracking camera we can compute the tracking camera's position and orientation relative to the tracking mat. This calibration method uses OpenCV's SolvePnP function under the hood.

If you use this method, download the Calibration Mat PDF, print it out and tape it to a flat and level surface. If you don't have a printer handy, you can just use a regular 8.5in. x 11in. sheet of paper and number the locations yourself. Just make sure point 3 is in the exact center of the paper.

##Verify PSMove Tracking Once you start the calibration process you could see a video feed from the point of view of a tracking camera. When you bring the PSMove into frame you should see an ellipse outline the bulb. If you don't then you probably need to run through the Color Filter Calibration again for your trackers.

##Sampling PSMove Locations Place the PSMove controller standing upright at sample location #1. You should see a time count down waiting to make sure the controller is stable. Once stable, it will start recording pixel sample for each tracker. When it has successfully recorded all the samples it needs you'll be asked to move the controller on to location #2, and so on until all five locations are sampled.

##Aligning HMD Tracking Space After you're done sampling PSMove locations, if you have an HMD attached you'll be asked to place the HMD at the center of the calibration mat. Line the front of the HMD with the "HMD" line on the mat and make sure its level. NOTE: If you had your HMD sitting on a level surface already, make sure it's not level before you get to this calibration stage or it will start sampling before you are ready.

##Testing the Calibration If all went well you should see the camera frustums for each tracking camera you have as well as the tracked PSMove controller position. Hopefully when you hold the PSMove close to your HMD is should be correspondingly close on screen. If things look way off, try re-running the calibration.

#Proceed to the next step Steam-VR-Driver-Setup