Skip to main content

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 MapGraph Creation

    • The current get_map_graph() in SVOEngine is a placeholder that only returns the last frame.
    • Sub-task: Add C++ pybind11 functions to iterate through all active keyframes in the svo::Map.
    • Sub-task: Convert the C++ keyframe data into a list of Python MapNode objects to provide a complete map representation to the SLAMService.
  • Resolve Feature Handling Mismatch

    • The Python VOEngine interface provides pre-computed features to process_frame, but the C++ SVO library performs its own feature detection and ignores them.
    • Decision: Choose a long-term strategy:
      1. (Recommended for SVO): Keep the current implementation and clearly document that SVO handles its own feature detection.
      2. (Advanced): Modify the C++ FrameHandlerMono to accept and use external features, bypassing its internal FAST detector. This would allow for experimentation with different feature detectors from Python.
  • Finalize ARM-Specific Parameter Tuning

    • Methodically test and validate a final jetson_config dictionary 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_disparity to ensure reliable initialization in real-world drone startup scenarios (e.g., slow takeoff).
  • 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 -O2 optimization level instead of -O3 to see if it improves numerical stability.
    • Sub-task: Double-check all CMakeLists.txt files to ensure the -ffast-math flag (which can reduce precision) is not being used.
  • Integrate IMU Data for VIO

    • The SLAMService is 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 SVOEngine to pass IMU data from the _on_calib_sync callback to the C++ backend.
  • 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++ FrameHandlerMono to 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 RELOCALIZING state frequently on ARM.
    • Sub-task: Expose C++ parameters related to relocalization to the Python set_svo_config function.
    • Sub-task: Tune these parameters to make relocalization faster and more reliable.
  • Refine State Management

    • The mapping from the C++ Stage enum to the Python SLAMState enum 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

svo_cpp-1.5.0-cp312-cp312-manylinux_2_28_x86_64.whl (36.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

svo_cpp-1.5.0-cp312-cp312-manylinux_2_28_aarch64.whl (19.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

svo_cpp-1.5.0-cp311-cp311-manylinux_2_28_x86_64.whl (36.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

svo_cpp-1.5.0-cp311-cp311-manylinux_2_28_aarch64.whl (19.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

svo_cpp-1.5.0-cp310-cp310-manylinux_2_28_x86_64.whl (36.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

svo_cpp-1.5.0-cp310-cp310-manylinux_2_28_aarch64.whl (19.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

svo_cpp-1.5.0-cp39-cp39-manylinux_2_28_x86_64.whl (36.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

svo_cpp-1.5.0-cp39-cp39-manylinux_2_28_aarch64.whl (19.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

svo_cpp-1.5.0-cp38-cp38-manylinux_2_28_x86_64.whl (36.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

svo_cpp-1.5.0-cp38-cp38-manylinux_2_28_aarch64.whl (19.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

File details

Details for the file svo_cpp-1.5.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for svo_cpp-1.5.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b47a9f99904b4348bb021fd6386041aff5b3fee887d48e6fbddd84b41d5e5efa
MD5 5643e6f57a61d780840cdfc285b923e2
BLAKE2b-256 337def6d0a7a2e6fbf61466fa96b92a6f8e2fa5dd6a2163e4eec8276d19c2b73

See more details on using hashes here.

File details

Details for the file svo_cpp-1.5.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for svo_cpp-1.5.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2308a97111372efa4f1fe8a03993b14e5293d4a1d13edc4f8f1a495f156014e6
MD5 f41b94764bb237d5c552fb1e722ce151
BLAKE2b-256 ef9497b2079297381da1124f7c9651f7a7bba6aa98ae921ec6d10639228b72e7

See more details on using hashes here.

File details

Details for the file svo_cpp-1.5.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for svo_cpp-1.5.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 48df5a80b4388ebb2c6a8ed8fd301cc9f0c4bb1b9d0b320d359b79e275fca856
MD5 d08a7545294184b92cccaeb2495701a1
BLAKE2b-256 dd0fbf32e5c1a905cbd725bfafb9d694d1818850159861a438158045f507fe41

See more details on using hashes here.

File details

Details for the file svo_cpp-1.5.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for svo_cpp-1.5.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5a529976d1cca1d8c6d3b726f3f0025958e71533cfd64b52f49be48d32bab17f
MD5 cc7041080d6b46e306d7cf8ca4e20e14
BLAKE2b-256 12fcaa6b7a9f6fee7b4ef719dacae81a0a66e1c8364c40df34568de927d7ddc8

See more details on using hashes here.

File details

Details for the file svo_cpp-1.5.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for svo_cpp-1.5.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9859b70bd4998a8ad3aae2b9a00a62e41884e767b438f0e1f45c778db74eb86f
MD5 1e6b426e7b0f910cd630f123f996ff64
BLAKE2b-256 5f532bf2b44d6358ded07361615282d6f2a65a78509ce4de750b8644b5aff5e6

See more details on using hashes here.

File details

Details for the file svo_cpp-1.5.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for svo_cpp-1.5.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4da618d066b0d0a2b9ed4160d1db2c68cecbc881b12a82be9388b4f6278a4fbc
MD5 3d52e0b6fc16d1e886a493bdcd7309ba
BLAKE2b-256 70a309468c4bfeab849f2fcb33f0953a39ad38b2fef2d32956cc42d392827937

See more details on using hashes here.

File details

Details for the file svo_cpp-1.5.0-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for svo_cpp-1.5.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 935436fc250754e7f3af51288df9f54dd27d79806e88bdf7f5f65bb4fce03c40
MD5 742b850402e4ead5556c359e8b516c9f
BLAKE2b-256 0c377eefd48d381ef3730003048e220e29f1328eedfb3a67a4ae7ba58a775d57

See more details on using hashes here.

File details

Details for the file svo_cpp-1.5.0-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for svo_cpp-1.5.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 78b39640a2d57e4bed5fa045cda45b9d7dcaf77bd4a595acc5c84828b166271e
MD5 e210b7b0b4b27f711c157d4004c6b914
BLAKE2b-256 9a223f124c2bf09e3183a0bf8e499bec352284ab919a1246e5ef01eea086d624

See more details on using hashes here.

File details

Details for the file svo_cpp-1.5.0-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for svo_cpp-1.5.0-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bf2a5c213f30ca674496cf8624044f9b901479941e05a1ac59e1ffba63344afe
MD5 b0e4291d6e5f025e7205e53bffdc357d
BLAKE2b-256 ebaee3094e731188741a66e2a4392799e66ec3aeb6ae9b8dc5c039b8534b9983

See more details on using hashes here.

File details

Details for the file svo_cpp-1.5.0-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for svo_cpp-1.5.0-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ca8103659fbf21c9ac11523515218b9097fe98db6904be37d7529af888cf8ce8
MD5 42af15cf45f2bbaf085b21e824e78102
BLAKE2b-256 baeb69b86f952abaeb59da41c7e2b382ccd0f35d3af76d3dc3f5d25a36904597

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page