/VAMR_project

Course Project for Vision Algorithms for Mobile Robotics (UZH)

Primary LanguageMATLAB

VAMR_project

Complete Visual Odometry pipeline implemented in MATLAB for the course project "Vision Algorithms for Mobile Robotics" by Professor Davide Scaramuzza (University of Zurich). The pipeline was tested on three different datasets (Kitti-05, Malaga and Parking) and additonal Sliding Window Bundle Adjustment feature was added to improve the performance.

Please visit the following link for the evaluation results.

Computer Specifications

  • Processor: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
  • RAM: 16.0GB
  • Graphic Card: Nvidia GeForce RTX 2060 Labtop
  • Operating System: 64-bit Windows 10 Pro

Built With

  • MATLAB version R2021b
  • Library: Computer Vision Toolbox, Image Processing Toolbox

Getting Started

  1. Place KITTI, Malaga, Parking datasets(images) in the following location from the current folder, where project_main.m is located.
  • KITTI: ../data/kitti05/kitti
  • Malaga: ../data/malaga-urban-dataset-extract-07
  • Parking: ../data/parking
  • The path can be edited from the file get_ds_vars.m
  1. From project_main.m, set up video_file, ds, and ba_bool
  • video_file is the name of the result video which will be stored in the current folder.
  • ds is the testing dataset (0: KITTI, 1: Malaga, 2: parking).
  • ba_bool is the bundle adjustment boolean variable. Set true if you want to use the bundle adjustment.
  1. Run project_main.m. The generated video will be automatically saved in the current folder.

Function Details

  • detectHarrisFeatures: Detect harris corners
  • vision.PointTracker: Track points from one frame to the next using KLT
  • estimateFundamentalMatrix: Estimate fundamental matrix using 8-point ransac
  • relativeCameraPose: Recover the camera pose from the fundamental matrix
  • estimateWorldCameraPose: Estiame pose from 2D-3D correspondences using P3P ransac
  • worldToImage: Project 3D landmarks back into image plane
  • triangulate: Triangulate 3D landmarks using image points and poses of two frames
  • budleAdjustment: Pose and 3D landmarks Refinement
  • bundleAdjustmentMotion: Pose refinement while keeping the 3D landmarks fixed

Contact

(back to top)