dimSLAM: enhanced cuVSLAM - #3632
Conversation
Greptile SummaryThis change adds the Rust-backed dimSLAM module, a RealSense stereo demo, odometry-path visualization, and supporting registration. The infrared-only demo can fail to initialize visual odometry on a RealSense profile without a discoverable depth stream because camera-frame transforms are withheld even though the infrared streams are enabled. Confidence Score: 4/5The infrared-only RealSense demo is not reliable across supported camera profiles until its transform origin can be selected from an enabled stream. The camera transform builder unconditionally selects a depth profile as its origin. When that profile is unavailable, it returns without publishing the infrared transforms required by dimSLAM. Files Needing Attention: dimos/hardware/sensors/camera/realsense/camera.py
What T-Rex did
|
Codecov Report❌ Patch coverage is
@@ Coverage Diff @@
## main #3632 +/- ##
==========================================
+ Coverage 77.83% 77.84% +0.01%
==========================================
Files 1329 1331 +2
Lines 126868 127014 +146
Branches 11035 11160 +125
==========================================
+ Hits 98749 98879 +130
- Misses 24970 24986 +16
Partials 3149 3149
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 4 files with indirect coverage changes 🚀 New features to boost your workflow:
|
The __init__ lock was immediately replaced in main(), the max(hz, 1e-3) guarded a config value that is never zero, and the poll docstring repeated what now lives as comments at the negation and twist sites.
portal ships in the misc extra, so a top-level import breaks blueprint validation tests in environments without it.
This reverts commit 9bbe36a.
One derivation per crate instead of one vendored blob, so a dependency bump only rebuilds what changed and the SDK variants share everything below cu_vslam_rs. crate2nix reads the crate through the synthesized tree rather than the crate directory, because the ../../../../native path dependency escapes the latter. The module also has to be handed DEP_CUVSLAM_LIB_DIR explicitly: buildRustCrate names those variables after the crate and cargo after the `links` key, so build.rs would otherwise see nothing and emit no rpath, leaving a binary that dies at startup on @rpath/libcuvslam.dylib.
Build the Odometry and PointCloud2 messages as struct literals instead of mutating a Default, replace the 6x6 covariance copy loop with a row-major copy_from_slice, and inline to_isometry into its only caller.
A branch pin silently rolls forward; the tag names the exact release the Cargo.lock rev belongs to.
dim_odom now publishes a py3-none-any placeholder alongside its three real wheels, so the three supported targets no longer have to be spelled out here to keep the group installable elsewhere. The placeholder raises ImportError and test_dim_odom_replay already guards on importorskip; a platform tag outranks `any`, so a real wheel still wins wherever one exists.
The dim_odom wheel is now versioned off the repository's release tag, so the crate pin and the dependency specifier name the same release.
cuVSLAM enhanced with wheel odometry
next PR lets us run it on alfred