Project 2 - Phase 2: Stereo Visual Odometry

Published:

  • Keywords: Stereo Visual Odometry (VO), Optical Flow, RANSAC, OpenCV
  • Coding language: C++, ROS (Docker with image: osrf/ros:kinetic-desktop-full-xenial, Visualization GUI: theasp/novnc:latest), RViz
  • Detailed code implementation can be found in the Github code repo

To implement the stereo VO, including feature detection, feature tracking, 3D point generation, and PnP-based pose estimation.

Estimated Path of the Camera in RViz Simulation Figure

estimated_path_stereo-vo_realsense1bag.png

Implementation Details

  • Feature Detection is based on the cv::goodFeaturesToTrack function, with no Harris Detector, and with input parameters (max_corners, quality_level, min_distance, block_size) = (300, 0.03, 12.0, 5)
  • Feature Tracking is based on the cv::calcOpticalFlowPyrLK function. In trackFeatureBetweenFrames, I use the rejectWithF function, which is based on cv::findFundamentalMat, to find outliers using RANSAC (from HKUST-VINS).
  • PnP-Based Relative Pose Estimation is mainly based on cv::solvePnPRansac and cv::Rodrigues.