This repository contains the code for the Ground Penetrating Radar (GPR) relative localization network proposed in "MarsLGPR: Mars Rover Localization with Ground Penetrating Radar" (paper link: https://arxiv.org/pdf/2503.04944).
The dataset can be downloaded from DeepBlue (https://deepblue.lib.umich.edu/data/concern/data_sets/gb19f711q?locale=en).
- Run
utils/process_bags.pyto retrieve wheel odom, GPS, GPR, and IMU data from the bags and save to separate CSVs. - Run
utils/postprocess_with_rtabmap_gt.pyto interpolate the GPS and wheel odom data to match the GPR timestamps.
Training parameters:
dataset = 'MDRS'
batch_size = 128
num_epochs = 50
loss = "MSE"
learning_rate = 5e-3
end_learning_rate = 1e-5
raw_dim = 200 # size of feature embedding in the transformer
embedding_dim = 256 # size of feature embedding in the transformer
num_heads = 4 # number of attention heads, higher is more complex
num_layers = 6 # number of transformer encoder layers
mlp_ratio = 3.0 # multiplier for the hidden layer size of the feedforward (MLP) as compared to the embedding dimension (MLP hidden layer size = mlp_ratio * emb_dim)
use_dualSP = True
regressor_hidden = 128 # hidden layers in regressor
dropout = 0.1
positional_embedding = 'learnable' # method of adding spatial information to the sequence, options are 'sine' or 'learnable' or 'none'
token_batch_size = 10
gpr_signal_filtering = True
Create a conda environment using the environment.yaml file. Then simply run the train.py script.
If you find this code, dataset, or paper useful, please cite our work:
@article{sheppard2025marslgpr,
title={MarsLGPR: Mars Rover Localization with Ground Penetrating Radar},
author={Sheppard, Anja and Skinner, Katherine A},
journal={IEEE Transactions on Field Robotics},
volume={2},
pages={906--919},
doi={10.1109/TFR.2025.3628826},
year={2025},
publisher={IEEE}
}
All code was tested on Ubuntu 20.04. If you have any problems, feel free to open an issue!