Skip to content
dimensionalOSPublic

About

SLAM

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

226 Commits

Folders and files

Repository files navigation

dimSLAM

SLAM stack for dimos. Rust only: the C++ cuVSLAM fork, its extern-"C" shim, and the per-platform SDK packaging live in cu_vslam_rs.

  • rust/ — the dim_slam library crate: cuVSLAM visual odometry (via the cu_vslam_rs crate) and an error-state Kalman fusion filter. Both cores are plain synchronous Rust over plain Rust types, owning no transport or threads, so anything can drive them; dimos supplies its own LCM wrapper. Needs CUVSLAM_SDK_DIR (a dir with include/cuvslam/cuvslam2.h and lib/libcuvslam.*) to build.
  • flake.nix — re-exports the cuVSLAM SDKs this arch can run as sdk-<variant> (x86_64-cuda12 and x86_64-cuda13 on x86 linux, orin and thor on arm linux, metal on arm macOS), and a devShell with CUVSLAM_SDK_DIR already set to this machine's default.
use dim_slam::{FusionCore, OdometryFusionConfig, SourceConfig};

let mut fusion = FusionCore::new(OdometryFusionConfig {
    odom_sources: vec![SourceConfig {
        parent_frame_id: "visual_odom".into(),
        child_frame_id: "base_link".into(),
        pose_variances: [1e-4; 6],
        ..Default::default()
    }],
    ..Default::default()
});
fusion.handle_source(&visual_odometry);
if let Some(estimate) = fusion.maybe_publish() { /* estimate.pose */ }

A binary that links this crate has to embed the SDK's rpath itself; cargo does not pass rustc-link-arg down from a dependency's build script.

About

SLAM

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages