Skip to content

taroz/gsdc2023

Repository files navigation

Update

  • Sep 24, 2024: First public version, using GTSAM 4.0.3 in Ubuntu 20.04, pre-built binary gtsam_gnss distributed.
  • Nov 30, 2024: Upgraded to GTSAM 4.3a in Ubuntu 22.04, gtsam_gnss was released in a separate repository, and Windows environment support added.

Overview

  • This repository provides the source code to reproduce the results of the Google Smartphone Decimeter Challenge 2023 on Kaggle
  • Decimeter accurate position estimation was achieved using smartphone GNSS and IMU
    • Public score: 0.789 m (1st)
    • Private score: 0.928 m (2nd)
  • Factor Graph Optimization of GNSS and IMU for Smartphones
  • For details of the method, please refer to the following papers, presentations, and source code

Paper/Presentation

Taro Suzuki, "An Open-Source Factor Graph Optimization Package for GNSS and IMU Integration in Smartphones," in Proceedings of the 37th International Technical Meeting of the Satellite Division of The Institute of Navigation (ION GNSS+ 2024), 2024.

Test environments

  • Ubuntu 22.04 / Windows 11
  • MATLAB R2024a
    • (Optional) Parallel Computing Toolbox

Requirements

  • GTSAM: Factor graph optimization library. Due to a problem with the MATLAB wrapper, please clone GTSAM from my repository instead of the original GTSAM and build it using the following procedure. For Windows, please refer to this build procedure.
sudo apt-get install -y git build-essential cmake libboost-all-dev libtbb-dev python3-pip
pip install pyparsing
git clone https://github.com/taroz/gtsam-4.3a.git
cd gtsam-4.3a
mkdir build && cd build
cmake .. -DGTSAM_BUILD_UNSTABLE=OFF -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DGTSAM_BUILD_TESTS=OFF -DGTSAM_INSTALL_MATLAB_TOOLBOX=ON
make -j$(nproc)
sudo make install
  • gtsam-gnss: A small set of custom factors and MATLAB wrappers that use GTSAM for GNSS processing. For Windows, please refer to this build procedure.
git clone https://github.com/taroz/gtsam_gnss.git
cd gtsam_gnss
mkdir build && cd build
cmake ..
make
sudo make install
sudo ldconfig
git clone https://github.com/taroz/MatRTKLIB.git

Add the MatRTKLIB installation directory to the MATLAB search path.

git clone https://github.com/JAAdrian/MatlabProgressBar.git

Add the MatlabProgressBar installation directory to the MATLAB search path.

How to run

  1. Build and install all of the above dependent packages.
  2. Clone this repository.
git clone https://github.com/taroz/gsdc2023.git
  1. Download the pre-processed GSDC2023 data set (2.7GB).
cd gsdc2023
wget http://www.taroz.net/data/dataset_2023.zip
unzip dataset_2023.zip
  1. In the case of Linux, due to the linker issue shown here, you need to run the following shell line before starting MATLAB from the same shell.
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6
matlab
  1. Before running MATLAB script, please check that the following two paths have been added to the MATLAB search path.
/path/to/MatRTKLIB
/path/to/MatlabProgressBar
  1. Run run_fgo.m in MATLAB.
  2. The submission file for Kaggle is generated in results directory. If you have Kaggle account, let's submit the estimation result to the Google Smartphone Decimeter Challenge 2023 and evaluate the accuracy. You should get the following results.

Citation

  • Google Smartphone Decimeter Challenge 2023
Taro Suzuki, "An Open-Source Factor Graph Optimization Package for GNSS and IMU Integration in Smartphones," in Proceedings of the 37th International Technical Meeting of the Satellite Division of The Institute of Navigation (ION GNSS+ 2024), 2024.
  • Google Smartphone Decimeter Challenge 2022
Taro Suzuki, "Precise Position Estimation Using Smartphone Raw GNSS Data Based on Two-Step Optimization," Sensors 23, no. 3: 1205, 2023. doi.org/10.3390/s23031205
Taro Suzuki, "Open-Source Factor Graph Optimization Package for GNSS: Examples and Applications," 2025 IEEE/ION Position, Location and Navigation Symposium (PLANS), (accepted)
Under review