kornia-slam

Library New

Real-time visual-inertial SLAM in Rust, built on kornia-rs.

Checked · Sources

Downloads
8
Dependents
0
Stars
111
Forks
24
Contributors
6
Commits
260
Latest release
0.1.0 ·

About

From the project README ·

kornia-slam

Real-time visual-inertial SLAM in Rust, built on kornia-rs.

v0.1 — early release. The API will change between minor versions.

kornia-slam stereo-inertial on EuRoC MH_01_easykornia-slam stereo-inertial on EuRoC V1_01_easy
EuRoC MH_01_easyEuRoC V1_01_easy

Stereo + IMU at 2× speed. Each shows the map and trajectory, the left camera with its ORB keypoints, and a follow view.

Features

  • Monocular, stereo, and visual-inertial ORB SLAM
  • Local bundle adjustment, including visual-inertial BA
  • Place recognition (DBoW2) and loop closure with pose-graph optimization
  • Sources: EuRoC, Hilti, MCAP, OAK-D, UVC webcams
  • Terminal UI, Rerun streaming, ATE/RPE evaluation

See ROADMAP.md for what's next.

Install

Prebuilt binaries (v0.1.0)

Linux x86_64 and aarch64 builds need glibc 2.35+ (Ubuntu 22.04+, Jetson JetPack 6):

TARGET=x86_64-unknown-linux-gnu   # or aarch64-unknown-linux-gnu
NAME=kornia-slam-v0.1.0-$TARGET
curl -L --remote-name-all https://github.com/kornia/kornia-slam/releases/download/v0.1.0/$NAME.tar.gz{,.sha256}
sha256sum -c $NAME.tar.gz.sha256
tar -xzf $NAME.tar.gz

# stereo + IMU on an EuRoC sequence, with evaluation against ground truth
./$NAME/kornia-slam euroc --data /path/to/MH_01_easy --stereo --imu --evaluate

The archive holds the binary, README.md, CHANGELOG.md and LICENSE.

Read the full README

The v0.1.0 binary predates run files: it takes a source subcommand and flags (kornia-slam --help, kornia-slam euroc --help) rather than the --config run files described below. Global options go before the subcommand, e.g. loop closing with the vocabulary from Quick start: kornia-slam --vocab /path/to/ORBvoc.txt --apply-pgo euroc ….

It is built with the default features: Rerun streaming (--rerun-stream, which needs the rerun 0.29.2 viewer on PATH, e.g. pip install rerun-sdk==0.29.2) is in, live OAK-D and UVC cameras are not. Build from source with --features oakd or --features uvc for those; OAK-D has extra prerequisites, see apps/kornia-slam-app.

From source

The app needs Rust 1.91+ (the libraries 1.89+). Build and run with Cargo as in Quick start, or with Pixi, which provides the toolchain:

pixi run rust-run -- --config configs/euroc.ron
pixi run rust-lint
pixi run rust-test

Quick start

Download a EuRoC sequence (ASL format) to data/euroc/MH_01_easy, or edit the data path in the run file, then:

# monocular
cargo run --release -p kornia-slam-app -- --config configs/euroc.ron

# stereo + IMU with loop closing, with evaluation against ground truth
cargo run --release -p kornia-slam-app -- --config configs/euroc-stereo-imu-loop.ron --evaluate

Loop closing needs ORB-SLAM3's vocabulary: extract Vocabulary/ORBvoc.txt.tar.gz from ORB-SLAM3 to weights/ORBvoc.txt.

A run file names the source and the system to run on it; see apps/kornia-slam-app.

More sources and options: apps/kornia-slam-app.

Library

A system configuration and the source's calibrated rig build a SlamSystem, which then takes IMU samples and images as they arrive and returns poses. Feature extraction, stereo matching and frame history are the system's; sources supply synchronized, calibrated (and, for stereo, rectified) images.

use kornia_slam::{CameraSelection, SensorSelection, SlamSystem, SystemConfig};

let config = SystemConfig {
    sensors: SensorSelection { cameras: CameraSelection::Stereo, imu: true },
    ..SystemConfig::default()
};
let mut system = SlamSystem::build(config, rig)?; // rig: kornia_slam::SensorRig
for (idx, frame) in frames.enumerate() {
    system.process_imu(&frame.imu);
    let result = system.process_stereo(frame.timestamp_sec, &frame.left, &frame.right)?;
    println!("{idx}: {:?} {:?}", result.status, result.pose_world_to_cam);
}

With the serde feature, SystemConfig::from_ron_file reads the same settings from a RON file, the system section of a run file.

Integrations

Development

With Pixi, which sets up the toolchain for you:

pixi run rust-lint           # fmt + clippy + check
pixi run rust-test           # workspace tests
pixi shell                   # drop into the environment

Or with a Rust toolchain (1.91+; the library crates alone need 1.89) installed yourself:

cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test --workspace

Paper

Kornia-SLAM: An End-to-End Visual-Inertial SLAM System in Rust
Christie J. Purackal, Edgar Riba, Astik Srivastava.
Rust for Robotics workshop at IROS 2026 (preprint).
Paper (PDF) · Poster (PDF)

The paper's EuRoC results come from the August 2026 code, before v0.1.0. To cite kornia-slam, use GitHub's "Cite this repository" button, which reads CITATION.cff.

License

Apache-2.0

Runs on
GPU support unknown
What shows it
  • no dependency or feature matches a backend row
Native code
None found
  • No native code found
Python bindings
No Python binding crate found
License
Apache-2.0

Compare with similar projects

Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days.

