{"id":14992244,"url":"https://github.com/pekkaran/violet","last_synced_at":"2026-01-18T08:09:58.589Z","repository":{"id":158337734,"uuid":"469819882","full_name":"pekkaran/violet","owner":"pekkaran","description":"A toy stereo visual inertial odometry (VIO) system","archived":false,"fork":false,"pushed_at":"2023-04-28T18:58:28.000Z","size":336,"stargazers_count":7,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-24T16:09:53.331Z","etag":null,"topics":["computer-vision","ekf","extended-kalman-filter","kalman-filter","msckf","slam","vio","visual-inertial-odometry"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pekkaran.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}},"created_at":"2022-03-14T16:38:36.000Z","updated_at":"2024-03-12T22:48:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"bc7d2232-eda0-44d9-ab7a-c3a5d8ea62b1","html_url":"https://github.com/pekkaran/violet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pekkaran%2Fviolet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pekkaran%2Fviolet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pekkaran%2Fviolet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pekkaran%2Fviolet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pekkaran","download_url":"https://codeload.github.com/pekkaran/violet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234200175,"owners_count":18795139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["computer-vision","ekf","extended-kalman-filter","kalman-filter","msckf","slam","vio","visual-inertial-odometry"],"created_at":"2024-09-24T15:00:53.435Z","updated_at":"2025-09-25T14:30:56.012Z","avatar_url":"https://github.com/pekkaran.png","language":"Rust","funding_links":[],"categories":["Localization and Mapping"],"sub_categories":[],"readme":"# Violet\n\nA toy stereo visual inertial odometry (VIO) system. Built upon [HybVIO](https://github.com/SpectacularAI/HybVIO), which was built upon [PIVO](https://arxiv.org/pdf/1708.00894.pdf), which was built upon [MSCKF by Mourikis and Roumeliotis](https://www-users.cse.umn.edu/~stergios/papers/ICRA07-MSCKF.pdf).\n\n## Status\n\nThe implementation of the VIO is not yet complete, but some of the sub-components have been tested to work:\n\n- [X] Data input:\n  - [X] IMU parsing\n  - [X] Video decoding\n  - [X] Calibration parsing\n- [X] Stereo feature tracker:\n  - [X] Feature detection: FAST corners\n  - [X] Optical flow: Pyramidal Lucas-Kanade\n  - [X] Track spatial distribution enhancement\n- [ ] Odometry: Extended Kalman Filter (EKF)\n  - [X] Prediction step (the dynamic model)\n  - [X] Update step\n  - [X] Stationarity update\n  - [ ] Visual update\n- [X] Camera models: Pinhole with radial distortion\n- [X] Visualizations\n  - [X] Various 2D visualizations\n  - [X] VIO output track visualization, 3D\n\nGoals:\n\n* Do not depend on any computer vision libraries such as OpenCV, implement all the relevant algorithms from scratch.\n* Demonstrate plausibility and advantages of using Rust over C++ for this kind of real-time sensor fusion applications. Consequently a goal is to make the implementation run relatively fast.\n\nNon-goals:\n\n* Simultaneous Localization and Mapping (SLAM).\n* State-of-the-art accuracy and robustness. For a commercial-grade solution, please see [Spectacular AI](https://www.spectacularai.com/).\n\n## Obtaining test data\n\nThe input data format supported by the VIO is the same as described [here](https://github.com/AaltoML/vio_benchmark#benchmark-data-format), except that the calibration is read from a JSON format. A conversion for the [EuRoC](https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets) dataset exists:\n\n* Install `ffmpeg`\n* Install Python dependencies, eg by `pip install pyyaml numpy`\n* Run download and conversion, eg by: `python scripts/download_euroc.py --fast --case v1-01-easy`\n\nThe converted datasets are saved under `data/benchmark/`. Note that about 10 GB of space is required for converting all the EuRoC datasets.\n\nTo implement conversion for other datasets, please examine format of the converted EuRoC datasets.\n\n## Running the VIO\n\nInstall Rust, see for example the official [get started](https://www.rust-lang.org/learn/get-started) guide. Clone this git repository and run from its root:\n\n```bash\ncargo run -- -i data/benchmark/euroc/v1-01-easy --show-tracks\n```\n\nSee all the available visualizations and options with:\n\n```bash\ncargo run -- --help\n```\n\n## License\n\nLicensed under **GPLv3**. Note that the algorithms are heavily based on [HybVIO](https://github.com/SpectacularAI/HybVIO) which is licensed under GPLv3.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpekkaran%2Fviolet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpekkaran%2Fviolet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpekkaran%2Fviolet/lists"}