Calculating Position from Raw GPS Data (2017)
telesens.co
telesens.co
[1] https://github.com/gnss-sdr/gnss-sdr [2] https://github.com/perrysou/GNSS_SDR [3] http://gfix.dk/matlab-gnss-sdr-book/
I don't even need real-time. I'm fine with sampling/recording the data for the required duration and then running a lengthy (e.g. half an hour) calculation process on it, as long as I get centimeter-precision position data in the end.
These integrated centimeter precision dual-band RTK GNSS modules are unfortunately still terribly expensive (for lack of competition), so it would really be great if this was possible with a <= 250 dollar SDR solution (especially given that SDR hardware can be used for lots of other stuff as well instead of being a one-trick pony like a GNSS module).
Nowadays, with dual-band modules, it's no longer necessary nor advantageous to use an external RTKLIB, as the sufficiently precise dual band modules all have RTK integrated i.e. you don't even get decent dual-band GNSS receivers that output raw data but don't have integrated RTK like in ublox M8 times, so there's nothing to be saved by using RTKLIB with available dual-band GNSS modules. And it's not practicable to do dual-band with two single-band modules because you wouldn't get their time references synchronized to a sufficient level for dual-band RTK iirc.
The problem is that the dual-band modules (F9 and such) are - for lack of competition and at least for now and the foreseeable future - waaay overpriced, especially since you need two of them (rover + base) to reach centimeter precision… hence the question about the possibility of doing it with a SDR instead.
https://gpsd.gitlab.io/gpsd/index.html
Development primarily lead by Eric Raymond:
It doesn't do much beyond multiplexing/marshalling. The actual calculations are done in the receiver.
Actually taking the raw waveforms from the ADCs and turning them into a (position, velocity, time) solution is an entirely different task.
I'd be remiss if I didn't mention RTKLIB, which is an open-source package to do the PVT solving, using a whole bunch of different algorithms. It ALSO happens to include a bunch of plumbing to stick the pieces together, and thus in some ways overlaps functions of gpsd, but its primary function is actually solving the navigation equations.
Such as the process of calculating position using the pseudorange and the almanac data. I would of never thought of this lol. It also discusses the importance of correcting for errors in the GPS measurements, such as atmospheric delays and satellite clock errors. (totally makes sense right!) The emphasis of the need for careful processing of raw GPS data to ensure accurate and reliable positioning, it makes sense:)
Differential GPS usually implies a fixed base station and a fixed receiver.
RTK implies the receiver can be in motion. It was central to Trimble products.
https://insidegnss.com/generating-carrier-phase-measurements...
https://www.gpsworld.com/innovation-carrier-phase-rf-ranging...
https://www.vectornav.com/resources/inertial-navigation-prim...