EECS 442 Slam Final Project
Our Computer Vision final project centered around Simultaneous localization and mapping (SLAM), which is a famous problem in robotics, where a computer system at-tempts to construct a map of its environment, while simul-taneously maintaining knowledge of its position within that map.
The goal of our project is to produce an effective SLAM system using only a single, ordinary (2D) camera for sensory input. This type of camera is ubiquitous in our modern, digital world, so our SLAM algorithm could easily be applied to almost any mobile device.
The Final Project Report Specification can be found in report specification
A summary of our findings can be found in our report for EECS 442: Computer Vision course at the University of Michigan during the Winter 2021 Semester. You can view our latest report on Overleaf.
Our source code for conducting SLAM and analyzing our data can be found in the src folder.
The motivation for this project came from our first team meeting, where we discovered a common interest in Autonomous Vehicles, as well as robotic systems that use advanced technniques such as SLAM. We came to the realization that SLAM has a vast number of real world practical applications across a growing variety of fields and disciplines. After a group conversation, we determined that this would be quite a fascinating project to move forward with to further explore our interest in this subdiscipline of Computer Vision.
We were able to obtain the data we needed for this project from the ETH3D dataset. With the video sequences and ground truth camera poses taken from ETH3D, we were able to both qualitatively and quantitatively analyze the quality of our results. :
In order to fetch all of the data we collected, we simply build and run the following shell script:
chmod +x download_dataset.sh
./download_dataset.sh
Running this shell script would effectively import all the data from the ETH3D website to our created data folder.
- Numpy
- conda install -c anaconda numpy
- Matplotlib
- conda install -c conda-forge matplotlib
- OpenCV
- conda install -c menpo opencv
- OpenCV Documentation on Feature Extraction and Matching
- OrbSLAM Monocular SLAM
- Monoslam Real Time Camera SLAM
- Monocular SLAM for Visual Odometry
- SURF, Speeded up Robust Features
- Junction Tree Filters for SLAM
- Distinctive Image Features from Scale Invariant Keypoints
- Other Monocular Visual Odometry Github Implementation