Conversation
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
|
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 |
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.
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