LPVR-DUO Calibration Manual


Make sure the LPVR-DUO driver is correctly installed as described in the Setup Instructions.

The calibration of LPVR-DUO consists of 2 parts:

  • Calibration of the HMD rigid body

  • Calibration of the vehicle-fixed IMU

Adjustments to the calibration are all done via the JSON configuration script of LPVR.

JSON Configuration File

See below a default configuration file for LPVR-DUO.

It is stored in your system as [path_to_your_driver]\resources\configuration\settings.json. You can edit the file directly using your favorite editor or use the LPVR web interface at http://localhost:7118/index.html.


  • In the web interface of LPVR-DUO { "PoseMachineConfig": will not be displayed, it is only visible in the source code of the configuration file.

  • The web interface will only be displayed if the driver is running, i.e. SteamVR with the driver activated is running.

  • If there is an unexpected error in starting your current configuration a dummy configuration is displayed. Check the SteamVR log for the source of the error and edit settings.json directly.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 { "PoseMachineConfig": { "absoluteSources": { "my_dtrack": { "settings": { "port": 5000, "oneBasedCounting": true }, "type": "DTrack" } }, "emitters": { "HMD": { "settings": { "type": "HMD" }, "type": "OpenVR" }, "console": { "type": "Console" } }, "imuSources": { "hmd_imu": { "type": "ViveHeadset" }, "ref_imu": { "type": "OpenZen", "settings": { "autodetectType": "ig1" } }, "no_imu": { "type": "None" } }, "trackedObjects": [ { "absoluteSource": { "_the headset body id": "goes here", "name": "my_dtrack", "trackingId": 1 }, "combinerType": "DifferentialImu", "emitterName": "HMD", "imuSource": "hmd_imu", "settings": { "ignoreGravity": true, "opticalWeight": 0.005, "referenceImu": "ref_imu", "referenceOrientationQuat": { "w": 1, "x": 0, "y": 0, "z": 0 }, "referenceToOpticalQuat": { "w": 1, "x": 0, "y": 0, "z": 0 } } }, { "absoluteSource": { "_the reference IMU body": "goes here", "name": "my_dtrack", "trackingId": 2 }, "emitterName": "console", "imuSource": "no_imu" } ] } }

With this configuration file

  • the internal HMD IMU is automatically detected and used,

  • the vehicle-fixed LPMS-IG1 IMU is automatically detected.

What you need to adjust manually:

  • ART DTrack output port (5000 in this example)

  • HMD rigid body ID from ART DTrack (1 in this example)

  • Vehicle fixed IMU rigid body ID from ART DTrack (2 in this example)

  • referenceToOpticalQuat from vehicle-fixed IMU calibration procedure (see below)

  • referenceOrientationQuat from vehicle-fixed IMU calibration procedure (see below)

ART DTrack Setup

  • Make sure the tracking cameras operate at either the same, twice or half the refresh frequency of the HMD screen. In case of a VIVE Pro that is 90Hz. This is adjusted in the Synccard Settings in DTrack.

  • The DTrack output settings need to be adjusted to output 6D tracking data. Note the port of the output data to be entered into the LPVR configuration parameters later on.

  • Make sure that your ART room calibration is configured to Power wall (Y axis UP) in DTrack. Dtrack’s room calibration offers two coordinate system options. For our application Power wall is the default setting.

Adjustment of HMD Rigid Body

Premade Rigid Body Calibration Files

If you would like to not go through the manual body calibration process, we provide a number of premade body calibration files for download on this page. These files have been calibrated using our automatic calibration algorithm and are a very close approximation of an ideal configuration.

Automatic Calibration

Please refer to our dedicated page Automatic HMD / ART-Body Intercalibration - LP-RESEARCH Knowledge Base - Confluence (atlassian.net)

Manual Calibration Procedure

Perform the following steps to adjust and calibrate the HMD rigid body and its attached IMU. These instructions are written specifically for ART’s DTrack software.

  • The rigid body in the optical tracking system software should be aligned to fit with the OpenVR alignment standard as shown below. The center (the position source) of the rigid body needs to be adjusted, so that it lies closely on the upper part of the nose, in the middle between the eyes of the user, while wearing the headset. This position needs to be manually adjusted to be accurate. The direction of the user’s gaze should be opposite to the Z-axis of the rigid body.

In the standard OpenVR coordinate system, the Z axis points “inside” the user’s head, the X-axis to the right and the Y-axis upwards. For a VIVE Pro LPVR setup this could similar to the following photos.

Example marker arrangement, front view. Two markers (for each axis) defining a horizontal line parallel to the X (red) and Y-axis (green) of the HMD will make it easier to adjust the rigid body coordinate system in the optical tracking software.

Example marker arrangement, top view.


  • As a first step in aligning the rigid body in ART, adjust the view so that you can visually assign marker balls on the HMD to markers detected by the ART body calibration.

  • In the second step, use the Body position and Body orientation fields to correct the orientation of the rigid body’s coordinate system. The figure shows a correctly aligned body origin, front view opposite to the Z-axis. Note that the relative position of the coordinate origin should be ~3cm below the origin of the marker holder. It is assumed to lie in the center between the user's eyes, on the nose bridge.

Correctly aligned body origin, side view along X-axis.

Correctly aligned body origin, top view along Y-axis.

The system should work now for tracking the HMD within the optical tracking volume. In case you notice a slight misalignment of your head orientation and the orientation of the floor, or the floor is not horizontal, please make some small adjustments to the alignment of your HMD rigid body in the body alignment editor of the optical tracking system. In our experience, sometimes a few degrees adjustment of the Z-axis helps to make the orientation result feel perfectly natural.

Troubleshooting of HMD IMU Calibration

If alignment problems persist, please take the following steps to isolate the source of the problem:

Track headset with IMU-only (no optical)

  • Stop ART tracking in DTrack

  • Set "ignoreGravity": false to turn on the vertical gravity reference

  • Set "combinerType": "Default" to turn off relative orientation tracking with the reference IMU

With these settings the headset will be tracked by the HMD IMU only. When wearing the headset, if the IMU alignment settings are correct, orientation tracking should feel natural. Please note that without optical system there is no position tracking. If orientation tracking is not working well, the alignment between IMU and the HMD optics (display, lenses) is not good.

Track headset with optical system-only (no IMU)

  • Make sure ART tracking is running

  • If it doesn’t exist yet, in imuSources create

    1 2 3 4 { "id": "no_imu", "type": "None” }
  • Set "imuSource": "my_imu" in trackedObjects

Within the range of the optical system, the HMD should now be orientation and position tracked. The tracking will feel a lot less smooth when only using the optical system. However, this mode is a good way to assess the quality of the rigid body adjustment. If orientation tracking completely off, it is better to readjust the rigid body.

Adjustment of Vehicle Fixed IMU

Pre-defined Orientation

Calibration Procedure

  • Follow this tutorial to install and run the vehicle-fixed LPMS-IG1 IMU.

  • In a first step the orientation of the internal coordinate system of the vehicle fixed IMU and the optical tracking system needs to be defined. For this purpose, attach an optical marker to the enclosure of the IMU and create a new rigid body in the optical tracking software.

  • To activate the calibration features of LPVR, click on Show Additional Features on the LPVR configuration page. 

  • Activate the automatic pivot point calibration by selecting the optical tracking system in the absolute source field with rigid body id tracking id and the vehicle fixed IMU in the imu source field. Clicking Find Rotation will start the calibration process.

  • During the calibration process, slowly rotate the IMU with attached optical marker within the view of the optical tracking system. Pause the rotation from time-to-time to allow for some internal processing. After the calibration process is finished the result will be output below the calibration feature dialog. The output quaternion needs to be manually inserted into referenceToOpticalQuat.

  • Fix the reference IMU to the vehicle with the optical marker still attached. Check the SteamVR console output for the orientation quaternion of the reference IMU optical marker. This value needs to be applied to the field referenceOrientationQuat in the configuration script.

After the above procedure the optical marker can be detached from the reference IMU.

NOTE: The reference IMU should now not be moved anymore. The system should now be sufficiently calibrated for operation.

You should now be able to display content fixed to the vehicle coordinate system. E.g. when you drive a curve in a vehicle and keep looking straight ahead, objects in VR/AR should not change their position and orientation.