A high-performance GPU-accelerated ORB keypoint extraction library for visual SLAM and computer vision applications. The library provides fast, thread-safe keypoint extraction with support for both OpenCV-based and OpenCV-free workflows, enabling efficient multi-camera and multi-threaded processing.
Key features:
- GPU-accelerated ORB keypoint extraction
- Supports both OpenCV (
cv::Mat,cv::KeyPoint) and OpenCV-free data structures - Thread-safe API for multi-camera and multi-threaded use cases
- Flexible configuration for single or multiple ORB extractor objects
Prepare the target system following the official documentation
Intel oneAPI Requirements:
- Intel oneAPI 2025.3 with SYCL compiler support
- Clean build environment essential for SYCL compilation
- Requires namespace-qualified SYCL device code
Note: Some tests require TigerLake or AlderLake CPUs for SYCL runtime library support.
To build debian packages, export ROS_DISTRO env variable to desired platform and run make build command. After build process successfully finishes, built packages will be available in the root directory. The following command is an example for Jazzy distribution.
ROS_DISTRO=jazzy make buildYou can list all built packages:
$ ls | grep -i .deb
liborb-lze_2.3-2_amd64.deb
liborb-lze-dev_2.3-2_amd64.deb
orb-extractor-lze-test_2.3-2_amd64.deb
ros-jazzy-orb-extractor-build-deps_2.3-2_amd64.deb*build-deps*.deb package is generated during build process and installation of such packages could be skipped on target platform. orb-extractor-lze-test_*.deb is an empty/disabled test package used only for build-time testing and normally does not need to be installed on the target system.
To clean all build artifacts:
make cleanTo run tests execute the below command with target ROS_DISTRO (example for Jazzy):
ROS_DISTRO=jazzy make testsNote: Be aware that some of the tests can only be executed on TigerLake and AlderLake CPUs, otherwise they will fail on missing SYCL runtime library.
There is a set of prepared Makefile targets to speed up the development.
In particular, use the following Makefile target to run code linters.
make lintAlternatively, you can run linters individually.
make lint-bash
make lint-clang
make lint-githubactions
make lint-json
make lint-markdown
make lint-python
make lint-yamlTo run license compliance validation:
make license-checkTo see a full list of available Makefile targets:
$ make help
Target Description
------ -----------
build Build code using colcon
clean Clean build artifacts
license-check Perform a REUSE license check using docker container https://hub.docker.com/r/fsfe/reuse
lint Run all sub-linters using super-linter (using linters defined for this repo only)
lint-all Run super-linter over entire repository (auto-detects code to lint)
lint-bash Run Bash linter using super-linter
lint-clang Run clang linter using super-linter
lint-githubactions Run Github Actions linter using super-linter
lint-json Run JSON linter using super-linter
lint-markdown Run Markdown linter using super-linter
lint-python Run Python linter using super-linter
lint-yaml Run YAML linter using super-linter
source-package Create source package tarball
tests Run tests inside Docker container. Be aware that some of the tests could be executed only on TigerLake and AlderLake CPUs, otherwise it will fail on missing SYCL runtime library.The GPU ORB Extractor library provides tutorials and usage guides supporting both OpenCV-based and OpenCV-free workflows.
For detailed usage instructions and pre-requisites, refer to the ORB Extractor Overview.
Comprehensive documentation on this component is available here:
orb-extractor is licensed under Apache 2.0 License.