View Full Version : PPT markers off in Vive?

05-02-2016, 05:52 PM

In our lab, we are trying to run the Vive lighthouse tracking system in the same space as the Worldviz PPT system, to have extra trackers for our projects. We noticed that from the Vive pre headset, the vive handcontrollers are tracked perfectly, but the PPT markers are off by quite a bit. The offset changes as we move or rotate the PPT markers around. For example, along the X axis, an the markers are offset by around -0.15m.

Any thoughts on what can fix it?


05-05-2016, 09:59 AM
A gentle reminder to anyone who responds to the queries on this forum ..
Thank you in advance for your help!

05-05-2016, 06:31 PM
This has been moved over to the support system.

06-09-2016, 08:25 AM
I may also want to use the PPT together with our Vive (the room is a little large for the lighthouse system, according to its specs anyway). So such discussions are interesting to me (before i try). Could some info/experiences be shared here?


06-09-2016, 11:20 PM
You will need to account for any origin and heading offset between the PPT and Vive. It maybe easiest to calibrate the Vive trackers to PPT coordinates since the PPT origin and orientation is clearly defined. You can place a Vive controller at the PPT origin and get an idea of the position offset.

Here's some example code to perform the alignment. Orient the HMD and Vive controller so they're facing PPT north and apply the resets:

import viz
import vizact
import vizshape
import steamvr


# Offset when placing Vive tracker at PPT Origin
OFFSET = [0,0,0]

hmd = steamvr.HMD()
headTracker = hmd.getSensor()
viewLink = viz.link(headTracker, viz.MainView)

viveHandControllerList = steamvr.getControllerList()
viveController = viveHandControllerList[0]

vrpn = viz.add('vrpn7.dle')

pptMarker = vrpn.addTracker('PPT0@localhost',1)

pptSphere = vizshape.addSphere(radius=0.02)
viveSphere = vizshape.addSphere(radius=0.02)

pptLink = viz.link(pptMarker, pptSphere)
viveLink = viz.link(viveController, viveSphere)

# Orient both HMD and controller to PPT North before calling reset function
def resetVive():


This can also be done with vizconnect. Get a handle to the tracker links and define the resetVive funtion within the postInit section of the config file. Attached is an example config.