This repository has been archived by the owner on May 3, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 146
PSMove Magnetometer Calibration
HipsterSloth edited this page Mar 29, 2017
·
7 revisions
In order to reliably track the orientation of the controller, we need to calibrate the magnetometer (a compass) on the PS Move and record the direction of your local magnetic field. This needs to be done every time you reorient the forward direction of your VR tracking space (which is usually a one-time setup per controller).
- Launch the
PSMoveConfigTool
and then open the "Controller Settings" > "Calibrate Magnetometer" dialog
- Spin the controller around until the calibration number is 250+
- Press the move button to proceed to the next step. You should then see this:
- Set the controller down vertically on a flat surface facing the forward direction of your VR tracking volume (typically towards your monitor). This will be the reference pose for the controller in your local magnetic field. Note that the PS Eye isn't actually used in this step of the calibration process.
- Once the controller is stable, a timer (approximately one second long) will count down and then sample the magnetometer. If the controller gets bumped, the timer will restart.
- Once the sampling is done you can test the orientation calibration.
- The calibration data will be saved into the controller settings file located at
C:\Users\<username>\AppData\Roaming\PSMoveService\xx_xx_xx_xx_xx_xx.json
wherexx_xx_xx_xx_xx_xx
is the MAC address of the controller displayed in the controller settings panel.
A typical set of magnetometer calibration values looks something like this (though values vary per controller and your local magnetic field).
"Magnetometer": {
"Center": {
"X": "56.5",
"Y": "-56",
"Z": "-109"
},
"BasisX": {
"X": "1",
"Y": "0",
"Z": "0"
},
"BasisY": {
"X": "0",
"Y": "1",
"Z": "0"
},
"BasisZ": {
"X": "0",
"Y": "0",
"Z": "1"
},
"Extents": {
"X": "167.5",
"Y": "169",
"Z": "161"
},
"Identity": {
"X": "0.267718643",
"Y": "0.933811128",
"Z": "-0.237325698"
},
"Error": "13.150588"
}
If you are curious about how the orientation of the controller is computed, you can find details about that on the Sensor-Fusion wiki page.