kornia-slam beside the projects that share a topic with it
ProjectDownloadsDependentsStarsLatest releaseRuns on (GPU)Native codeLicense
kornia-slam This page New

Real-time visual-inertial SLAM in Rust, built on kornia-rs.

8 downloads over 30 days 0 111 0.1.0 GPU support unknown No native code found Apache-2.0
opencv-rust Featured

Rust bindings for OpenCV

262,425 downloads over 30 days 96 2,500 0.101.1 GPU support unknown Build uses a native toolchain: cc, pkg-config, vcpkg MIT
koharu App Featured

ML-powered manga translator, written in Rust.

6,338 binary downloads per release Not applicable 6,620 Not measured Not measured Apache-2.0
inference Listed

Ultralytics YOLO inference library and CLI for Rust

2,609 downloads over 30 days 1 217 0.0.56 CUDA, WebGPU, ROCm Binds native code: ort-sys, ffmpeg-sys-next (feature video), openvino-sys (feature intel) AGPL-3.0
kornia-rs Listed

Low-level computer vision library in Rust

2,294 downloads over 30 days 6 751 0.1.5 CUDA Binds native code: glib-sys (feature gstreamer), gobject-sys (feature gstreamer), gstreamer-app-sys (feature gstreamer), gstreamer-base-sys (feature gstreamer), gstreamer-sys (feature gstreamer) and 1 more Apache-2.0
visual-odometry-rs Listed Dormant

Visual odometry in Rust (vors)

0 downloads over 30 days 0 61 0.1.0 GPU support unknown No native code found MPL-2.0
Why NewIts first release on 27 Sep 2026 is under 180 days old.

The check tests the Featured gates once the first release passes this age limit.

What else the check found

  • The last activity is on 29 Oct 2026, 11 days ago. The rules expect an update within 365 days. Dormancy rule

Exact rules: New. The check on applied thresholds version 9.

Every rule outcome, as the check records it
  • expected-interval: version 0.1.0 base 80, capped at 1 releases = 50, raised to the 365-day floor: E = 365 days
  • dormancy: last activity 2026-10-29, 11 days ago, E = 365: active
  • new: new: first release 2026-09-27 is under 180 days old
Crates2 crates

Measurements and sources

Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.

Sources6 sources
Adoption0 active dependents, 0 new dependents in 365 days1 not measured
Adoption measurements
SignalValueSourceFetchedCounts
Active dependents0crates.io database dumpYes
New dependents (365 days)0crates.io database dumpYes
Peak active dependents0crates.io database dumpYes
Active dependents as a share of the peak1crates.io database dumpYes
Binary downloads per releaseNot measuredYes
MaintenanceLatest human commit: 11 days ago3 not measured
Maintenance measurements
SignalValueSourceFetchedCounts
Latest human commit2026-10-29GitHub repositoryYes
Latest release2026-09-27crates.io database dumpYes
First release2026-09-27crates.io database dumpYes
Latest version0.1.0crates.io database dumpYes
Days the oldest outside issue waits for a reply36GitHub repositoryYes
Maintainer replies over 365 days71GitHub repositoryYes
Repository archivedfalseGitHub repositoryYes
Repository gonefalseGitHub repositoryYes
Release commit or manifest in the repotruecrates.io packageYes
Published docstruecrates.io database dumpYes
Latest release fails cargo checkNot measuredYes
Build check dateNot measuredYes
Build check toolchainNot measuredYes
SecurityUnpatched vulnerabilities: none
Security measurements
SignalValueSourceFetchedCounts
Unpatched vulnerabilities past the grace windownoneRustSec advisory databaseYes
RustSec unmaintained advisorynoneRustSec advisory databaseYes
Deprecation noticenonecrates.io database dumpYes
Deprecated requirementnonecrates.io database dumpYes
Distribution1 releases, 8 downloads over 30 days5 not measured
Distribution measurements
SignalValueSourceFetchedCounts
Releases1crates.io database dumpYes
Downloads over 30 days8crates.io database dumpYes
Binary downloads over the last 3 releasesNot measuredYes
Homebrew installs on request over 365 daysNot measuredYes
Repology repository familiesNot measuredYes
Docker pull growth over 90 daysNot measuredYes
Docker pulls at the growth baselineNot measuredYes
Every version a prereleasefalsecrates.io database dumpYes
Every version 0.0.xfalsecrates.io database dumpYes
Every version yankedfalsecrates.io database dumpYes
Crate deleted from crates.iofalsecrates.io database dumpYes
Repository111 stars, 24 forks, 6 contributors, 260 commits. Stars alone never qualify a project.
Repository measurements
SignalValueSourceFetchedCounts
GitHub stars111GitHub repositoryYes — one part of the repository route
GitHub forks24GitHub repositoryYes — one part of the repository route
Contributors with a GitHub account6GitHub contributorsYes — one part of the repository route
Commits on the default branch260GitHub repositoryNo
Repository's main crate left out of the entrynonecrates.io database dumpYes
Facts that never count
Facts that never count measurements
SignalValueSourceFetchedCounts
LicenseApache-2.0crates.io database dumpNo
Runs on, from listed crates and their direct dependenciesGPU support unknowncrates.io database dumpNo
What shows each backendno dependency or feature matches a backend rowcrates.io database dumpNo
Native code, from listed crates and their dependenciesNo native code foundcrates.io database dumpNo
Python bindings, from direct dependencies of listed cratesNo Python binding crate foundcrates.io database dumpNo
Crates that depend on a listed crate directly0crates.io database dumpNo

Corrections and review history

Report a correction

No correction applies to this entry.

Judgments

A judgment enters only through an approved issue and a merged pull request.

No judgment applies to this entry.