This project is an implementation of a Stereo Visual Odometry (SVO) pipeline using KITTI Dataset. SVO is a method used in computer vision and robotics to estimate the 3D pose (position and orientation) of a camera relative to its starting position, using only the images captured by the camera.
- Feature detection using SIFT (Scale-Invariant Feature Transform)
- Feature matching using BFMatcher (Brute-Force Matcher)
- 3D-2D motion estimation using PnP (Perspective-n-Point) with RANSAC (Random Sample Consensus)
- Triangulation of points using stereo camera parameters
- Python 3.6 or higher
- OpenCV 4.0 or higher
- NumPy
- Pytorch
-
Clone the repository:
git clone https://github.com/AdeolaJoseph/Stereo-Visual-Odometry.git -
Navigate to the project directory:
cd Stereo-Visual-Odometry -
Run the main script:
python stereo_odometry.py -
Run eval scripts
- Copy and paste the result into the eval/result folder
- Navigate to the eval folder
- Run
python compute_metrics.py
Please see devnotes.md for an explanation of current files, bugs, evaluation scripts etc.
This project is licensed under the MIT License - see the LICENSE file for details.
The following figure shows the APE error on sequence 01. APE tries to fit the estimated trajectory over the ground truth and then computes the metrics. This is not ideal as the drift is minimal in the beginning and higher in the end, and APE punishes the trajectory in the beginning. It does not compute local trajectory errors.
Estimated Trajectory and Groundtruth Trajectory |
Absolute Pose Error |
RPE, on the other hand, captures local trajectory errors.
For evaluation with others, it is better to use APE as it is standardized.
| Sequence | APE - rmse | APE - rmse (%) |
|---|---|---|
| 00 | 46.71 | 1.25 |
| 01 | 35.56 | 1.45 |
| 02 | 141.11 | 2.7 |
| 03 | 9.15 | 1.53 |
| 04 | NA | NA |
| 05 | 12.02 | 0.55 |
| 06 | NA | NA |
| 07 | 6.2 | 0.89 |
| 08 | 13.27 | 0.41 |
| 09 | 16.82 | 1.11 |
| 10 | 9.07 | 0.65 |
Estimated Trajectory and Groundtruth Trajectory |
|
Absolute Pose Error |
Absolute Pose Error |
Relative Pose Error |
Relative Pose Error |
Estimated Trajectory and Groundtruth Trajectory |
|
Absolute Pose Error |
Absolute Pose Error |
Relative Pose Error |
Relative Pose Error |
Estimated Trajectory and Groundtruth Trajectory |
|
Absolute Pose Error |
Absolute Pose Error |
Relative Pose Error |
Relative Pose Error |
Estimated Trajectory and Groundtruth Trajectory |
|
Absolute Pose Error |
Absolute Pose Error |
Relative Pose Error |
Relative Pose Error |
-
APE
-
RPE
Estimated Trajectory and Groundtruth Trajectory |
|
Absolute Pose Error |
Absolute Pose Error |
Relative Pose Error |
Relative Pose Error |
-
APE
-
RPE
Estimated Trajectory and Groundtruth Trajectory |
|
Absolute Pose Error |
Absolute Pose Error |
Relative Pose Error |
Relative Pose Error |
Estimated Trajectory and Groundtruth Trajectory |
|
Absolute Pose Error |
Absolute Pose Error |
Relative Pose Error |
Relative Pose Error |
Estimated Trajectory and Groundtruth Trajectory |
|
Absolute Pose Error |
Absolute Pose Error |
Relative Pose Error |
Relative Pose Error |
Estimated Trajectory and Groundtruth Trajectory |
|
Absolute Pose Error |
Absolute Pose Error |
Relative Pose Error |
Relative Pose Error |













































