Skip to content

mit-acl/meridian

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

322 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Meridian: Metric-Semantic Primitive Matching for Cross-View Geo-Localization Beyond Urban Environments

Meridian is an algorithm for localizing a ground robot from aerial ortho-imagery, providing meter-level pose estimates without any initial pose information or environmental fine-tuning. To do this, sparse point and line primitives are matched across aerial and ground views, and robust pose graph optimization is employed to find a set of consistent pose measurements over time.

Currently, meridian exists as a stand-alone Python package (with heavy computation implemented in C++ or using GPU via PyTorch). A ROS2 wrapper is coming soon!

This repo contains instructions for running the Meridian pipeline on our self-collected datasets. For now, we have a small sampler for use as a demo, but our full cross-view geo-localization "Camp Dataset" will be released soon.

demo

Citation

If you find this repo useful in your work, please cite our paper:

M. Peterson, Q. Li, Y. Jia, F. Cladera, C. Nieto-Granda, C.J. Taylor, and J.P. How, "Meridian: Metric-Semantic Primitive Matching for Cross-View Geo-Localization Beyond Urban Environments," arXiv preprint arXiv:2606.06312, 2026.

@inproceedings{peterson2025roman,
  title={Meridian: Metric-Semantic Primitive Matching for Cross-View Geo-Localization Beyond Urban Environments},
  author={Peterson, Mason and Qingyuan, Li and Jia, Yixuan and Cladera, Fernando and Nieto-Granda, Carlos and Taylor, Camillo Jose and How, Jonathan P},
  journal={arXiv preprint arXiv:2606.06312},
  year={2026}
}

Install

We recommend using this repo with a Python virtual environment. This software has been tested with Python 3.12 on Ubuntu 24.04.

To install, clone and cd into this repo, activate your environment, and run

source ./install/install.sh

After installation, set the following environment variable in your bashrc or zshrc:

export MERIDIAN_WEIGHTS=<path to meridian repo>/weights

Pipeline Demo

Once installed, the full pipeline can be run on our experimental data.

Data Set Up

To make this as easy as possible, we host an aerial image and a minimal ROS bag for use in running our pipeline.

To download the data run (will download ~8 GB):

source ./install/download_demo_data.sh <desired output directory>

Running Pipeline

Next, set an environment variable pointing to Meridian weights and demo data:

export MERIDIAN_WEIGHTS=<path to this repo>/weights
export MERIDIAN_DEMO_DATA=<path to demo data>

Then, the meridian demo can be run with (from the root of the meridian repo)

python3 -m meridian.pipeline.cross_view_incremental \
  --aerial $MERIDIAN_DEMO_DATA/aerial_primitive_map \
  -p ./cfg/demo.yaml \
  -o ./demo_output/ \
  -m --live

The -m and --live commands can be removed to run the demo without the visulization which greatly reduces the run-time.

Acknowledgements

This research is supported by ARL DCIST under Cooperative Agreement Number W911NF-17-2-0181 and DSTA.

Portions of this software were written using Claude Code.

About

Meridian is package for localizing a ground robot from aerial ortho-imagery, providing meter-level pose estimates without any initial pose information or environmental fine-tuning.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors