The purpose of this project is to demonstrate understanding of SLAM concepts and techniques by implementing them in from (mostly) scratch in C++.
SLAM or Simultaneous Localization And Mapping is a set of algorithms used in Robot Navigation, Robotic Mapping, Virtual and Augmented Reality. It works by constructing or updating a map of an unknown environment while simultaneously keeping track of the robot (or user's) location within the map (1).
The Visual in VisualSLAM refers to using images, rather than laser scans as the basis for creation of the environment map and for understanding the robot's location within it.
VisualSLAM is typically broken down into a few steps. Each of these steps can be performed using different algorithms, I explore a few in this project:
Ultimately these steps are tied together to create a SLAM solution.
This project is written in C++ 17 and should be compatible with any C++ 17 compiler. It uses the most recently available versions of the following dependencies:
- Linux - Ubuntu 22.04
- GCC (version (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0)
- OpenCV C++ (I use version 4.7.0-dev, but versions 3.5+ should work)
- CMake (version 3.22.1)
- make (GNU Make 4.3)
- Git (version 2.34.1)
Note that different versions of these depencies may work just fine.
Verify that you have all requirements satisfied, then start by cloning the project to a preferred location.
cd ~/Documents
git clone https://github.com/JacobYoung115/VisualSLAM.git
cd VisualSLAM/KeyPointDetection
Make a build directory and build the project:
mkdir build
cd build
cmake ..
make
Tests that the executables built properly and are working by running:
./DoG
./Harris
./tests/Pyramid_Test
./tests/RotateImgTest