There's a lot to consider regarding GNSS accuracy.
Good antennas is one point (make sure it fits your GNSS chipset capabilities!), but accuracy highly depends on what and how the GNSS fix is calculated, and how many GNSS constellations (GPS, GLONASS, GALILEO, BEIDOU, ...) and which GNSS bands (L1, L2, L5, ...) the receiver supports (which determines the number of satellites and frequencies available for calculating a decent solution).
Basically, there are three variants:
-
Code solution. This is the standard solution you'll get from your OTS GPS, mostly delivered in NMEA-0183 format, that gives you an accuracy (RMS of position error) of around 2,5m 1-sigma in 2D (roughly 2m CEP).
-
Precise Point Positioning (PPP) solution: In that case the GNSS receiver needs to deliver raw satellite measurements, which are fed into a software (like
RTKLIB) that computes a PPP solution with the help of (public or commercial) correction data (e.g. from IGS). Correction data can be made available pre-flight, online, or during post-processing. Accuracies of approx. 30cm 1-sigma 2D are feasible.
-
Real-Time Kinematics (RTK) solution: In this scenario a (fixed) base station is provided in a "nearby" location, that delivers correction data in real time to the rover. Both the base station and rover GNSS chipsets need to be able to provide raw satellite measurements, and again with the help of suitable software (RTKLIB) a so-called carrier phase solution fix can be calculated, with accuracies down to 3cm 1-sgima 2D. The drawback is you need a permanent connection to the base station.
You'll find more information about GNSS constellations, bands, and solutions, at
Navipedia. You can download a port of RTKLIB for the Raspberry PI at
https://drfasching.com/downloads#rtklib.
The
RasPiGNSS "Aldebaran" based on the NV08C-CSM which has been around for many years now can do all that, albeit only on the L1 frequency. However we'll shortly release two improved successors, the RasPiGNSS "Betelgeuse" (based on the uBlox ZED-F9P, supporting the L1/L2/E5b GNSS bands), and the RasPiGNSS "Copernicus" (based on the uBlox NEO-M8T), that support more GNSS constellations and bands (watch
http://raspignss.tech for announcements).
