{"id":51831032,"url":"https://github.com/mit-acl/meridian","last_synced_at":"2026-07-22T15:03:31.763Z","repository":{"id":370337235,"uuid":"1263498053","full_name":"mit-acl/meridian","owner":"mit-acl","description":"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.","archived":false,"fork":false,"pushed_at":"2026-07-17T21:59:21.000Z","size":4759,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-17T23:23:33.672Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mit-acl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-09T02:28:39.000Z","updated_at":"2026-07-16T12:10:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mit-acl/meridian","commit_stats":null,"previous_names":["mit-acl/meridian"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mit-acl/meridian","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-acl%2Fmeridian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-acl%2Fmeridian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-acl%2Fmeridian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-acl%2Fmeridian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mit-acl","download_url":"https://codeload.github.com/mit-acl/meridian/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-acl%2Fmeridian/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35766436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-22T02:00:06.236Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-22T15:03:30.575Z","updated_at":"2026-07-22T15:03:31.756Z","avatar_url":"https://github.com/mit-acl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Meridian: Metric-Semantic Primitive Matching for Cross-View Geo-Localization Beyond Urban Environments\n\nMeridian 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.\nTo 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.\n\nCurrently, `meridian` exists as a stand-alone Python package (with heavy computation implemented in C++ or using GPU via PyTorch). \nA ROS2 wrapper is coming soon!\n\nThis repo contains instructions for running the Meridian pipeline on our self-collected datasets.\nFor now, we have a small sampler for use as a demo, but our full cross-view geo-localization \"Camp Dataset\" will be released soon.\n\n![demo](./media/demo.gif)\n\n## Citation\n\n\nIf you find this repo useful in your work, please cite our [paper](https://arxiv.org/pdf/2606.06312):\n\nM. 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.\n\n```\n@inproceedings{peterson2025roman,\n  title={Meridian: Metric-Semantic Primitive Matching for Cross-View Geo-Localization Beyond Urban Environments},\n  author={Peterson, Mason and Qingyuan, Li and Jia, Yixuan and Cladera, Fernando and Nieto-Granda, Carlos and Taylor, Camillo Jose and How, Jonathan P},\n  journal={arXiv preprint arXiv:2606.06312},\n  year={2026}\n}\n```\n\n## Install\n\nWe recommend using this repo with a Python virtual environment. This software has been tested with Python 3.12 on Ubuntu 24.04.\n\nTo install, clone and `cd` into this repo, activate your environment, and run\n\n```\nsource ./install/install.sh\n```\n\nAfter installation, set the following environment variable in your `bashrc` or `zshrc`:\n\n```\nexport MERIDIAN_WEIGHTS=\u003cpath to meridian repo\u003e/weights\n```\n\n\u003c!-- Clone this repo and `pip install .`\n\nAdditionally follow the instructions for installing AnyLoc [here](git@github.com:AnyLoc/AnyLoc.git). --\u003e\n\n\u003c!-- For use beyond the vanilla install, check out the [optional set up steps](#optional-set-up) --\u003e\n\n## Pipeline Demo\n\nOnce installed, the full pipeline can be run on our experimental data.\n\n**Data Set Up**\n\nTo make this as easy as possible, we host an aerial image and a minimal ROS bag for use in running our pipeline.\n\nTo download the data run (will download ~8 GB):\n\n```\nsource ./install/download_demo_data.sh \u003cdesired output directory\u003e\n```\n\n**Running Pipeline**\n\nNext, set an environment variable pointing to Meridian weights and demo data:\n\n```\nexport MERIDIAN_WEIGHTS=\u003cpath to this repo\u003e/weights\nexport MERIDIAN_DEMO_DATA=\u003cpath to demo data\u003e\n```\n\nThen, the meridian demo can be run with (from the root of the `meridian` repo)\n\n```\npython3 -m meridian.pipeline.cross_view_incremental \\\n  --aerial $MERIDIAN_DEMO_DATA/aerial_primitive_map \\\n  -p ./cfg/demo.yaml \\\n  -o ./demo_output/ \\\n  -m --live\n```\n\nThe `-m` and `--live` commands can be removed to run the demo without the visulization which greatly reduces the run-time.\n\n\u003c!-- Code is provided for running Meridian on KITTI data. \nTo do so, download [KITTI odometry](https://www.cvlibs.net/datasets/kitti/eval_odometry.php) processed data (for images and lidar scans) and raw data (for ground truth).\nConvert the processed data to a ROS2 bag using [kitti2mcap](./third_party/kitti2mcap).\nAdditionally, install [KISS-ICP](https://github.com/prbonn/kiss-icp) and run KISS-ICP on the processed data bag to get odometry measurements.\nFinally, download KITTI aerial overhead from [Vexcel](https://www.vexcel-imaging.com/).\n\nThen, set the following environment variables:\n\n```\nexport KITTI=\u003cpath to data\u003e\nexport KITTI_SEQ=00 # or other sequence\nexport KITTI_AERIAL_IMG=\u003cpath to aerial image\u003e\n```\n\nTo run:\n\n```\npython3 -m meridian.pipeline.cross_view_incremental -p \u003cpath to this repo\u003e/cfg/kitti.yaml -r \u003csequence num\u003e -o \u003coutput directory\u003e\n```\n\n`-m` can be added to create the output visualization. --\u003e\n\n\u003c!-- ## Optional Set Up --\u003e\n\n\u003c!-- **AnyLoc**\n\nTypically, we use AnyLoc for initial place recognition.\nTo make our code easily accessible, the minimal demo uses a DINO-based place recognition that is much faster and doesn't require any additional installations.\nHowever, the simple DINO-based place recognition struggles when aerial maps are large.\nTo set up Meridian with the more performant AnyLoc place recognition, clone AnyLoc and   --\u003e\n\n## Acknowledgements\nThis research is supported by ARL DCIST under Cooperative Agreement Number W911NF-17-2-0181 and DSTA.\n\nPortions of this software were written using Claude Code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmit-acl%2Fmeridian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmit-acl%2Fmeridian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmit-acl%2Fmeridian/lists"}