An open API service indexing awesome lists of open source software.

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.

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.

![demo](./media/demo.gif)

## 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.