Skip to content

feat(perception): add ORB-SLAM3 native module#1598

Open
leshy wants to merge 6 commits intodevfrom
feat/orbslam3-native-module
Open

feat(perception): add ORB-SLAM3 native module#1598
leshy wants to merge 6 commits intodevfrom
feat/orbslam3-native-module

Conversation

@leshy
Copy link
Contributor

@leshy leshy commented Mar 17, 2026

part of monocular nav experiment #1596 but ORB-SLAM3 is a good thing to have around in general

otherwise extremely light native-module

TBH I don't understand rerun transforms (I keep forgetting and re-reading the docs) and not sure that our bridge API in this context is most convinient, so will review, this doesn't give you a nice moving camera frame, just odom and image messages, I will implement this later, it's a rerun config issue

Adds ORB-SLAM3 visual SLAM as a NativeModule under perception/slam/,
following the same pattern as FastLIO2. Phase 1: nix build from source,
binary initializes System and blocks — no LCM I/O yet.

- Python module with OrbSlam3Config and perception.Odometry protocol
- C++ wrapper using dimos::NativeModule for CLI arg parsing
- Nix flake that builds ORB-SLAM3 from github:thuvasooriya/orb-slam3
- Default RealSense D435i camera settings
- Vocab auto-resolved from nix store path
@jeff-hykin
Copy link
Member

So we've got a problem (I'm having this with stuff in the nav stack too) ... ORB SLAM3 is copy left, GPLv3. We can't really include it in our codebase.

I think for a lot of our native modules we're going to need a way to keep it in a separate codebase and then pull it in at runtime if the user opts to use the module.

@leshy
Copy link
Contributor Author

leshy commented Mar 18, 2026

So we've got a problem (I'm having this with stuff in the nav stack too) ... ORB SLAM3 is copy left, GPLv3. We can't really include it in our codebase.

I think for a lot of our native modules we're going to need a way to keep it in a separate codebase and then pull it in at runtime if the user opts to use the module.

True, despite this not including orb-slam3 code, main.cpp links against orb-slam3. so we might want to put this as a separate GPL3 repo - edit - done

leshy added 4 commits March 18, 2026 16:25
ORB-SLAM3 is GPL-3.0, incompatible with our Apache 2.0 license.
Moved C++ native module (main.cpp, CMakeLists, flake.nix) and
ORB-SLAM3 configs to dimensionalOS/dimos-orb-slam3.

The Python wrapper now builds from the external flake via
`nix build github:dimensionalOS/dimos-orb-slam3` into a local
cache directory. IPC boundary via LCM is unchanged.
Add SensorMode enum, remove model_post_init, use module directory
for cwd, pin build to dimos-orb-slam3/v0.1.0. Gitignore **/result.
@leshy leshy marked this pull request as ready for review March 18, 2026 09:38
@dimensionalOS dimensionalOS deleted a comment from greptile-apps bot Mar 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants