Tape measure App - Touch Diamond, MDA Compact IV Themes and Apps

Could an app be developed to use the gsensor and measure distances. I was thinking you could press a button to start a measurement move your phone press another button and we could see the distance in feet meters etc. is this feasable

commodore65 said:
is this feasable
Click to expand...
Click to collapse
no.
go and get a tape measure and selotape it to the side of ur phone

It would get pretty complicated. Your phone would have to keep track of each and every different acceleration and the duration of that acceleration to then calculate out the distance traveled during each acceleration. Since we are human I highly doubt we can keep a constant enough acceleration to measure anything short. It does seem to me that the longer the distance being measured (maybe in a moving car as foot steps may throw the measurment off) the better chance there could be for accuracy as the small accelerations that would normally throw off the measurement would be less of a problem. (then again I am a physicist and not a phone programmer so I don't know how accurate the accelerometers in these phones are).
I bet something could be written to tell you how far the phone has been dropped... if you could keep the phone from rotating during the fall. The acceleration of gravity is constant and that would be an easy calculation that could just cut off as soon as the acceleration changes drastically (when it stops falling suddenly). Then again I am physicist not a programmer.
If someone wants to try feel free to ask me for a set of fairly simple equations or help with the math. I doubt most people that program will need that help though.

i think the G sensor in the phone is a bit too "hit-and-miss" for this application, it would require a very fine tuned, high contrast sensor (most likely costing more than the phone!)
it you want to do a large distance, then u could use the GPS positioning, but yet again, wont be very accurate.

+ 1
i subscribe to this program but I don't believe is posible. I'm an architect so I'd strongly need it. you can youse GPS for outside mesurements and you can use SuperRuler for smole mesurements or distance mesurements.
http://www.pocketdevelop.com/index.aspx

I dont think its that much of a stretch. Using tweeter i find the sensor is extremely accurate and sensitive. While i dont need the app, basically as he said press start and then start moving the phone left or right up or down and press stop.
However since the sensor is not made to do that, i could be totally wrong it it is not possible at all. Basically because the sensor is made to track tilt movements and not distances. Lol im basically debating with myself

xboxhaxorz said:
I dont think its that much of a stretch. Using tweeter i find the sensor is extremely accurate and sensitive. While i dont need the app, basically as he said press start and then start moving the phone left or right up or down and press stop.
However since the sensor is not made to do that, i could be totally wrong it it is not possible at all. Basically because the sensor is made to track tilt movements and not distances. Lol im basically debating with myself
Click to expand...
Click to collapse
it might work

It's all relative, I can play teeter on a train!

uniqueboy said:
It's all relative, I can play teeter on a train!
Click to expand...
Click to collapse
If you're playing tweeter on a train traveling near the speed of light and I am at the train station watching you play teeter as you pass by, is the ball falling in the whole or the whole falling around the ball? Where was I going with this? Oh yeah would this tape measure have to account for time dilation? I mean the Lorentz equations are the most accurate set of linear coordinate transformations we have, right? As you move the phone time will dilate, lengths will contract and let's not even mention the rotation of objects from the phone's perspective... wait did I just mention it by stating that I wasn't going to mention it?
Like I stated before... it is completly possible to measure distance using nothing but acceleration information... beyond that the accuracy in your measurement will depend on the accuracy of the device measuring the acceleration(s). Of course you may have to get into the rate of change of you acceleration (the rate of change of the rate of change of the rate of change of your position) which is called jerk.

Beherrschen said:
it is completly possible to measure distance using nothing but acceleration information...
Click to expand...
Click to collapse
Erm guys, this is only a lil bit right ;D You can't measure a distance with an accelerometer... very well. As the word says, it measures accelerations... so if you walk 10 Meters to check the distance, your Device only accelerates the first meter when you start walking... when you walk with the same speed the accelerometer shows:
0
(at this moment it has to know how fast your speed has to be when you accelerated in the first x seconds with x G's to calculate how many meters you walked within the x seconds till the -G starts when you stop ... almost impossible ;D )

Absolutely 100% not possible, for any kind of practical purpose.
If the device could be held exactly flat, it would be just about possible to use acceleration data to make a guess at speed and therefore at distance... but it would be such a wild guess it would not be useful.
A visual estimate will always be better!

Phexi said:
Erm guys, this is only a lil bit right ;D You can't measure a distance with an accelerometer... very well. As the word says, it measures accelerations... so if you walk 10 Meters to check the distance, your Device only accelerates the first meter when you start walking... when you walk with the same speed the accelerometer shows:
0
(at this moment it has to know how fast your speed has to be when you accelerated in the first x seconds with x G's to calculate how many meters you walked within the x seconds till the -G starts when you stop ... almost impossible ;D )
Click to expand...
Click to collapse
Seems like you told me I was only partially correct but then the second part of what you wrote seemed to agree that it possible (maybe not practical) to calculate distance traveled from nothing but acceleration information. It is possible to calculate distance traveled from nothing but acceleration (and the duration of each acceleration but that goes without saying since you must always know the duration of a motion to determine distance) information.
For example: If you have a situation where there is an initial acceleration A1 for t1 seconds, followed by a contstant speed S for t2 seconds, and finished off with another negative acceleration A2 for t3, then you have all the information needed to determine the overall distance traveled. During the first section of our travel the acceleration, A1, and the duration of that acceleration, t1 are can be used to calculate your total distance during that acceleration. A1 and t1 can also be used to calculate the speed you are traveling at the end of the initial acceleration, S. Use S and t2 to calculate the distance traveled during the constant speed portion. Then use S, A2 and t3 to calculate the distance traveled during the final accleration (even if your final speed isn't zero). Equations below:
Set 1: acceleration = A, velocity (speed) = V, distance = X, time = T, initial = i and final = f
starting with the assumption of constant acceleration then each successive equation can be derived by integrating the previous equation with respect to time.
A = A
Vf = At + Vi
Xf = (1/2) A (T^2) + Vi T + Xi
Set 2: also at constant acceleration with the same key as above.
A = (Vf - Vi)/T
V(average) = (Vf + Vi)/2 = (Xf - Xi)/T
Either set of equations can be used. They are basically the same set of equations. One derived using calculus (Set 1) and the other using conceptual ideas of motion (Set 2). With a little algebra both sets can be derived from eachother. If you add in an inconstant acceleration (jerk) then the equations become more complicated and I am not gonna derive them out here.
I am sticking to my is it possible but most likely not practical. Unless you came up with a way to maybe statistically ignore any little outlyer type accelerations... anyway, I am rambling. Feel free to let me know if you can't solve a problem like the one I stated above using those equations and I wll be glad to help.

Beherrschen said:
Seems like you told me I was only partially correct but then the second part of what you wrote seemed to agree that it possible (maybe not practical) to calculate distance traveled from nothing but acceleration information. It is possible to calculate distance traveled from nothing but acceleration (and the duration of each acceleration but that goes without saying since you must always know the duration of a motion to determine distance) information.
For example: If you have a situation where there is an initial acceleration A1 for t1 seconds, followed by a contstant speed S for t2 seconds, and finished off with another negative acceleration A2 for t3, then you have all the information needed to determine the overall distance traveled. During the first section of our travel the acceleration, A1, and the duration of that acceleration, t1 are can be used to calculate your total distance during that acceleration. A1 and t1 can also be used to calculate the speed you are traveling at the end of the initial acceleration, S. Use S and t2 to calculate the distance traveled during the constant speed portion. Then use S, A2 and t3 to calculate the distance traveled during the final accleration (even if your final speed isn't zero). Equations below:
Set 1: acceleration = A, velocity (speed) = V, distance = X, time = T, initial = i and final = f
starting with the assumption of constant acceleration then each successive equation can be derived by integrating the previous equation with respect to time.
A = A
Vf = At + Vi
Xf = (1/2) A (T^2) + Vi T + Xi
Set 2: also at constant acceleration with the same key as above.
A = (Vf - Vi)/T
V(average) = (Vf + Vi)/2 = (Xf - Xi)/T
Either set of equations can be used. They are basically the same set of equations. One derived using calculus (Set 1) and the other using conceptual ideas of motion (Set 2). With a little algebra both sets can be derived from eachother. If you add in an inconstant acceleration (jerk) then the equations become more complicated and I am not gonna derive them out here.
I am sticking to my is it possible but most likely not practical. Unless you came up with a way to maybe statistically ignore any little outlyer type accelerations... anyway, I am rambling. Feel free to let me know if you can't solve a problem like the one I stated above using those equations and I wll be glad to help.
Click to expand...
Click to collapse
For this to work we would have to stop the rotation of the Earth, but then there is not a stationary point anywhere in the universe, so I will never be able to measure the train I was on playing teeter. I always loved Newtons equations of motion especially the one A=A

uniqueboy said:
For this to work we would have to stop the rotation of the Earth, but then there is not a stationary point anywhere in the universe, so I will never be able to measure the train I was on playing teeter. I always loved Newtons equations of motion especially the one A=A
Click to expand...
Click to collapse
Actually if we are going special relativity on this problem then we also need to eliminate any form of gravity since special relativity only applies to inertial frames of reference. And since I am not about to break out the tensor mathematics of general relativity, then it would seem we are SOL in finding out what really did happen with your teeter game. :-(
Just remember: Things are the way they are because if things weren't they way they are we wouldn't be here asking why are things the way they are.
Anyone else having as much fun as I am with this thread?

IDEA:
I have thought of a way to at least get a close approximation to this. I am not a programmer but it seems to me this should be possible. The area under the graph of acceleration vs time is velocity. Make a program that would plot the information acceleration vs time information on a graph in excel. Then, after the recording is finished, the program could go in at fixed intervals, turn the smoth graph into a point to point graph with straight lines from point to point (using the line of best fit feature in excel... assuming it is also in excel mobile...) and calculate out areas under the curve. Then you would have all the information needed, velocity and duration of each velocity, to easily calculate out distance. Now this would be an approximation and never be exact. But even calculators only give you Tailor Series approximations. The smaller the interval taken on the graph the more accurate the final distance would be. You could even make it work with an adjustable interval so the sensitivity could be adjusted.
To better explain my idea for manipulating the graph then picture a sine graph. On it's own it is a nice smooth wave looking graph that repeats every 2pi (don't want to look up the symbol for pi to type. just take 3.14159 = pi). Now imagine you marked a point every 0.5pi on that curve and then connected the points together with a straight line. You would end up with a saw tooth graph. Now what if you did that at every 0.2pi, or .1pi, or... you get my drift. The smaller the interval that you make a point and connect it the closer and closer you get to a good approximation of the original sine graph (much the way Archamedes used ever increasing numbers of triangles inside a circle to approximate its circumference and calculate pi). The advantage of doing this is to eliminate calculus and use nothing but algebra.
This could all be done without graphing and just having the program do the math tiself but why not let excel do the work? I could be way off and using excel this way may suck from a programming point of view, but this is how I would handle a lot of data if I were given a bunch of acceleration and time information. Making the sensitivity and accuracy changable by allowing the user to define how far apart to set the points could allow for some decent measurements. I think if done right even outlying movements (slight tilting of the phone or taking a step or two) could be negated by the approximation.
Let me know what people think. Even if this doesn't work maybe it will inspire a better idea!!

Related

Navigation using Accelerometer

Alright, here is something that I think would be really cool. I don't anything about coding, but if someone is ambitious I think this could be kind of a cool thing. If anyone is a pilot and has heard of INS, it is basically a self contained navigation system on a plane, usually an airliner.
Basically the pilots set in the coordinates of the gate they are at, then a gyro or accelerometer measures speed in all directions to navigate itself. You can read about it here.
Why couldn't we use the accelerometers on our phones along with maps to do the same thing? Why? Well, it would help with battery life and would be great in really low GPS signal areas. Then you could have it get a location from the GPS every so often to make corrections for error and what not.
I don't know, just thought it would be kind of cool, maybe its lame maybe its not. If not, have fun I think it would be cool.
I think this takes a dive into calculus
When a person stops accelerating and moves at a constant speed, a g sensor (accelerometer) gives a zero reading back. It gets really screwy trying to track position with only one accelerometer. Think of it this way, the nintendo wii recently announced a wii controller add on for one to one motion... why? It takes more than one accelerometer to track exactly how a person moves in free space (and a butt load of mathematics).
Basic as can be said, position tracking cannot be done on this device without the aid of a gps or more accelerometers, i hope that helps
gobmonster said:
I think this takes a dive into calculus
When a person stops accelerating and moves at a constant speed, a g sensor (accelerometer) gives a zero reading back. It gets really screwy trying to track position with only one accelerometer. Think of it this way, the nintendo wii recently announced a wii controller add on for one to one motion... why? It takes more than one accelerometer to track exactly how a person moves in free space (and a butt load of mathematics).
Basic as can be said, position tracking cannot be done on this device without the aid of a gps or more accelerometers, i hope that helps
Click to expand...
Click to collapse
Oh well, I thought it would take quite a bit. Thanks!

How precise is the Blackstone GPS in 3D?

Hi to All, maybe some of you could be interested in knowing how precise is our blackstone GPS in three dimensions - e.g. how accurate is the reported spatial position with respect to the true position in space.
In fact, my initial idea was to experimentally measure the GPS LAG at high speed, therefore I switched on the touch HD running gWatch while doing a small flight with an airplane that flies at about 200 km/h - and I wanted to compare the data with precise timestamps between different GPS (i had four on the airplane, but for two i couldn't extract the trajectories!) in order to see if the positions at the same moment differed significantly.
For the time being, the time lag measurement is impossible - since the reference GPSMAP 296 (an aeronautical device certified for VFR flights that costs about 3 Blackstones....and does only GPS!) generates a very nice trajectory, but it FILTERS the data heavily so that it provides a track fix only about 5 seconds or so. Interestingly, also gWatch provides an output every two seconds, so a tight comparison of the GPS response time is impossible.
However, you can load the google trajectory below and get a sense for its accuracy - assuming that the GPSMAP296 is right . It is possible that the GPSMAP 296 was using WAAS, Wide Area Augmentation System, that could improve its accuracy (I didn't check it during the flight) and I also realized when i landed that the Blackstone had fallen below other stuff on the seat !
However, the precision of the trajectory in 3D looks to me pretty good ....is mine the first touch HD flying?
For your fun....
Nice job, after this I canĀ“t wait to have my HD.

Distance between two devices (with a high accuracy)

Hi,
i need a Tool to calculate the distance of two devices with an accuracy of about 1 meter by a distance of 0-3 meter.
GPS doesn't suite this needs, but i guess bluetooth signal-strength does.
I was looking up the android bluetooth api but can't find anything to read signal strength. Anyone any tips how to get on the strength of the bluetooth signal?
thanks, exec
Cool idea
That is a pretty cool idea. I'm not a developer but I like it.
Another way is to use sound along with a tcp/ip or bluetooth connection
1) keep track of each phone's clock (or difference between)
2) make the second phone chirp/beep and record
a)the time the second phone started the beep
b)the time the first phone heard the beep.
3) calculate the distance using the amount of time it took to hear the beep.
note: the speed of sound may differ slightly but should be within your accuracy range
see http://www.sengpielaudio.com/calculator-soundpath.htm for an example.
nice idea, i'll keep this in mind. But for the moment it doens't fit my needs, cause it can be a loud enviorment with a lot of phones where i have to find the nearest one
exec87 said:
nice idea, i'll keep this in mind. But for the moment it doens't fit my needs, cause it can be a loud enviorment with a lot of phones where i have to find the nearest one
Click to expand...
Click to collapse
A pure tone at an agreed upon frequency will be hard to miss. If you have the service installed on all the phones you can query each one in turn and then figure out which one is nearest.
do you know any example how to analyse the frequenze of the current recorded tone?
exec87 said:
do you know any example how to analyse the frequenze of the current recorded tone?
Click to expand...
Click to collapse
This looks promising
http://code.google.com/p/moonblink/wiki/Audalyzer
sry but if you want to measure distances of up to 3 metres with the help of sound speed, that wont work
sonic speed is 343m/s, that means it takes 0,002.9sec for one meter to pass.
or otherwise, it would pass the 3 meters in 0,008.7 sec for 3m
to compare it, a nexus one would do a clock cycle every 0,000.000.01 seconds, and in that time, the sound weave moves 0,000.000.343 metres.
So if you're optimistic and it takes "only" 100.000 to 500.000 cycles to sample the sound AND compare it to the clock, your diffrence of that two cases would be 3cm to 15cm, so you got a standard "uncorrectness" of about 12cm.
but thats if it takes 100.000 to 500.000 cyles, and it would be worse if it takes more time or if the clock is not 100% correct (this example is with a 100% exact clock)
if the clock is only correct for 1ms, you must add another 30cm of "uncorrectness"
arthofer said:
So if you're optimistic and it takes "only" 100.000 to 500.000 cycles to sample the sound AND compare it to the clock, your diffrence of that two cases would be 3cm to 15cm, so you got a standard "uncorrectness" of about 12cm.
but thats if it takes 100.000 to 500.000 cyles, and it would be worse if it takes more time or if the clock is not 100% correct (this example is with a 100% exact clock)
if the clock is only correct for 1ms, you must add another 30cm of "uncorrectness"
Click to expand...
Click to collapse
Dont think sampling and processing cpu-time matters so much as to make this method unusable.
a)The sample time does not matter. It will be:
system time when the recording started + time within the sample where the frequency is found (comparison is part of post-processing). The sample window can be fixed at 0.5 seconds (or less) as 343/2= 171.5m is huge.
The phone emitting the frequency can be triggered over wifi/radio and that will be very very quick (speed of light+message processing time)
b)the time taken for the comparison will not matter as its done after the event has occurred. (post-processing)
The 1ms clock problem can possibly be overcome by using System.nanoTime()
exec87 said:
Hi,
i need a Tool to calculate the distance of two devices with an accuracy of about 1 meter by a distance of 0-3 meter.
GPS doesn't suite this needs, but i guess bluetooth signal-strength does.
I was looking up the android bluetooth api but can't find anything to read signal strength. Anyone any tips how to get on the strength of the bluetooth signal?
thanks, exec
Click to expand...
Click to collapse
Maybe use a ruler?
Sorry that I can't stop myself doing this after reading your question
ok, to a more serious side, if bluetooth don't work, then maybe use wi-fi. don't know if they have the api for wi-fi to measure signal strength neither.
What if you had one phone act as a Wi-fi hot spot, then the other connect to it. Then someone write an app that will use GPS to determine the distance between the two. IDK, just a shot in the dark. I really dont have a lot of knowledge about that stuff.
You could use a PRF (pulse repitition frequency) but I have no idea what these would be for bluetooth or even the radios. Honestly I think using the GPS coordinates and distance equation would be the easiest.
Unfortunately our consumer gps's rarely go down to 1m, and that the max... And it will likely not work indoors
britoso is right... i'll keep the hint with wlan strength in mind, but atm i'm working at the audio idea... it's a little bit hard, and first tests show that an accuracy of 1-2 meters is possible... i'll reply if i'm done.
however i'm thankful for EVERY input
edit: i think i will give up... the delay of analyzing the sound is between 150ms and 250ms... and i can't see in code where this 100ms difference come from... i think i need a kind of realtime system to build this...
exec87 said:
britoso is right... i'll keep the hint with wlan strength in mind, but atm i'm working at the audio idea... it's a little bit hard, and first tests show that an accuracy of 1-2 meters is possible... i'll reply if i'm done.
Click to expand...
Click to collapse
however i'm thankful for EVERY input
exec87 said:
edit: i think i will give up... the delay of analyzing the sound is between 150ms and 250ms... and i can't see in code where this 100ms difference come from... i think i need a kind of realtime system to build this...
Click to expand...
Click to collapse
If you can PM me the code I can take a look.
I didn't want to start coding this because
a) I only have one phone
b) havent used the bluetooth API.
I'm comfortable using tcp/ip though
i don't know if this is impossible.. but i think its worth the try.. i'm horrible at development nor i have taken any advanced math courses... so heres the concept:
how about getting two people hold a phone facing each other.... they both have to hold the phone upright and straight...(using Spirit Leveler)
with one of the phones... the app takes a picture of the other phone... and asks you to point out the phone's height in the picture...
and given the real height of the phone (this should be a dropdown box for known phone types.. and custom if you want to use a credit card... or anything else u find) it should tell you the height..
possible?
oh and one more thing.. u can have the phone's screen facing the camera with white background and black DOT... if that helps to do live tracking of the phone's size...??
britoso said:
If you can PM me the code I can take a look.
I didn't want to start coding this because
a) I only have one phone
b) havent used the bluetooth API.
I'm comfortable using tcp/ip though
Click to expand...
Click to collapse
This is what i first thought of when i saw this thread. Why not establish an ad-hoc network and send over a series of pings, each one send over one packet of info from phone A to phone B. have phone B process the information and show its good then send it back to A and have it verify it also. Then based of this data(and experiments to see hwo long it takes to process the information. you the time from a-b-a to calculate the distance.
This is all hoping that the speed of travel of the packet is not to fast to calculate the distance lol.
Any results?
This is the exact answer I'm looking for, which method produce better accuracy, is it the sound (measuring time difference) or the signal strength test (measuring the RSSI)

[Q] getting "shake" input

is there an easy/built in way of detecting if the phone is being shaken or do you have to manually code for it using accelerometer input?
hyperbyteX said:
or do you have to manually code for it using accelerometer input?
Click to expand...
Click to collapse
You have to manually code it.
As they said - you have to check the accelerometers manually.
I use something like this
float speed = Math.abs(fx-shakeLastData[0]+fy-shakeLastData[1]+fz-shakeLastData[2]);
When fx/fy/fz are the current accel readings and shakeLastData is an array of the previous readings.
Note: I only check this once every 100ms and a result > 16 is a 'shake'.
Word of advice - I originally had a value of about 6-8 in there and it seemed fine until someone was playing it on a bus and it 'shook' constantly. I had to increase the threshold to where it is now before it could deal with people playing in moving vehicles

Want to know why the SGS GPS is crap? Read here

We all know that the GPS unit on our beloved SGS sucks badly. Firstly it takes ages and ages to find a good signal, and secondly it chews up bucketloads of battery to get there.
The other day I was talking to someone about GPS units within some handheld devices at work, and he told me something that completely blew me away - how GPS units ACTUALLY work as opposed to how most people think they work.
Firstly let me preface this by saying that he used (and I will use) the "Lies to Children" method of technical communication. If you are not a Terry Pratchett fan, it basically means that instead of explaining a subject to the Nth degree and getting the full detail across, you sum it up with what is essentially and technically a lie - but one that's a half-truth that will pave the way for future understanding.
Example? "The sun rises in the east and sets in the west". Comparatively speaking against the Earth, the Sun does NOT move. The actual truth is the sun moves within the galaxy and within the galaxy cluster and within the universe. The earth also moves in a similar manner and also rotates on its axis with a slight wobble that technically provide seasons. How does that relate to a 5 year old? "Yeah, uh, kid. The sun, you see, it rises in the east". A "lie" but one that works for everyone, and when their brain absorbs enough other information you can explain it properly (with another "lie", but one that's more truthful than the previous one)
Back to the topic:
I thought, like most of you probably think, that a phone's GPS works by having some kind of 2-way method of communication. When you enable the GPS unit and go into maps, the device starts broadcasting to the satellites to say "I'm here, now where is 'here'?" That's not the case.
It works a bit like this (and pardon the analogies)
Let's say there are 3 satellites are in geosynchronous orbit at fixed locations. For the sake of the description we'll call them FRED, GEORGE, and BILL. A lot of time and money was spent to make sure that they don't vary that location by a factor of a few cm before they re-correct their location. A bunch more time and money went into their internal time-keeping mechanisms so that they are also VERY accurate.
From their location they broadcast a signal outward. Fred says "HI I'M FRED LOCATED AT POSITION X AND THE TIME IS SUNDAY 18TH MARCH 2012 7:15PM AND 38.123456789 SECONDS"..."HI I'M FRED LOCATED AT POSITION X AND THE TIME IS SUNDAY 18TH MARCH 2012 7:15PM AND 38.123456790 SECONDS" and so on.
George says "HI I'M GEORGE LOCATED AT POSITION Y AND THE TIME IS SUNDAY 18TH MARCH 2012 7:15PM AND 38.123456789 SECONDS"..."HI I'M GEORGE LOCATED AT POSITION Y AND THE TIME IS SUNDAY 18TH MARCH 2012 7:15PM AND 38.123456790 SECONDS" and so on.
And Bill...I can't be stuffed writing it, let's just say Bill screams out his location and the current time, multiple times a second.
Now, while some satellites broadcast in higher or lower timings, the basics are the same: Current position, plus the current (accurate) time. (Some also send information regarding the other satellites it "knows" around it. Eg, "HI I'M BILL AT POSITION Z AND THE TIME IS BLAH AND I CAN SEE GEORGE AND FRED. THEY DON'T SAY MUCH, SO IT SURE IS LONELY UP HERE").
My point here is that the satellite neither knows nor cares who you are or where you are, it just pumps out that racket like a noisy teenager with a new stereo and what they THINK is the coolest music ever.
When the 3 signals are received on the ground by the GPS unit, it works out: "Bill thinks it's THIS TIME....George thinks it's THAT TIME...and Fred thinks it's this OTHER TIME....that means my distance from each one is actually THIS FAR and the real time is NOW". From that you can bang your location in LATITUDE and LONGITUDE on a map.
Sure, there are complications due to altitude and speed and direction, and you really need more than 3 satellites to work out where you are. But the reality is that, based on the lag in the signal from transmission to receiving (able to be calculated due to the speed of light), we can work out how long each signal took to get to the unit and therefore how far from the satellites we are. If you know where the satellite is supposed to be, you can work out where you are on the globe.
It really is that simple.
So when I found all of that out, I asked the question: If the satellite is really all that counts in this case, why does our GPS blow? In fact, why does any GPS work better than others?
Well, there are multiple factors:
Firstly, just like a good barman or psychologist, some "listen" better than others. The PASSIVE radio signal needs to be received by a unit that has a decent antenna and doesn't have other electrical crap affecting it. Anyone look inside their phone and see the antenna (and it's location)? Yup, it's in a pretty bad position and it's a pretty bad antenna.
Even if we were somehow to isolate the GPS unit and bring it out away from the interference, it's a pretty bad receiver. If you've ever listened to a transistor radio and compared it to a $4000 stereo unit, you know what I mean. Noise = bad data = bad location finding.
Secondly, the signal needs to be interpreted. When each broadcast hits the phone, the receiver accepts it and shunts it to the processor to work out. Slower phones can process less signals, especially when the OS may put a limit on how much processor time should be dedicated into working out the signals (there's no point using 100% of your processor when that means you can't display it properly on the map or let the user actually interact with the maps app)
Thirdly, we don't know all the positions of the satellites. When the signals first start getting processed, your phone communicates with the NTP servers it has located in your GPS.CONF. It asks which satellites are where and where that actually may be on the globe. Remember how I said each satellite tells you it's position? That was a "lie to children" moment. The damned thing is in the SKY after all. So, while we technically know where it is, the information means jack and sh*t to the GPS unit unless it has more information available.
What I mean here is: What part of the world can that satellite see/broadcast to? The satellite doesn't know or care, and it's not broadcasting that information at any case. There's more than a couple of satellites up there, so the phone needs to check back the NTP.ORG to work out some basics. As your phone uses the GPS function more and more, it stores up the addresses of the satellites that you know and love in your neck of the woods (including ones that are not geostationary) and will need to rely less on a data connection.
That's why when you use GPS the first time after a fresh flash it is just plain crap, but after a few more tries it works better. And that's why it's important to use FasterFix or a like app to nominate the closest/best NTP server for you - the closer servers respond quicker over the 'net and also have the list of "closest" stationary satellites stored at the front of the file. If you're in Australia you don't care about the 'merican or European sats, but they come afterward "in case you're overseas"
Lastly, when you take it all into account, if you have bad weather or tall buildings around you, then the signals blasted down from on high either get muted, muddled, or bounced around. The error correction in our phones is non-existent - it doesn't actually need to be due to the fact it's a PHONE and not a GPS unit, but some devices can and do filter out the known "dodgy" signals before processing. I'm pretty sure that when the techies run out of toys to add to or fix in our phones, they'll add altimeters and thermometers and they'll fix the GPS post-processing to get the signal down pat.
In case you're wondering, the whiz-bang GPS units that can get extra awesome resolution (down to beyond cm) have the list of every single satellite location up there stored internally, the on-board processor is dedicated to working out what the signals mean, and the GPS chip itself normally has a great big honking antenna on it and is extra receptive. Ours is a 2 dollar job from some bulk offload sale.
There you have it. Thanks for letting me brain dump. Hope this helps some people's understanding!
Interesting. I had always thought it was a simple two-way communication between the phone and a geostationary satellite. But in retrospect, that would be extremely inaccurate seeing as how the attenuation over such a long distance, as well as the interference with other phones (which might be using the same frequency because GPS is not network controlled, unlike calls) would make it difficult for the satellite to tell where the signal came from. This explanation makes much more sense. Thanks!
So, its still better to use an app like GPS Aids so the GPS would be "up" faster... Thanks for explanation, you sir, get a thanks.
Wow! Nice post, well written and very informative!
But I don't understand, how the help is GPS free when all this technology is so expensive!?
Sent from my GT-I9000 using XDA
Yes. Good post. Except the GPS satellites aren't geostationary. They orbit the earth twice a day at an altitude of approximately 20.000km. There are 6 different orbit planes and 4 satellites per orbit.
A geostationary satellite sits directly above the equator at an altitude of about 36.000km. One orbit lasts excactly one day and thus the satellite appears as if it's standing still in the sky.
You can google all that if you like.
GPS would be simple if all the satellites were geostationary, but that would make triangulation very difficult. Especially around the polar areas. Therefore they must be orbiting crisscross all over the globe. But that also makes geostationary orbits impossible (it is only possible directly above the equator).
Thanks given simply for the Terry Pratchett reference (I'm addicted to Discworld novels)
Here are my 2 cents about this whole "closer NTP server = better results"
1) NTP server is just a time server. It doesn't store any info regarding any satellite in your neighborhood. That's the role of A-GPS server - in our case it's supl.google.com that you see in every gps.conf.
2) We all get our current time from our mobile provider or manually setting it in settings. So we don't sync our clock to NTP server time. Our phone will just use NTP to figure out the offset - i.e. how accurate our clock really is. It can also take into account the delay factor caused by network latency since it's something relatively easy to measure. So in the end of the day it won't really matter what NTP server you use as long as it works and you don't have any network issues with it.
From my experience all these NTP games are one big placebo effect.
The only tips I got for better GPS are:
A) Clear GPS cache after not using it for a long period of time (or let android do that for you eventually).
B) Use mobile network data for faster fix (A-GPS).
C) Keep the antena free from any obstacles - In car place the phone directly under the front glass, don't expect it to work under the roof.
While running if you use armband, place the phone with its screen toward your arm since if placed otherwise your arm will blocks the gps signal completely.
Any one know why mine is fine and grabs lock within 10 seconds indoor with iGO and GPS test?
I didn't f*)Kin camp outside a electronic store JUST to get one on release date I got one from later batch which fixes hardware GPS reception issue
All GPS use one-way communication.. it would become too expensive n complicated to have two-way communication
1) The GPS receivers here on earth would require complicated and high power circuitry to send signals to satellites miles above the earth. It would suck a battery dry in minutes
2) The GPS satellites would require to handle communication with an exponentially increasing number of GPS units on the ground. That would require huge processing power, multiple channel support and communication management to avoid clashes between communicating units. Satellites are situated so high up that signals to and from satellites accrue a lot of noise n distortion.. For proper signals, satellites can only transmit data at very low data rates and have low bandwidth..
GPS requires exact timing, and I mean atomic clock exact. Its impossible to have atomic clocks in today's small devices. So satellites have a very accurate atomic clock on board.. Heck, some satellites have 3 on board to correct clock drift and error!! Even then, GPS devices were very expensive.
Then, some scientist found a way to find the exact location and time by using the really small timing variations in satellite signals. Coz of that, we can now afford GPS chips at $50..
Our phones don't have space for large ceramic antennas (one GPS unit I have has a 25x25x4 mm antenna on top!!) And the timing variation trick helps even low power units pick up satellite signals, but they are slightly less sensitive.. They won't be able to pick up weak signals, which your car nav unit will..
Also, processing GPS data doesn't take that much processing.. Almost all GPS units output their data in a standard format called NMEA format and the location data looks something like:
$GPGGA,<time>,<latitude>,<longitude>,<fix quality>,<no. of satellites>,<altitude>......
All the processor has to do is use this data.. A processor doesn't have to calculate anything at all with regards to actually locating the device. The GPS chip does it all..
Sorry for the really long post.. I hope it makes sense.. I'm doing a project which uses a GPS unit, so I've been studying on it..
First let me start by saying that I have a habit of drunk posting. So I logged into XDA today at work and went "huh? An extra bunch of 'Thanks'? What the hell have I done now?"
Which means that while the information in the OP does a decent job of summing up what I was told, some was a little off. Cheers for pointing out where I got things wrong.
Remember, last week "my mind = blown" by the fact that GPS isn't 2-way...which makes sense but is one of those things that I never considered...
Don MC said:
Yes. Good post. Except the GPS satellites aren't geostationary. They orbit the earth twice a day at an altitude of approximately 20.000km. There are 6 different orbit planes and 4 satellites per orbit.
Click to expand...
Click to collapse
You are quite right, there are a whole bunch of sats whizzing around up there in set orbits. Some of them "talk" to ground stations to get updates about the world in general, but a bunch just go screaming past blaring out their message.
I asked my mate at work who told me about how GPS works....his response? "Yeah, Lies to Children works like that." Apparently a combination of his half-explanation and my beer meant I got something wrong there. Sorry.
To give the full information about the different sats flying about, and how they get send the information....well, apparently it was easier to say "geostationary" !!
mike.sw said:
Here are my 2 cents about this whole "closer NTP server = better results"
1) NTP server is just a time server. It doesn't store any info regarding any satellite in your neighborhood. That's the role of A-GPS server - in our case it's supl.google.com that you see in every gps.conf.
2) We all get our current time from our mobile provider or manually setting it in settings. So we don't sync our clock to NTP server time. Our phone will just use NTP to figure out the offset - i.e. how accurate our clock really is. It can also take into account the delay factor caused by network latency since it's something relatively easy to measure. So in the end of the day it won't really matter what NTP server you use as long as it works and you don't have any network issues with it.
From my experience all these NTP games are one big placebo effect.
Click to expand...
Click to collapse
Again, you're right. But in the GPS.conf file there are both NTP and A-GPS servers. I was of the understanding the NTP address information also gave ...wait, disregard - just Googled that.
NTP only gives you time. And it won't matter which NTP server you get unless you have networking issues. I suppose the answer there lies in the fact that a "closer" NTP server will get you a quicker response to begin with, so your phone can start the process of working out the offset quicker....
Good tips, though I'm too much of a beer drinker to go running. Screen in or out.
ilabs said:
All GPS use one-way communication.. it would become too expensive n complicated to have two-way communication
1) The GPS receivers here on earth would require complicated and high power circuitry to send signals to satellites miles above the earth. It would suck a battery dry in minutes
2) The GPS satellites would require to handle communication with an exponentially increasing number of GPS units on the ground. That would require huge processing power, multiple channel support and communication management to avoid clashes between communicating units. Satellites are situated so high up that signals to and from satellites accrue a lot of noise n distortion.. For proper signals, satellites can only transmit data at very low data rates and have low bandwidth..
Click to expand...
Click to collapse
Correct...but kids these days also assume that steak literally grows on trees. Assumptions are the mother of all....
ilabs said:
Our phones don't have space for large ceramic antennas (one GPS unit I have has a 25x25x4 mm antenna on top!!) And the timing variation trick helps even low power units pick up satellite signals, but they are slightly less sensitive.. They won't be able to pick up weak signals, which your car nav unit will..
Click to expand...
Click to collapse
Correct, that was my point about the crappy GPS chip being like a crappy transistor radio. The combination of the quality of the chip plus the really really bad antenna (and it's position) means that people will not get car-gps like quality from their phone....and they shouldn't !!!
ilabs said:
Also, processing GPS data doesn't take that much processing.. Almost all GPS units output their data in a standard format called NMEA format and the location data looks something like:
$GPGGA,<time>,<latitude>,<longitude>,<fix quality>,<no. of satellites>,<altitude>......
All the processor has to do is use this data.. A processor doesn't have to calculate anything at all with regards to actually locating the device. The GPS chip does it all..
Click to expand...
Click to collapse
You're talking about the "final" output, but when I mentioned processing I meant the processing of the signal received.
I asked again about this. It was explained thusly: If you have interference in the form of tall buildings (for example) then the signal will actually bounce around a bit before being picked up. That "echo" can sometimes give a false reading if you took that one bit of information as a whole, as it's not a true representation of the time it took for the signal to get down from the sat.
So the device collects constantly and shunts that information to the processor to determine the length of time between when the sat spat it out and when the unit received it.
Now say every 10th "message" is a bounced/echo one. If the device is only able to process every 5th message, then it's potentially going to have up to half the messages be a dodgy echo job = bad location. It will catch up, eventually, but will take longer to know something weird is going on.
If, on the other hand, the more powerful processor was able to work out every 3rd message or more, then a more accurate fix comes quicker.
ilabs said:
Sorry for the really long post.. I hope it makes sense.. I'm doing a project which uses a GPS unit, so I've been studying on it..
Click to expand...
Click to collapse
Dude, the more people who post (sober) the better the information we have!!! Post away and make it long! Mine was!!
MrAndroid12 said:
Any one know why mine is fine and grabs lock within 10 seconds indoor with iGO and GPS test?
I didn't f*)Kin camp outside a electronic store JUST to get one on release date I got one from later batch which fixes hardware GPS reception issue
Click to expand...
Click to collapse
Luck....pure kiwi luck? lol.
I know my hardware blows. Takes anything from 30 seconds to 1 minute to get a dodgy half-lock.
I was thinking about packing it in for a new phone but a) still got a plan to pay off and b) ICS made the device more than useable in every other aspect.
wogfella said:
You're talking about the "final" output, but when I mentioned processing I meant the processing of the signal received.
I asked again about this. It was explained thusly: If you have interference in the form of tall buildings (for example) then the signal will actually bounce around a bit before being picked up. That "echo" can sometimes give a false reading if you took that one bit of information as a whole, as it's not a true representation of the time it took for the signal to get down from the sat.
So the device collects constantly and shunts that information to the processor to determine the length of time between when the sat spat it out and when the unit received it.
Now say every 10th "message" is a bounced/echo one. If the device is only able to process every 5th message, then it's potentially going to have up to half the messages be a dodgy echo job = bad location. It will catch up, eventually, but will take longer to know something weird is going on.
If, on the other hand, the more powerful processor was able to work out every 3rd message or more, then a more accurate fix comes quicker.
Dude, the more people who post (sober) the better the information we have!!! Post away and make it long! Mine was!!
Click to expand...
Click to collapse
Haha.. Yeah, the assumptions that you hear from time to time!! Makes even standard fiction seem possible!!
When I was talking about the processing, yeah, it was the final processing. But the processing of the GPS signal is only done by the GPS chip, not the processor to which the data is output. Generally GPS satellite signal frequencies are such that they die out very quickly when reflected off or passing through objects and buildings. That's why you get the best signal out under the open sky. The processing of the final received signals is done completely by the GPS chip. A standard GPS chip has only TX/RX serial pins apart from power pins. As soon as you power it up, it starts spitting out GPS data. Externally interfaced processors don't have to calculate anything at all.
Apart from this, everything is spot on!!
---------- Post added at 04:34 PM ---------- Previous post was at 04:27 PM ----------
MrAndroid12 said:
Any one know why mine is fine and grabs lock within 10 seconds indoor with iGO and GPS test?
I didn't f*)Kin camp outside a electronic store JUST to get one on release date I got one from later batch which fixes hardware GPS reception issue
Click to expand...
Click to collapse
Generally, when you first start up a GPS unit, its called a cold start coz it takes time. It will take time to scan for satellites and make a database of satellites around. Once it has at least 3 satellites in view, it has enough data to perform a proper triangulation to give your location. As the antennas on a phone are weaker, there's a certain error in a signal, which is why Google maps first shows your estimated location in a blue circle. As you begin to move, more data like heading and stuff is known and your position becomes accurate.
Sometimes even I get a lock in 10 seconds, sometimes not even in half an hour. That happens when there are no strong satellites above. If you always get a lock, I guess you're lucky to have a good number of satellites hovering over your phone like guiding angels..
wogfella said:
NTP only gives you time. And it won't matter which NTP server you get unless you have networking issues. I suppose the answer there lies in the fact that a "closer" NTP server will get you a quicker response to begin with, so your phone can start the process of working out the offset quicker....
Click to expand...
Click to collapse
The "quicker" result may be important if you query ntp servers every second (the default rate for GPS sample I think), however ntp is being queried once in a while - not sure the exact interval maybe one of the developers here can help with that.
If everyone of us would query the ntp servers every second they would be hammered to horrible death.
In "normal" NTP setups, client systems, like your desktop, query a small number (perhaps between 1--10) NTP servers every so often, e.g. once per minute (or 64 seconds in a common UNIX implementation). This can vary depending on response.
NTP is designed to get microsecond wall-clock time accuracy despite round-trips to NTP servers often taking tens, or even hundreds of milliseconds.
I believe most Android phone GPS chips update position once per second. There are apps that will confirm this.
I don't believe there's any need to repeatedly query NTP servers every second.
However, the hardware clocks in phones are terrible. Mine drifts up to one second per day, until the clocksync app uses an NTP query to drag it back to reality. Note this is different to how it's normally done on a PC: there, the OS clock is sped up or slowed, so that the time can gradually skew towards reality. For a large difference, the time has to be stepped, all in one go, which isn't ideal from an OS perspective (e.g. timed callbacks, etc).
So I can see that more frequent NTP checks might help a little, for GPS, but not a lot.
Note that consumer GPS units (e.g. automotive, handheld) do not use NTP at all, nor do they have expensive hardware clocks. So I'm not at all convinced why NTP is "required" on Android GPS, unless it's because most phones default to getting the time from the mobile network, which can be *minutes* off.
Finally, sadly, none of the above even remotely explains why our SGS phones have a reputation for (or in fact "are") worse at GPS than other similar phones...
Edit: meant to add: the latter is perhaps mostly likely explained by a combination of poor antenna design, and sub-optimal GPS implementation in the Broadcom chip (which I believe is the one involved).
I wanna kno why the x10 has such a bad camera
OMG. Counter Strike On Android! http://cs-portable.net/
I wanna kno why the sgs has such a bad camera
Very interesting
ilabs said:
Haha.. Yeah, the assumptions that you hear from time to time!! Makes even standard fiction seem possible!!
When I was talking about the processing, yeah, it was the final processing. But the processing of the GPS signal is only done by the GPS chip, not the processor to which the data is output. Generally GPS satellite signal frequencies are such that they die out very quickly when reflected off or passing through objects and buildings. That's why you get the best signal out under the open sky. The processing of the final received signals is done completely by the GPS chip. A standard GPS chip has only TX/RX serial pins apart from power pins. As soon as you power it up, it starts spitting out GPS data. Externally interfaced processors don't have to calculate anything at all.
Apart from this, everything is spot on!!
---------- Post added at 04:34 PM ---------- Previous post was at 04:27 PM ----------
Generally, when you first start up a GPS unit, its called a cold start coz it takes time. It will take time to scan for satellites and make a database of satellites around. Once it has at least 3 satellites in view, it has enough data to perform a proper triangulation to give your location. As the antennas on a phone are weaker, there's a certain error in a signal, which is why Google maps first shows your estimated location in a blue circle. As you begin to move, more data like heading and stuff is known and your position becomes accurate.
Sometimes even I get a lock in 10 seconds, sometimes not even in half an hour. That happens when there are no strong satellites above. If you always get a lock, I guess you're lucky to have a good number of satellites hovering over your phone like guiding angels..
Click to expand...
Click to collapse
My cold starts take no longer than 10 seconds for a 50-30 meter lock. After it is warmed up, GPS takes a matter of 2 seconds to grab lock @ 10 meters and 5 shortly after.
---------- Post added at 07:41 PM ---------- Previous post was at 07:40 PM ----------
MattyOnXperiaX10 said:
I wanna kno why the sgs has such a bad camera
Click to expand...
Click to collapse
It's not that bad, is it?
I wanted to shoot a video for my YouTube channel using my mums phone. Galaxy s and it wasn't focusing on the camera, video quality was bad (sorry for of topic)
Ask us any Android Related Question @FeraLabsDevs on Twitter or @HowToMen
MrAndroid12 said:
My cold starts take no longer than 10 seconds for a 50-30 meter lock. After it is warmed up, GPS takes a matter of 2 seconds to grab lock @ 10 meters and 5 shortly after.
---------- Post added at 07:41 PM ---------- Previous post was at 07:40 PM ----------
It's not that bad, is it?
Click to expand...
Click to collapse
I get the same start timings, provided there are satellites to lock onto.. Sometimes my cold start time is a little over a minute!! But with no satellite cover, I could be better guided by a rock than my phone..
Sent from my GT-I9000 using XDA

Categories

Resources