Limited solution to yaw drift (relative to torso), cheap!

Post Reply
EdZ
Sharp Eyed Eagle!
Posts: 425
Joined: Sat Dec 22, 2007 3:38 am

Limited solution to yaw drift (relative to torso), cheap!

Post by EdZ »

As you probably know, the gyros used in the Hillcrest tracker to be included with the RIFT devkit cannot provide absolute yaw rotation sensing. Roll and Pitch can be gotten reasonably close to absolute by using the accelerometers to identify where 'down' is, but yaw has no similar reference point.
Normally this is not an issue when motion is tied to head orientation (e.g. the current Doom 3 BFG demonstration). It doesn't matter what the relation between head and torso orientations are, the user's avatar will always go forward relative to the current view, and the gun is aim point is locked to your head. This can be a problem in some other cases though, especially when the players virtual torso orientation and virtual head orientation are independent, i.e. move-one-way-and-look-another control schemes. Use of these schemes would allow you to use the traditional dual-sick control scheme (left stick torso x-y translation, right stick torso pitch-yaw orientation), with head movement 'on top' of this, e.g. allowing a users avatar to run down a hallway while the user whips their head around to look behind themselves, without interrupting motion.

Use of an absolute position and orientation sensing tracker (magnetic e.g. Raver Hydra, outside-in optical e.g. Vicon, etc) is the optimum solution to this, but these are currently too expensive for most users. One proposed solution is to have a 'yaw reset' button or key, which the user can press to tell the game/software "I am looking straight ahead now". It's an essentially free solution, but has the drawback of reducing immersion and using up a controller button.

I propose what is essentially an automatic yaw-reset button: an narrow horizontal FoV IR sensor (think line-scanner, but just sensing the line as a single pixel) mounted to the underside of the RIFT, and a narrow-horizontal-angle IR LED (line emitter) on a necklace/pendant. The IR sensor will trigger when the user is looking straight ahead, but the narrow emission and viewing angles will prevent it from triggering significantly off-yaw-axis or off-roll-axis, while still allowing pitch motions (sensing at different roll angles could be allowable, but as rolling your head also involves translating your head, this may become tedious to resolve when filtering the inputs). Thus, every time the user looks straight ahead the yaw gyro knows it's absolute orientation and can reset any accumulated drift. Keeping you head held yawed or rolled to one side for a protracted period of time (enough for noticeable gyro error to accumulate) is not a common occurrence (and less common than looking up or down for some time), so this solves the yaw drift problem in most cases.

I've tried to illustrate how the sensor and emitter could be positioned:
Image


To implement this would require power plus a single input pin. I'm not sure if the Hillcrest has a spare GPIO handy (and access to firmware to uncover this functionality), but I can remember Dycus mentioning that the re-purposed HDMI cable the RIFT is currently using has at least one spare conductor pair. This could either be used directly for the sense pin and a downstream ADC, or preferably used to connect a second USB channel. This second channel could either be used for a plug-in module (such as a basic USB ADC for the yaw-reset sensor), or to host an on-HMD USB hub for connecting multiple peripherals.
User avatar
brantlew
Petrif-Eyed
Posts: 2221
Joined: Sat Sep 17, 2011 9:23 pm
Location: Menlo Park, CA

Re: Limited solution to yaw drift (relative to torso), cheap

Post by brantlew »

I have this problem as well. I would really like a drift-free yaw value. I like that your solution is conclusive but it does require a good bit of physical modification to work. I have been working towards a similar goal but with a software approach instead.

http://www.mtbs3d.com/phpBB/viewtopic.p ... 281#p77976

A digital compass might be another possible hardware solution.
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Re: Limited solution to yaw drift (relative to torso), cheap

Post by cybereality »

Hmm.. interesting. I think it could work.
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Re: Limited solution to yaw drift (relative to torso), cheap

Post by android78 »

This could work, but the problem I see is that it could cause a 'null zone', due to needing a tolerance area for the reset position. I guess that you could counter this by resetting the center at a minimum time since the last time it was reset though.
Also, I would worry that it could be quite jarring if the error had accumulated a reasonable amount before being re-centered.
User avatar
jis
Two Eyed Hopeful
Posts: 68
Joined: Sun Aug 03, 2008 10:17 am

Re: Limited solution to yaw drift (relative to torso), cheap

Post by jis »

Putting a pin or your torso sounds annoying, much more than just putting on a helmet. Also that depends on the kind of cloth you have, etc... The noise filter would have to work on every kind of attachment.
EdZ
Sharp Eyed Eagle!
Posts: 425
Joined: Sat Dec 22, 2007 3:38 am

Re: Limited solution to yaw drift (relative to torso), cheap

Post by EdZ »

android78 wrote:This could work, but the problem I see is that it could cause a 'null zone', due to needing a tolerance area for the reset position. I guess that you could counter this by resetting the center at a minimum time since the last time it was reset though.
That's a good idea. There could also be a minimum yaw rate for reset to occur (resets when looking forwards, but not slewing your head rapidly from left to right or vice versa). I may take some tweaking to find the optimum compromise between a narrow reset zone (too narrow and it'll never trigger) and more or less aggressive reset conditions.
Also, I would worry that it could be quite jarring if the error had accumulated a reasonable amount before being re-centered.
Software could have a choice of reset methods, from an instant jump to a slower settle to the correct value over an arbitrary period of time.
Putting a pin or your torso sounds annoying, much more than just putting on a helmet.
Not a pin, a pendant necklace. This could either be completely separate and battery powered (to prevent tangling), or powered from the RIFT itself. I guess you could make pin-on or velcro versions too depending on your application: anything you can stick an LED on would work.


---

A less cheap variation would be to stick a small webcam on the underside of the RIFT, and replace the single IR LED with a pattern. Advantage being absolute yaw tracking significantly more off centre (as well as free absolute pitch and roll tracking in the same range) and no null-zone. Disadvantages being increased expense (from a few pennies to several pounds) and greatly increased software complexity.
Post Reply

Return to “Oculus VR”