Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
envi253's avatar
envi253
Honored Guest
8 years ago

Yaw drift when using external positional tracking (DK2)

Hey everyone,
very similar to this thread (https://forums.oculusvr.com/developer/discussion/30078/drift-correction-replace-the-tracker-with-mocap-data) - we are having a tracking space setup with 12 x 7 meters and use an external camera system to update our player position. We're currently using an Oculus DK2 in Unity 5 and experience massive problems with yaw drift after a few minutes in VR which massively changes walking trajectories of users. 

For obvious reasons we cannot use the Oculus Camera in front and the UnityEngine,VR.InputTracking.Recenter()  or the Oculus SDK equivalent of recentering does not work well for us... We have tried using a different more sophisticated IMU tracker (Inertiacube 4) and were not able to replace the oculus internal rotation with the rotation data of the IMU tracker by simply changing the relevant code lines in OVRCameraRig.cs, due to the fact that Unity VR seems to override everything we change in the Oculus code with its own information about position and rotation.

To summarize:
  • Whats the best way to override the Oculus Camera tracking information which ALSO CORRECTS the yaw drift similar to the stationary camera that comes with the oculus?
  • Is it possible to use a different IMU tracker to override the internal IMU data for better accuracy of tracking rotational data? 
I get some of this might have been answered in the thread mentioned above, however I want to clarify this for our specific situation. If you need further details let me know below.

Best,
Fabian

3 Replies

Replies have been turned off for this discussion
  • vrdaveb's avatar
    vrdaveb
    Oculus Staff
    There isn't a supported way to use the Rift's IMU without the position sensor. My recommendation would be to disable both position and rotation tracking in our SDK using OVRManager's usePositionTracking and useRotationTracking fields. Then you can set the position and rotation of OVRCameraRig.trackingSpace to move the left and right eye anchors. Unity will still set the local position and rotation of the left and right eye anchors each frame, so you need to apply your custom head pose to trackingSpace, which is their parent.
  • envi253's avatar
    envi253
    Honored Guest
    Hey Dave, thanks for your suggestion. While it seems to work in principal I get a floating 2D Windows in my oculus, with black borders around  it. It's no longer an immersive experience and not much of use...

    Why does this occur and how can I prevent it? Has it been fixed with newer versions?

    Best,
    Fabian
  • vrdaveb's avatar
    vrdaveb
    Oculus Staff
    It turns out there is a bug in OVRManager.useRotationTracking. When set to false, TimeWarp still shifts the image opposite to head motion. In our upcoming 1.21 release, we are planning to add a way to disable this so the image completely stops responding to our own tracking.