Table of Contents
Fetching ...

Open-Source Factor Graph Optimization Package for GNSS: Examples and Applications

Taro Suzuki

TL;DR

The paper addresses the challenge of applying factor graph optimization (FGO) to GNSS in urban environments by introducing gtsam_gnss, a simple open-source package that separates GNSS observation preprocessing from the optimization core and provides general-purpose GNSS factors. Built on the GTSAM backend with MATLAB wrappers and MatRTKLIB integration, it supports multiple factors (pseudorange, Doppler, TDCP, carrier-phase) and estimation states (position, velocity, clock, clock drift, ambiguity) to enable robust, flexible GNSS state estimation. The authors demonstrate three use cases—multipath-robust positioning, carrier-phase ambiguity resolution, and smartphone GNSS/IMU fusion—showing improved accuracy in challenging environments and decimeter-level results in SDC scenarios. This work advances reproducibility and accessibility for FGO-based GNSS research by offering a modular, extensible toolkit suitable for education, prototyping, and research integration.

Abstract

State estimation methods using factor graph optimization (FGO) have garnered significant attention in global navigation satellite system (GNSS) research. FGO exhibits superior estimation accuracy compared with traditional state estimation methods that rely on least-squares or Kalman filters. However, only a few FGO libraries are specialized for GNSS observations. This paper introduces an open-source GNSS FGO package named gtsam\_gnss, which has a simple structure and can be easily applied to GNSS research and development. This package separates the preprocessing of GNSS observations from factor optimization. Moreover, it describes the error function of the GNSS factor in a straightforward manner, allowing for general-purpose inputs. This design facilitates the transition from ordinary least-squares-based positioning to FGO and supports user-specific GNSS research. In addition, gtsam\_gnss includes analytical examples involving various factors using GNSS data in real urban environments. This paper presents three application examples: the use of a robust error model, estimation of integer ambiguity in the carrier phase, and combination of GNSS and inertial measurements from smartphones. The proposed framework demonstrates excellent state estimation performance across all use cases.

Open-Source Factor Graph Optimization Package for GNSS: Examples and Applications

TL;DR

The paper addresses the challenge of applying factor graph optimization (FGO) to GNSS in urban environments by introducing gtsam_gnss, a simple open-source package that separates GNSS observation preprocessing from the optimization core and provides general-purpose GNSS factors. Built on the GTSAM backend with MATLAB wrappers and MatRTKLIB integration, it supports multiple factors (pseudorange, Doppler, TDCP, carrier-phase) and estimation states (position, velocity, clock, clock drift, ambiguity) to enable robust, flexible GNSS state estimation. The authors demonstrate three use cases—multipath-robust positioning, carrier-phase ambiguity resolution, and smartphone GNSS/IMU fusion—showing improved accuracy in challenging environments and decimeter-level results in SDC scenarios. This work advances reproducibility and accessibility for FGO-based GNSS research by offering a modular, extensible toolkit suitable for education, prototyping, and research integration.

Abstract

State estimation methods using factor graph optimization (FGO) have garnered significant attention in global navigation satellite system (GNSS) research. FGO exhibits superior estimation accuracy compared with traditional state estimation methods that rely on least-squares or Kalman filters. However, only a few FGO libraries are specialized for GNSS observations. This paper introduces an open-source GNSS FGO package named gtsam\_gnss, which has a simple structure and can be easily applied to GNSS research and development. This package separates the preprocessing of GNSS observations from factor optimization. Moreover, it describes the error function of the GNSS factor in a straightforward manner, allowing for general-purpose inputs. This design facilitates the transition from ordinary least-squares-based positioning to FGO and supports user-specific GNSS research. In addition, gtsam\_gnss includes analytical examples involving various factors using GNSS data in real urban environments. This paper presents three application examples: the use of a robust error model, estimation of integer ambiguity in the carrier phase, and combination of GNSS and inertial measurements from smartphones. The proposed framework demonstrates excellent state estimation performance across all use cases.

Paper Structure

This paper contains 15 sections, 11 equations, 9 figures, 1 table.

Figures (9)

  • Figure 1: Software structure of gtsam_gnss. gtsam_gnss provides GNSS observation factors written in C++ and their MATLAB wrappers. Additionally, it includes datasets and analytical examples and can be implemented with the GTSAM optimization library and MatRTKLIB GNSS processing library.
  • Figure 2: Graph structure for Example 1. The GNSS pseudorange factor and clock factor, which suppress fluctuations in the receiver clock, are used to estimate the 3D position and receiver clock.
  • Figure 3: Top: Position estimation results without (blue) and with (red) the robust error model. Bottom: 3D position estimation error for each method. Large position estimation errors occur in areas surrounded by buildings. However, using the robust error model helps enhance the position estimation accuracy.
  • Figure 4: Cumulative distribution of 3D position error. Using a robust error model (red) improves the position estimation accuracy.
  • Figure 5: Two graph structures for Example 2. Model 1 estimates the 3D position and DD ambiguity using DD pseudorange and DD carrier-phase factor. Model 2 extends Model 1 by adding velocity estimation using the Doppler factor.
  • ...and 4 more figures