Set up a precise GPS system for GIS application

Hi everybody,

I’m setting up a precise GPS system that can achieve centimeter-accuracy for my GIS (Geographic Information System - a system contains GPS positions of objects (trees, signposts, …)).

I have searched many GPS equipment providers, but I stop here with Navio Board. So, can anyone help me to build up a suitable system?

Requirements: our system is mounted on the top of a car running on roads, receiving GPS location of the car. I will use those results to create a trajectory on map (i’m using google map). So I need a GPS system that should:

  • achieve centimeter-accuracy
  • position update rate at least 5 Hz
  • stable at speed upto 50 km/h
  • last at least 1.5 hours

I dont need real-time tracking of position, so I can use post processing to get better results.

Therefore, I list here all what I think I must have:

  • 2 Navio Raw Board: one acts as base station, the other acts as rover.
  • 2 Antennas, @Igor recommended me to use
  • 2 Raspberry Pi model B+, of course, I need them to mount Navio boards

Does anyone have an idea for this system? Welcome all of you to discuss how to set up the system: hardware and software, and configurations.


1 Like

If I understand correctly, you don’t need real-time results, then it would be better to use post-processing as it is more accurate.

Rover setup:

  1. Install antenna on top of your car. We prefer antennas from Tallysman and there’s a good choice for a weatherproof antenna with magnetic mount that would attach to the top of your car easily - TW2400. If you’d like something more affordable then TW1421 would be great.
  2. Install Raspberry Pi + Navio somewhere in your car and connect antenna to a Navio. You would probably need an SMA-UFL or MCX-UFL adapter depending on what connector your antenna has. I’d recommend to use a piece of tape to properly fix it as these adapters aren’t that strong usually.

Base setup:

  1. Install antenna in a place with good skyview - top of the building would be great. Same antenna as for the rover would be okay. But geodesists prefer to use antennas with choke rings and snow cones for base stations.
  2. Install Raspberry Pi + Navio somewhere where the cable could reach and connect antenna.

The process:

  1. Run RTKRCV on a base in a single mode as it’s described in the RTK tutorial. In config file specify the following options: logstr1-type=file and logstr1-path= (use a file path on your sd card or flash drive). Then start RTKRCV.
  2. Do the same for the rover RPi+Navio.
  3. After you finished the track stop rtkrcv on rover, then on a base.
  4. Copy the log files from both rover and base to your PC.
  5. On Windows run RTKCONV, pick the rover log file, choose ‘ubx’ format and convert it to RINEX.
  6. Repeat previous step for the base log file.
  7. Run RTKPOST. Pick rover file, pick base file, pick nav file (nav file from any log would do). In options specify kinematic mode, specify to use broadcast ephemeris, specify base antenna coordinates (if known) or choose “average”.
  8. Now run processing, wait till it finishes and then press plot to view your post-processed track.

RTKLIB is a huge software suite with lots of options, so it’s very hard to describe all possible variations. To understand RTKLIB better I recommend to read the RTKLIB manual.

1 Like

Thank @Mikhail for your informative instructions. I’m planning to order navio raw boards ASAP.

One more thing I’m considering is what kind of battery I should use. Is a battery of 5V - 1.5A (current peak) can provide enough power for a Pi with a Navio board on it? I’m planing to use a battery of 10400 mAh.

Navio will consume less than 100mA, so 1.5A should be enough to power both Raspberry Pi and Navio

If you’re going to use it in a regular car, then you could use a car USB adapter to provide power to the RPi+Navio and not worry about the battery.

Thank @Igor and @Mikhail.
I’ll email you to get more information about ordering Navio boards.
Have a nice weekend!

Hi Igor and Mikhail,

I have one more question here. The velocity of my car may have an affect on post-processing results. Have you evaluated this?
Using post-processing, we have no limitation of distance between the base and the rover, don’t we?

Unfortunately, baseline limitation for L1-only systems is applicable both to RTK and post-processing. Different sources specify different baseline lengths acceptable for L1: some say it’s 10km, some say it’s 20km and even 30km.

Hi Mikhail, i did exactly 8 steps that you mentioned above but the result is very, very bad. The accuracy is up to kilometers. If you can make a more clearly tutorial that show me how to use rtkpost with 2 navio raws, that would be great :smiley:

Otter, could you please describe your setup?

I used 2 Navio raw boards. The distance between them is 3m. One raw board is fixed and used as a base, the other is the rover moving in 1m. Both of them are configured as Single Mode to export to log files. Here’s 2 log files of them and the configure file that I used to run rtkpost.exe. It also included .pos files after post processing.

Plot file

Could you show me what’s wrong with this configuration? Did I process correct steps?

Thank you so much.

Otter, I’ve checked the files and here are a few notes:

  1. Base station position (Options -> Positions -> Base station) is specified incorrectly, it’s set as 90, 0, -63333. If base position is not known it should be set as “Average”.
  2. Did you intentionally set “Fix and hold” for integer ambiguity resolution (Options -> Setting2)? The default should be “Continuous”.
  3. Observations don’t look so good, signal loss is too frequent. What antennas are you using? How were they located?


I just set up both base and rover to run at Single mode and done postprocessing. But the result is so bad. Here is my conf files and ublox logged file. base_rover_single_for_postprocessing.

Can you give me some advise about my case? If possible, please give me your .conf file and your example logged file that you used for postprocessing or realtime RTK. I am using TW2010 antenna. 10-11 satellites had been seen with 5-7 satellites being valid.

I’ll the check your files soon.
My first guess is that the antenna is in noisy environment or something is wrong with ephemeris.
Check that you have correct ephemeris - option “broadcast” for ephemeris and rxm-sfrb should be logged.
Or you could try with “precise” ephemeris downloaded from the internet.

I would recommend Tallysman’s TW2410 over the TW2010. The TW2010 uses a single feed patch whereas the TW2410 uses a dual feed patch. THe TW2410 will have a much tighter Phase Centre Variation than the TW2010, a lower axial ratio, and much better phase linearity.

1 Like

precise ephemeris is any .sp3 file downloaded from internet while broadcast just comes from the reach device when you are using it? Am I understanding it correctly?

@bakalolo basically, yes. Keep in mind that sp3 file has to cover the date&time of the log.