-
A Monocular Visual odometry pipeline using Modern C++, CUDA and OpenCV on the KITTI odometry dataset.
-
ORB feature computation is implemented using CUDA kernels and compares performance improvements. CPU or GPU version can be chosen using input arguments.
- FAST Keypoint Detection: Detect keypoints in the images using the FAST algorithm.
- ORB Descriptor Computation: Compute ORB descriptors for the detected keypoints.
- Feature Matching: Match keypoints between images using a matching algorithm.
- Essential Matrix Estimation using RANSAC: Estimate the Essential Matrix (
E
) using RANSAC to handle outliers. - Compute Pose from E: Extract camera pose information from the estimated Essential Matrix (
E
). - Pose Tracking: Track the camera pose over time using the computed poses.
- OpenCV 4.2.0
- CUDA
mkdir build
cmake -DCMAKE_CUDA_ARCHITECTURES= $your_architecture ..
make
-
CPU_VO: Run CPU Visual Odometry.
./main IMAGE_PATH ORB_CPU
-
GPU_VO: Run CUDA-accelerated Visual Odometry.
./main IMAGE_PATH ORB_GPU
-
benchmark: Run benchmarking to evaluate the performance of the GPU-accelerated implementation.
./benchmark
Method | Compute Time for 1600 Images (ms) |
---|---|
ORB_CPU | 20134 ms |
ORB_CUDA | 4474 ms |
TODO:
Add documentation in code
Add tests