{"id":38665893,"url":"https://github.com/contagon/evalio","last_synced_at":"2026-01-17T09:47:51.302Z","repository":{"id":281703092,"uuid":"862417271","full_name":"contagon/evalio","owner":"contagon","description":"Evaluate Lidar-Inertial Odometry","archived":false,"fork":false,"pushed_at":"2025-11-12T22:19:22.000Z","size":20835,"stargazers_count":39,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-12T23:29:07.250Z","etag":null,"topics":["lidar","odometry","robotics"],"latest_commit_sha":null,"homepage":"https://contagon.github.io/evalio/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/contagon.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.bib","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":"2024-09-24T15:05:22.000Z","updated_at":"2025-11-12T22:13:49.000Z","dependencies_parsed_at":"2025-03-25T01:21:14.566Z","dependency_job_id":"ce45e25f-bc5a-4df6-b0e6-ebfbe396f1bc","html_url":"https://github.com/contagon/evalio","commit_stats":null,"previous_names":["contagon/evalio"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/contagon/evalio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contagon%2Fevalio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contagon%2Fevalio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contagon%2Fevalio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contagon%2Fevalio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/contagon","download_url":"https://codeload.github.com/contagon/evalio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contagon%2Fevalio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28505565,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["lidar","odometry","robotics"],"created_at":"2026-01-17T09:47:51.172Z","updated_at":"2026-01-17T09:47:51.267Z","avatar_url":"https://github.com/contagon.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## evalio\n\nevalio is a tool for **Eval**uating **L**idar-**I**nertial **O**dometry.\n\nSpecifically, it provides a common interface for connecting LIO datasets and LIO pipelines. This allows for easy addition of new datasets and pipelines, as well as a common location to evaluate them making benchmarks significantly easier to run. It features,\n- No ROS dependency! (though it can still load rosbag datasets using the wonderful [rosbags](https://ternaris.gitlab.io/rosbags/) package)\n- Easy to add new datasets and pipelines, see the [example](https://github.com/contagon/evalio-example)\n- Unified representation of lidar scan, e.g. row (scan-line) major order, stamped at the start of the scan, point stamps are relative from the start of the scan.\n- Download and manage datasets via the CLI interface\n- Simple to use API for friction-free access to data\n- Run pipelines via the CLI interface and yaml config files\n- Compute statistics for resulting trajectory runs\n\n## Installation\n\nevalio is available on PyPi (with all pipelines compiled in!), so simply install via your favorite python package manager,\n```bash\nuv add evalio      # uv\npip install evalio # pip\n```\n\n## Basic Usage\n\nevalio can be used both as a python library and as a CLI for both datasets and pipelines. We cover just the tip of the iceberg here, so please check out the [docs](https://contagon.github.io/evalio/) for more information.\n\n### Datasets\n\nOnce evalio is installed, datasets can be listed and downloaded via the CLI interface. For example, to list all datasets and then download a sequence from the hilti-2022 dataset,\n```bash\nevalio ls datasets\nevalio download hilti_2022/basement_2\n```\n\nOnce downloaded, a trajectory can then be easily used in python,\n```python\nfrom evalio import datasets as ds\n\n# for all data\nfor mm in ds.Hilti2022.basement_2:\n    print(mm)\n\n# for lidars\nfor scan in ds.Hilti2022.basement_2.lidar():\n    print(scan)\n\n# for imu\nfor imu in ds.Hilti2022.basement_2.imu():\n    print(imu)\n```\n\n### Pipelines\n\nThe other half of evalio is the pipelines that can be run on various datasets. All pipelines and their parameters can be shown via,\n```bash\nevalio ls pipelines\n```\nFor example, to run KissICP on a dataset,\n```bash\nevalio run -o results -d hilti_2022/basement_2 -p kiss\n```\nThis will run the pipeline on the dataset and save the results to the `results` folder. The results can then be used to compute statistics on the trajectory,\n```bash\nevalio stats results\n```\n\nMore complex experiments can be run, including varying pipeline parameters, via specifying a config file,\n```yaml\noutput_dir: ./results/\n\ndatasets:\n  # Run on all of hilti trajectories\n  - hilti_2022/*\n  # Run on first 1000 scans of multi campus\n  - name: multi_campus/ntu_day_01\n    length: 1000\n\npipelines:\n  # Run vanilla kiss with default parameters\n  - kiss\n  # Tweak kiss parameters\n  - name: kiss_tweaked\n    pipeline: kiss\n    deskew: true\n    # Sweep over voxel size parameter\n    sweep:\n      voxel_size: [0.1, 0.5, 1.0]\n      \n```\nThis can then be run via\n```bash\nevalio run -c config.yml\n```\n\n## Contributing\n\nContributions are always welcome! Feel free to open an issue, pull request, etc. The documentation has a more details on developing new datasets and pipelines.\n\n## Citation\n\nIf you use evalio in your research, please cite the following paper,\n```bibtex\n@misc{potokar2025_evaluation_lidar_odometry,\n      title={A Comprehensive Evaluation of LiDAR Odometry Techniques}, \n      author={Easton Potokar and Michael Kaess},\n      year={2025},\n      eprint={2507.16000},\n      archivePrefix={arXiv},\n      primaryClass={cs.RO},\n      url={https://arxiv.org/abs/2507.16000}, \n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontagon%2Fevalio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontagon%2Fevalio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontagon%2Fevalio/lists"}