https://github.com/mit-acl/meridian
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.
https://github.com/mit-acl/meridian
Last synced: 2 days ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/mit-acl/meridian
- Owner: mit-acl
- License: bsd-3-clause
- Created: 2026-06-09T02:28:39.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-07-17T21:59:21.000Z (7 days ago)
- Last Synced: 2026-07-17T23:23:33.672Z (7 days ago)
- Language: Python
- Size: 4.54 MB
- Stars: 16
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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.

## Citation
If you find this repo useful in your work, please cite our [paper](https://arxiv.org/pdf/2606.06312):
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=/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
```
**Running Pipeline**
Next, set an environment variable pointing to Meridian weights and demo data:
```
export MERIDIAN_WEIGHTS=/weights
export MERIDIAN_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.