DIY Head Tracker For A Tenner

Got around to digging out the soldering iron, and finally rigged it up on an old breadboard and.... success!

Very impressive work guys. :)
 
I'm curious, speaking non technical, is there a way to add easing to the motions. Ease out as a motion starts and then ease in as the motion stops. Or is it just a smoothness value. Sort of natural head movement. If there is no easing, could there be.
 
What, like a softening? So damp all the movement?

Mathemetically sure, you could just implement some "maximum" movement adjustment in the code so that the tracker never reports more than X amount of movement in a given period - but you'd just be introducing lag artificially, which is not a good thing at all. Unless I've misunderstood you?

Have you tried the exponential axis option? I assume that doesn't work for you?
 
I'm curious, speaking non technical, is there a way to add easing to the motions. Ease out as a motion starts and then ease in as the motion stops. Or is it just a smoothness value. Sort of natural head movement. If there is no easing, could there be.

Hatire uses a 'spring' function to pull you back to centre with lesser or greater force depending on how far from centre you are.
 
What, like a softening? So damp all the movement?

Mathemetically sure, you could just implement some "maximum" movement adjustment in the code so that the tracker never reports more than X amount of movement in a given period - but you'd just be introducing lag artificially, which is not a good thing at all. Unless I've misunderstood you?

Have you tried the exponential axis option? I assume that doesn't work for you?

I don't have a head tracker device, or have access to ED alpha/beta yet. I was just making a guess based on what I read so far in the guides and videos and this thread. (an UN-educated guess)

I didn't take into account lag, I see your point. I was just being curious with regards to shaping acceleration and coming to a stop, very fine adjustments like one might use with 3D computer animation to control travel from point A-B with bezier spline easing. Sort of your version of joystick curves if that makes any sense. I am talking from a completely non technical standpoint, I don't know code or these devices, and apologise for asking dumb questions.
 
Last edited:
No, s'okay. Basically, the quicker the reaction of the in-game response to your actual head movement, the better. Introducing "shaping" of that reaction - so making the result (the on-screen reaction) less like the input (what your head actually does) - is going to have more confusing results for you as the user.

The exponential axes are a prime example - not everyone will like them - but at least the reaction times are quick. If I move my head quickly I want the result to be quick - if I need the dampen that response for some reason, it is better that the user experiences as close-to-real-world reactions as (s)he can and compensates for it themselves - ie. moves their head slower! Otherwise I'm guessing your brain/senses are going to feel quite confused/disorientated until they learn to compensate for this adjustment between what your head is really doing, and what the visual perception is.

Some neurologist can probably reason this far better than I :)
 

Stachel

Banned
I would guess the result would be something like this:
http://www.raspberrypi.org/living-with-lag/

your vision on the screen wouldn't do what your brain was expecting causing a lot of confusion.

Back in uni a friend of mine set up a Wolfenstein server on his PC. He was somewhere in Djurgården at the time. His broadband internet connection was 1mb/s (mega byte) synchronous and cost 20e a month.

This must have been about 2000.

I remember being blown away by the fact he could host a 20 person server on his home broadband. Mine at the time was as good as you could get and iirc it was 150kb/s down and 18kb/s up. And cost £45 a month.

Great video btw. +rep. :cool:
 
Quick couple of questions if I may:

I've performed the 'one-time' calibration, re-uploaded the sketch and waited for the numbers to settle (>30 mins), then manually entered the gyro offsets.

Here's what I got:
Code:
float xDriftComp =-0.75; 
float yDriftComp =-0.01; 
float zDriftComp = 0.01;
Sketch uploaded to the Arduino again.

So now if I plug the device in and after letting the device sit motionless for about 30 mins, these are the kind of numbers being spat out of the serial monitor:
Code:
X/Y/Z	99.05		26.89		-16.35		-0.04		0.01		-0.02
X/Y/Z	98.53		28.28		-15.19		-0.04		0.01		-0.02 
X/Y/Z	99.28		27.13		-13.82		-0.04		0.01		-0.02 
X/Y/Z	97.50		28.52		-12.66		-0.04		0.01		-0.02 
X/Y/Z	96.98		28.74		-10.12		-0.04		0.01		-0.02

Should all the numbers trend over time toward zero, and how close is 'good enough'?
 
Code:
X/Y/Z	99.05		26.89		-16.35		-0.04		0.01		-0.02
X/Y/Z	98.53		28.28		-15.19		-0.04		0.01		-0.02 
X/Y/Z	99.28		27.13		-13.82		-0.04		0.01		-0.02 
X/Y/Z	97.50		28.52		-12.66		-0.04		0.01		-0.02 
X/Y/Z	96.98		28.74		-10.12		-0.04		0.01		-0.02

Should all the numbers trend over time toward zero, and how close is 'good enough'?

With extra hardware (magnetometer) we could get closer to zero but those drift numbers are very good :) Anything in the hundreths is excellent.

The yaw range is -32767 to +32767 so having a yaw drift of 0.04 per second equates to less than 1 degree per hour :D

Rob
 
With extra hardware (magnetometer) we could get closer to zero but those drift numbers are very good :) Anything in the hundreths is excellent.

The yaw range is -32767 to +32767 so having a yaw drift of 0.04 per second equates to less than 1 degree per hour :D

Rob
Crikey, not bad for about a tenner!

Thanks again guys.

PS: These arduino things are a bit brilliant, just ordered a couple more to muck about with. :D
 
With extra hardware (magnetometer) we could get closer to zero but those drift numbers are very good :) Anything in the hundreths is excellent.

The yaw range is -32767 to +32767 so having a yaw drift of 0.04 per second equates to less than 1 degree per hour :D

Rob

It's certainly good to see that the drift can be so low with what we have - It will be interesting to see how much of a difference I can make with the magnetometer, hopefully will be informative to everyone as to whether the upgrade is even worth it (cost vs improvement)
 
I look forward to trying this out when you guys have developed it further, which it will be I'm guessing by the games release date. When is ED released you think? Dam shame I cannot afford the early access.
 
Last edited:
So now if I plug the device in and after letting the device sit motionless for about 30 mins, these are the kind of numbers being spat out of the serial monitor:
Code:
X/Y/Z	99.05		26.89		-16.35		-0.04		0.01		-0.02
X/Y/Z	98.53		28.28		-15.19		-0.04		0.01		-0.02 
X/Y/Z	99.28		27.13		-13.82		-0.04		0.01		-0.02 
X/Y/Z	97.50		28.52		-12.66		-0.04		0.01		-0.02 
X/Y/Z	96.98		28.74		-10.12		-0.04		0.01		-0.02

Should all the numbers trend over time toward zero, and how close is 'good enough'?

With extra hardware (magnetometer) we could get closer to zero but those drift numbers are very good :) Anything in the hundreths is excellent.

The yaw range is -32767 to +32767 so having a yaw drift of 0.04 per second equates to less than 1 degree per hour :D

Rob

Be very happy with your MPU Rod after 30 minutes of the same test my ones yaw drift reads between 0.06 and 0.07

I would agree with Pocketmoon and Brumster that the yaw drift has been sorted to a good enough level.

The question now should be why does it take so long to settle the MPU down?

Is it due the the chip warming up or the fact the current library is messing up important values every reset?
 
Be very happy with your MPU Rod after 30 minutes of the same test my ones yaw drift reads between 0.06 and 0.07

I would agree with Pocketmoon and Brumster that the yaw drift has been sorted to a good enough level.

The question now should be why does it take so long to settle the MPU down?

Is it due the the chip warming up or the fact the current library is messing up important values every reset?

I keep forgetting that these IMUs actually contain mechanical vibrating elements - like any mechanism, nothing's 'perfect' I guess. I think they might possibly benefit from a few hours use and a bit of shaking up to bed them in a bit before proper calibration too. Could be me just being bonkers though! :D

Currently experimenting with a larger buffersize and smaller deadzones for the initial one-time calibration, and and extra decimal place for the X/Y/Z Driftcomp adjustment.
 
I keep forgetting that these IMUs actually contain mechanical vibrating elements - like any mechanism, nothing's 'perfect' I guess. I think they might possibly benefit from a few hours use and a bit of shaking up to bed them in a bit before proper calibration too. Could be me just being bonkers though! :D

Currently experimenting with a larger buffersize and smaller deadzones for the initial one-time calibration, and and extra decimal place for the X/Y/Z Driftcomp adjustment.

Just did the test again and got a yaw drift of 0.16 :(
 
I would agree with Pocketmoon and Brumster that the yaw drift has been sorted to a good enough level.

The question now should be why does it take so long to settle the MPU down?

Is it due the the chip warming up or the fact the current library is messing up important values every reset?

As a simpleton I have given this and other possibilities far too much thought..

Glad to hear the drift is manageable tho - not bad for a tenner (-: Thanks to everyone who has put so much work into this to make it useable.

Had thought it was heat in the electrics.. had thought the Chinese had put something out for production that wasn't quite up to the job described on the tin as it were (what is the exact reason why the sensor was invented?) and then in a flash of inspiration I thought.. well maybe it is far too accurate and is recognising the sensors movement in relation to earth's rotation..!!

Someone sort of mentioned this theory a while back.. I guess the only way to test it would be to try ‘ED Tracker’ out at the north and south pole at different times of the year (+different lat/longs in between) and see what happens? :D

I haven't tried ED tracker yet - been a bit sidetracked but looking forward to being able to plug it in - look up, left, right and down in the comfort of a Cobra if and when i get one! Resetting the drift after 1/2 hour seems very generous to me:)
 
Back
Top Bottom