Drift Correction Techniques
I'm working on a project where I will be using a motion capture tracking system to track the HMD (Oculus DK2).
Now I'm curious because I could not really find any documentation on manual drift correction and wanted to ask around what other developers are doing.
In another thread, I have seen the suggestion that you should only correct yaw drift error when the HMD is rotating slowly or at a standstill.
However, after reading a paper on redirection techniques (http://viscg.uni-muenster.de/publications/2009/SBHJFL09/) I made an interesting observation that applying any drift error while the HMD is not rotation is actually the worst as regards user comfort (because it is the most obvious drift correction and easily spotted by the user).
Now, in the paper, it is stated that for rotations, they could compress/expand the angle by up to 10% without the users actually noticing. The following quote of the paper is remarkable:
Therefore, my current idea is to do the following (this all applies only to yaw-rotations):
- measure yaw error only when HMD is not rotating or only very slowly (after a time so the external tracking system has catched up)
- apply no correction when HMD is not rotating
- apply correction as a function of the rotation speed with a factor of 0.1
--> so if the user rotates with 10 degrees/second, apply a correction of 1 degree
I'm curious how other developers are solving this or what you think about this idea?
Now I'm curious because I could not really find any documentation on manual drift correction and wanted to ask around what other developers are doing.
In another thread, I have seen the suggestion that you should only correct yaw drift error when the HMD is rotating slowly or at a standstill.
However, after reading a paper on redirection techniques (http://viscg.uni-muenster.de/publications/2009/SBHJFL09/) I made an interesting observation that applying any drift error while the HMD is not rotation is actually the worst as regards user comfort (because it is the most obvious drift correction and easily spotted by the user).
Now, in the paper, it is stated that for rotations, they could compress/expand the angle by up to 10% without the users actually noticing. The following quote of the paper is remarkable:
Users can be turned physically about 41% more
or 10% less than the perceived virtual rotation,
Therefore, my current idea is to do the following (this all applies only to yaw-rotations):
- measure yaw error only when HMD is not rotating or only very slowly (after a time so the external tracking system has catched up)
- apply no correction when HMD is not rotating
- apply correction as a function of the rotation speed with a factor of 0.1
--> so if the user rotates with 10 degrees/second, apply a correction of 1 degree
I'm curious how other developers are solving this or what you think about this idea?
