It is currently Wed Sep 18, 2019 8:26 pm



Reply to topic  [ 6 posts ] 
 Limited solution to yaw drift (relative to torso), cheap! 
Author Message
Sharp Eyed Eagle!

Joined: Sat Dec 22, 2007 3:38 am
Posts: 425
Reply with quote
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.


Wed Aug 22, 2012 6:41 pm
Profile
Petrif-Eyed
User avatar

Joined: Sat Sep 17, 2011 9:23 pm
Posts: 2220
Location: Menlo Park, CA
Reply with quote
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.php?f=120&t=15281#p77976

A digital compass might be another possible hardware solution.


Wed Aug 22, 2012 7:33 pm
Profile
3D Angel Eyes (Moderator)
User avatar

Joined: Sat Apr 12, 2008 8:18 pm
Posts: 11394
Reply with quote
Hmm.. interesting. I think it could work.

_________________
check my blog - cybereality.com


Wed Aug 22, 2012 8:28 pm
Profile
Certif-Eyable!
User avatar

Joined: Sat Dec 22, 2007 3:38 am
Posts: 990
Reply with quote
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.


Wed Aug 22, 2012 8:36 pm
Profile
Two Eyed Hopeful
User avatar

Joined: Sun Aug 03, 2008 10:17 am
Posts: 68
Reply with quote
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.


Wed Aug 22, 2012 11:55 pm
Profile
Sharp Eyed Eagle!

Joined: Sat Dec 22, 2007 3:38 am
Posts: 425
Reply with quote
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.
Quote:
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.

Quote:
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.


Thu Aug 23, 2012 2:25 am
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 6 posts ] 

Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by STSoftware.