Forum Discussion

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

Magnetometer reference point?

According to the SDK docs, the rift only uses the magnetometer for yaw correction when the rift is facing "somewhat close" to a predefined reference point. Does anyone know the reason for this facing direction requirement?

I've done a little reading on sensor fusion, and I haven't seen any other algorithms that need this. It seems like it would be fairly simple to rotate the expected magnetic vector into the current reference frame and do yaw compensation off of that.

3 Replies

  • "kwaegel" wrote:
    According to the SDK docs, the rift only uses the magnetometer for yaw correction when the rift is facing "somewhat close" to a predefined reference point. Does anyone know the reason for this facing direction requirement?

    Probably so you do not get queasy when it does a yaw drift correction, rotating your viewpoint outside of your own control.

    It would also be possible to do such corrections in small steps while you are turning above a certain threshold speed, making such corrections difficult to notice.
  • I know in half life 2 there seems to be a lot of drift while playing in my favorite control mode (6), but I'm not sure if they use the yaw correction even?

    Correcting on fast movements seems like a good idea since everything is a blur anyway. I could see people developing a habit of shaking their head to recenter themselves in games. :)
  • kwaegel's avatar
    kwaegel
    Honored Guest
    As long as it's not a technical issue, it should be an easy change.

    I'm a PhD student down at UNC-Chapel Hill, and my research group (EVE) has done a lot of work on redirected walking. We regularly turn people 180° without them noticing, so subtle yaw correction should be easy enough. There have already been several papers studying the rotation detection thresholds for stationary vs. turning heads.

    I may eventually end up doing something more sophisticated, such as implementing an AHRS filter.