Semi Direct Visual Odometry with python bindings
Project description
SVO CPP
Semi Direct Visual Odometry with Python bindings.
Installation
pip install svo-cpp
TODO (Click me)
-
Implement Full
MapGraphCreation- The current
get_map_graph()inSVOEngineis a placeholder that only returns the last frame. - Sub-task: Add C++
pybind11functions to iterate through all active keyframes in thesvo::Map. - Sub-task: Convert the C++ keyframe data into a list of Python
MapNodeobjects to provide a complete map representation to theSLAMService.
- The current
-
Resolve Feature Handling Mismatch
- The Python
VOEngineinterface provides pre-computed features toprocess_frame, but the C++ SVO library performs its own feature detection and ignores them. - Decision: Choose a long-term strategy:
- (Recommended for SVO): Keep the current implementation and clearly document that SVO handles its own feature detection.
- (Advanced): Modify the C++
FrameHandlerMonoto accept and use external features, bypassing its internal FAST detector. This would allow for experimentation with different feature detectors from Python.
- The Python
-
Finalize ARM-Specific Parameter Tuning
- Methodically test and validate a final
jetson_configdictionary with optimal parameters for the drone's hardware and expected motion patterns. - Sub-task: Focus on finding the best balance for
reproj_thresh, as it's the most critical parameter for tracking stability. - Sub-task: Tune
init_min_disparityto ensure reliable initialization in real-world drone startup scenarios (e.g., slow takeoff).
- Methodically test and validate a final
-
Investigate Compiler Flag Impact
- The performance difference between x86 and ARM suggests sensitivity to compiler optimizations.
- Sub-task: Compile and test the C++ modules using the
-O2optimization level instead of-O3to see if it improves numerical stability. - Sub-task: Double-check all
CMakeLists.txtfiles to ensure the-ffast-mathflag (which can reduce precision) is not being used.
-
Integrate IMU Data for VIO
- The
SLAMServiceis already designed to handle IMU data for visual-inertial odometry. The SVO library also has capabilities for this. - Sub-task: Create C++ bindings for SVO's IMU processing functions.
- Sub-task: Implement the logic in
SVOEngineto pass IMU data from the_on_calib_synccallback to the C++ backend.
- The
-
Enable Dynamic Feature Filtering
- Your application can provide a dynamic mask to filter features on moving objects (e.g., other drones, people).
- Sub-task: Modify the C++
FrameHandlerMonoto accept an image mask. - Sub-task: Apply this mask during the internal feature detection step to ignore features in dynamic regions.
-
Improve Relocalization Logic
- The logs show the system enters a
RELOCALIZINGstate frequently on ARM. - Sub-task: Expose C++ parameters related to relocalization to the Python
set_svo_configfunction. - Sub-task: Tune these parameters to make relocalization faster and more reliable.
- The logs show the system enters a
-
Refine State Management
- The mapping from the C++
Stageenum to the PythonSLAMStateenum is functional but could be more detailed to provide better system health information. - Sub-task: Provide more granular state updates from the C++ backend to the Python
SVOEngine.
- The mapping from the C++
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file svo_cpp-1.5.0-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: svo_cpp-1.5.0-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.2 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b47a9f99904b4348bb021fd6386041aff5b3fee887d48e6fbddd84b41d5e5efa
|
|
| MD5 |
5643e6f57a61d780840cdfc285b923e2
|
|
| BLAKE2b-256 |
337def6d0a7a2e6fbf61466fa96b92a6f8e2fa5dd6a2163e4eec8276d19c2b73
|
File details
Details for the file svo_cpp-1.5.0-cp312-cp312-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: svo_cpp-1.5.0-cp312-cp312-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 19.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2308a97111372efa4f1fe8a03993b14e5293d4a1d13edc4f8f1a495f156014e6
|
|
| MD5 |
f41b94764bb237d5c552fb1e722ce151
|
|
| BLAKE2b-256 |
ef9497b2079297381da1124f7c9651f7a7bba6aa98ae921ec6d10639228b72e7
|
File details
Details for the file svo_cpp-1.5.0-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: svo_cpp-1.5.0-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.2 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48df5a80b4388ebb2c6a8ed8fd301cc9f0c4bb1b9d0b320d359b79e275fca856
|
|
| MD5 |
d08a7545294184b92cccaeb2495701a1
|
|
| BLAKE2b-256 |
dd0fbf32e5c1a905cbd725bfafb9d694d1818850159861a438158045f507fe41
|
File details
Details for the file svo_cpp-1.5.0-cp311-cp311-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: svo_cpp-1.5.0-cp311-cp311-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 19.9 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a529976d1cca1d8c6d3b726f3f0025958e71533cfd64b52f49be48d32bab17f
|
|
| MD5 |
cc7041080d6b46e306d7cf8ca4e20e14
|
|
| BLAKE2b-256 |
12fcaa6b7a9f6fee7b4ef719dacae81a0a66e1c8364c40df34568de927d7ddc8
|
File details
Details for the file svo_cpp-1.5.0-cp310-cp310-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: svo_cpp-1.5.0-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.2 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9859b70bd4998a8ad3aae2b9a00a62e41884e767b438f0e1f45c778db74eb86f
|
|
| MD5 |
1e6b426e7b0f910cd630f123f996ff64
|
|
| BLAKE2b-256 |
5f532bf2b44d6358ded07361615282d6f2a65a78509ce4de750b8644b5aff5e6
|
File details
Details for the file svo_cpp-1.5.0-cp310-cp310-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: svo_cpp-1.5.0-cp310-cp310-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 19.9 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4da618d066b0d0a2b9ed4160d1db2c68cecbc881b12a82be9388b4f6278a4fbc
|
|
| MD5 |
3d52e0b6fc16d1e886a493bdcd7309ba
|
|
| BLAKE2b-256 |
70a309468c4bfeab849f2fcb33f0953a39ad38b2fef2d32956cc42d392827937
|
File details
Details for the file svo_cpp-1.5.0-cp39-cp39-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: svo_cpp-1.5.0-cp39-cp39-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.2 MB
- Tags: CPython 3.9, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
935436fc250754e7f3af51288df9f54dd27d79806e88bdf7f5f65bb4fce03c40
|
|
| MD5 |
742b850402e4ead5556c359e8b516c9f
|
|
| BLAKE2b-256 |
0c377eefd48d381ef3730003048e220e29f1328eedfb3a67a4ae7ba58a775d57
|
File details
Details for the file svo_cpp-1.5.0-cp39-cp39-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: svo_cpp-1.5.0-cp39-cp39-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 19.9 MB
- Tags: CPython 3.9, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78b39640a2d57e4bed5fa045cda45b9d7dcaf77bd4a595acc5c84828b166271e
|
|
| MD5 |
e210b7b0b4b27f711c157d4004c6b914
|
|
| BLAKE2b-256 |
9a223f124c2bf09e3183a0bf8e499bec352284ab919a1246e5ef01eea086d624
|
File details
Details for the file svo_cpp-1.5.0-cp38-cp38-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: svo_cpp-1.5.0-cp38-cp38-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 36.2 MB
- Tags: CPython 3.8, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf2a5c213f30ca674496cf8624044f9b901479941e05a1ac59e1ffba63344afe
|
|
| MD5 |
b0e4291d6e5f025e7205e53bffdc357d
|
|
| BLAKE2b-256 |
ebaee3094e731188741a66e2a4392799e66ec3aeb6ae9b8dc5c039b8534b9983
|
File details
Details for the file svo_cpp-1.5.0-cp38-cp38-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: svo_cpp-1.5.0-cp38-cp38-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 19.9 MB
- Tags: CPython 3.8, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca8103659fbf21c9ac11523515218b9097fe98db6904be37d7529af888cf8ce8
|
|
| MD5 |
42af15cf45f2bbaf085b21e824e78102
|
|
| BLAKE2b-256 |
baeb69b86f952abaeb59da41c7e2b382ccd0f35d3af76d3dc3f5d25a36904597
|