goGPS open source positioning software

goGPS: free and open source positioning software for precise positioning.

goGPS home page

goGPS is a free and open source positioning software package written in MATLAB that processes single-frequency observations in either absolute or relative mode, using both code and phase observations by geodetic or low-cost receivers. goGPS can compute single-epoch solutions by weighted least squares adjustment or multi-epoch solutions based on a Kalman filter on either positions or observations, in post-processing or real-time. The positioning is optionally supported by route constraints (e.g. a railway). Moreover, it is possible to constrain the height to the values taken from digital terrain model, according to their standard deviation.

goGPS development started in 2007 at the Geomatics Laboratory of Politecnico di Milano, Como campus (Italy), and goGPS MATLAB code was first published as open source software in August 2009. Since then the software has evolved steadily, improving stability and performance. A Java version of goGPS was developed in 2010 in order to provide a positioning library in a programming language more suitable for web service implementations (Realini et al 2012), and to widen the user base as well.

The goGPS software is capable to process single-frequency code and carrier phase observations by single-epoch Least-Squares Adjustment (LSA) or using an Extended Kalman Filter (EKF) for multi-epoch based solutions. The EKF is designed to be able to run either in post-processing or real-time. Observations can be processed in absolute (stand-alone) or relative (double differences) mode. goGPS weighs observations by either standard methods (e.g. based on satellite elevation) or specifically developed weight functions, tailored on the signal-to-noise ratio characteristics of low-cost GPS receivers. The goGPS EKF is modular, in such a way that optional external sources of data, such as pseudo-observations extracted from digital terrain models can be enabled and disabled seamlessly (Realini and Reguzzoni 2013).

Observations are input by standard RINEX files for post-processing, and by decoding receiver-specific binary data or RTCM 3.1 data streams for real-time processing. goGPS is able to receive and decode binary data from one to four low-cost receivers connected to USB (COM) ports at the same time in data logging mode; it can also receive, decode and process observations for real-time relative positioning mode by synchronizing observations of a low-cost receiver with those from a reference station. The reference station observations are received through the Internet by establishing a connection via the NTRIP protocol. Various events such as satellite additions/losses, change of the reference satellite used for the double differences, and cycle-slips are managed both in post-processing and real-time modes. A graphical user interface is provided only with the MATLAB version. goGPS can decode observations from receivers based on the following low-cost modules: u-blox LEA-4T/5T/6T, SkyTraq S1315F-RAW, Fastrax IT03, NVS NV08C-CSM. L1 observations from geodetic receivers can be used as well, if they are provided as RINEX files (or RTCM streams through NTRIP for base stations).


List of publications:

  • Realini, E., & Reguzzoni, M. (2013). goGPS: open source software for enhancing the accuracy of low-cost receivers by single-frequency relative kinematic positioning. Measurement Science & Technology (link).
  • Realini, E., Yoshida, D., Reguzzoni, M., & Raghavan, V. (2012). Enhanced satellite positioning as a web service with goGPS open source software. Applied Geomatics (link).
  • Realini, E. (2009). goGPS free and constrained relative kinematic positioning with low cost receivers. PhD thesis, Politecnico di Milano, Italy (link).

The full list of articles, presentations and posters about goGPS is available here.