Skip to content

Project for implementing Visual SLAM techniques (mostly) from scratch.

Notifications You must be signed in to change notification settings

JacobYoung115/VisualSLAM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 

Repository files navigation

VisualSLAM

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.

Breakdown

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:

1. Keypoint detection

2. Feature description / Image Matching

3. 3D Reconstruction

Ultimately these steps are tied together to create a SLAM solution.

Requirements

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.

Building and running the project

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

References

  1. Wikipedia SLAM
  2. Modern C++ for Computer Vision - 2021
  3. Modern C++ for CV - 2018
  4. Mobile Sensing and Robotics 2 - 2021
  5. SIFT
  6. CMake tutorials

About

Project for implementing Visual SLAM techniques (mostly) from scratch.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published