Google Smartphone Decimeter Challenge 2022 codes
A machine learning (ML) based adaptive positioning approach to estimate the positions of the smartphone by utilizing post-processed kinematic (PPK) precise positioning techniques to process the GNSS datasets. The ML model is used to predict the driving paths (highways, tree-lined streets, or downtown areas). Depending on the predicted driving path, the PPK technique computes the user position using different configuration settings.
The PPK technique is adapted from "Getting started with rtklib-py": https://www.kaggle.com/code/timeverett/getting-started-with-rtklib-py
The "GSDC_2022_rtklib_py/data/" folder should have the following subfolders:
- GSDC_2022_rtklib_py/data/test
- GSDC_2022_rtklib_py/data/train
- GSDC_2022_rtklib_py/data/train_test_paths
To get the "train" and "test" folders, download them from https://www.kaggle.com/competitions/smartphone-decimeter-2022/data and place them in the data directory.
get_base_data.py
rnxV2_to_V3.py
Step 2: Convert android phone's raw GNSS files to RINEX V3 and use ML to predict driving path (Highway, Treelined way, or Downtown) of phones then generate the PPK solution files according to the predicted driving paths to take care of multipaths
run_ppk_multi_MLPathPredict.py
-
create_baseline_csv_from_pos.py
-
create_groundtruth_csv.py
- count_clock_errors.py
Step 5: Run “merge_rtk_wls_2fix-hwclock_errors_test.py” to replace PPK solutions with hardware clock discontinuites with the WLS provided by GSDC. This also generates the submission file that can be submited to Kaggle without GNSS/IMU integration.
merge_rtk_wls_2fix-hwclock_errors_test.py
Step 5: use the .cvs solution file from Step 6 in "gnss_imu_fussion_test.py" to implement loosely coupled integration of GNSS/IMU.
gnss_imu_fussion_test.py
- create_gnssIMU_KF.py