Visual Odometry pipeline implementation in C++
I am a former physicist working as a software engineer in topics like sensor data fusion. I have a strong interest in computer vision and always wondered how things like feature tracking magically work in some open-source projects. After taking part in the coursera course Robotics:Perception, I decided to just try it out myself and learn :)
The goal is to:
- Creating a visual odometry pipeline from scratch (see below) extracting poses from monocular camera images
- Implementing some of the major algorithms (like feature detection, description, especially ORB would be interesting) myself
- Having fun, so please pardon the lack of testing and documentation. I do enough of this at work.
All individual parts of an ORB detector-descriptor-matcher chain are implemented:
- Oriented FAST detector
- Rotated BRIEF descriptor
- LSH matcher
Additionally, delta pose reconstruction between subsequent frames is implemented
A python package can be built optionally that exposes the Master interface.
Finally there is some output :)
Using the application runKittiDemo.exe in apps/ it is possible to visualize matched features in an camera image stream. This app is currently hard coded to KITTI image sequence 0:
runKittiDemo.exe <path-to-camera-images> e.g. runKittiDemo.exe ./test/*.jpg
Additionally there is a python script for running the KITTI sequence + comparing it to the ground truth
python runKittiDemp.py -i <camera-images-dir> -r <ground_truth_textfile>
The following dependencies are placed in the folder 3rdparty:
The following dependencies are required as CMake package:
- swig (optionally for python package)
- python (optionally for python package)