Notifications
Clear all

NEO-6M GPS module

13 Posts
2 Users
1 Likes
4,528 Views
(@pugwash)
Sorcerers' Apprentice
Joined: 5 years ago
Posts: 923
Topic starter  

   
Quote
(@pugwash)
Sorcerers' Apprentice
Joined: 5 years ago
Posts: 923
Topic starter  

This is the quick fix for the "List index out of range error".

# if the tempPos List has only one item return without seconds value

if len(tempPos) !=2:

formattedPosition = "%i° %i'" % (degrees, minutes)
return formattedPosition

# calculate seconds

I have attached the whole python file below. I think that trying to program this in C++ would probably be a bit of a nightmare but if anybody does try I have a 16x4 LCD that is just waiting for an Arduino sketch. ? 


   
ReplyQuote
(@pugwash)
Sorcerers' Apprentice
Joined: 5 years ago
Posts: 923
Topic starter  

I discovered that if the program was started before 10:00 AM, the time field became corrupted.

This has been resolved in revision R2 and the code simplified, see attached file.


   
triform reacted
ReplyQuote
triform
(@triform)
Member
Joined: 5 years ago
Posts: 324
 

@pugwash

Hi Steve,

Are you running this test indoors or out?  It's tough with GPS indoors for most systems. I do notice that with a better antenna, they do perform somewhat better but in the end, they will not do all that well inside a home.  On the GPS bot I did, I would get good results with a rubber duck antenna and spotty without (including the one like you have).  

Scott

 


   
ReplyQuote
(@pugwash)
Sorcerers' Apprentice
Joined: 5 years ago
Posts: 923
Topic starter  

@triform

Hi Scott,

I have been working on this indoors, due to appalling weather for the last few days. Now the sun's come out, I can do some more testing on the balcony, perhaps with a beer or two in 82°F.

The next thing will be to write another program to log the position, both longitude and latitude for 24 hours and determine the mean value and standard deviation. This I will run for 24 hours to get a decent sample.

I am getting 7 - 9 satellites indoors and 14 - 17 satellites outdoors but still getting a similar inaccuracy.

I have been trying to find out whether I can increase the polling of the NEO-6M, but the info sheet I found from Ublox is not very revealing. That Rx pin must be for something.


   
ReplyQuote
(@pugwash)
Sorcerers' Apprentice
Joined: 5 years ago
Posts: 923
Topic starter  

@triform

Hi Scott

I threw this program together to work out the position error (only latitude for the time being).

The program is in metric, but changing to suit people with twelve fingers ?, only needs changing one value and a couple of print() statements.

Try it out and let me know how you get on i.e. what sort of positional accuracy you are getting.

 


   
ReplyQuote
triform
(@triform)
Member
Joined: 5 years ago
Posts: 324
 

@pugwash

I'm a metric American! 🙂 I'll set up a test later today and let it run. Thanks!


   
ReplyQuote
(@pugwash)
Sorcerers' Apprentice
Joined: 5 years ago
Posts: 923
Topic starter  

@triform

Took the setup outside, where I am getting more visible satellites. But it shows no recognisable increased accuracy. But one thing I have noticed is, that there are occasional spurious values, where the "Absolute range" jumps from 0.7m to in excess of 2m.

I am trying to figure out how to filter out these extreme values. 


   
ReplyQuote
triform
(@triform)
Member
Joined: 5 years ago
Posts: 324
 

@pugwash

Here are a few results from a run from my home office @3 meters from the window:

Acquiring initial data...

Mean value: 2.7471 metres

Standard deviation: 0.0019 metres

Absolute deviation: 0.0027 -0.0023

Absolute range: 0.0049

Mean value: 2.7470 metres

Standard deviation: 0.0017 metres

Absolute deviation: 0.0028 -0.0022

Absolute range: 0.0049

Mean value: 2.7471 metres

Standard deviation: 0.0016 metres

Absolute deviation: 0.0026 -0.0023

Absolute range: 0.0049




   
ReplyQuote
(@pugwash)
Sorcerers' Apprentice
Joined: 5 years ago
Posts: 923
Topic starter  

@triform

I see you have taken the first three values. I found that if you leave it recording for half an hour or so, the accuracy will go down, but you have to watch out for spurious values, as I mentioned above.

I just wish I could get further from the building's walls.

+/- 3mm was not what I was expecting. ? 


   
ReplyQuote
triform
(@triform)
Member
Joined: 5 years ago
Posts: 324
 

@pugwash

I'll let it run a bit and then post to a text file.

Note: It's rainy today and my office is on the first floor of my home, and this part of my home is under a very large Sycamore tree. 

Will post back later.


   
ReplyQuote
triform
(@triform)
Member
Joined: 5 years ago
Posts: 324
 

@pugwash

Here is a 15min run.


   
ReplyQuote
(@pugwash)
Sorcerers' Apprentice
Joined: 5 years ago
Posts: 923
Topic starter  

@triform

Scott, thanks for your help and data.

It has been interesting just to find out how much my first assertions were wrong. As your data shows a stabilised value of +/- 125mm under an open sky, that would make navigating a robot around the backyard or even for mowing a large lawn completely viable.

I read somewhere that modern car navigation systems use a combination of both GPS and dead reckoning to increase accuracy, but that is a subject for another day.

What I am looking forward too, is the Galileo system coming online, as it is reported to be more accurate than GPS, we'll see soon!

So I guess the conclusion is that GPS positioning is of no use indoors for robots, and reasonably accurate outdoors.


   
ReplyQuote