JPLV Visual Odometry
| Algorithm Name: | Stereo visual ranging | Date: | Sep 19 2007 |
| Tech Provider: | Andrew Howard Steve Goldberg |
Institution: | JPL |
| Tech Integrator: | Andrew Howard |
Integration Level: | I |
Algorithm Summary
Purpose of algorithm:
The visodom module computes frame-to-frame camera motion from stereo data, using the left rectified and stereo disparity images as input. This module is usually used in conjunction with the stereo module. The visodom module is structed around the notion of a frame; for each frame, the caller inputs a pair of images and recovers the change in pose with respect to the previous frame. These delta poses are expressed as homogeneous transform and can be combined using matrix multiplication to yield an estimate for the trajectory of the camera. For each frame, we also compute a number of statistics (e.g.. number of matched features, RMS reprojection error) to measure the quality of the estimate.
Inputs:
- Left rectified image and left disparity image.
- Left and right rectified camera models.
- Tuning parameters to include: correlation window sizes, number of features to track.
Outputs:
- Six DOF motion estimate (x, y, z; roll, pitch, yaw), expressed as a homogeneous 4x4 matrix.
- Frame-to-frame feature correspondances.
- Check values used to assess the quality of the solution.
Assumptions:
- There must be sufficient overlap between successive image pairs (at least 30%).
Computational Requirements:
- On a P4 3.4 GHZ 1MB cache processor, running VO on a 512x384 image requires 20 ms (verify).
Algorithm Description
The complete algorithm is described in NTR 44490, and is based an approach described by Hirschmuller et al.:
The basic steps in the algorithm are:
- Run a fast corner detector on each frame.
- Match features between frames using the SAD scores over a local window.
- Prune false matches using a geometric consistency constraint.
- Estimate the camera motion.
- Check the motion estimate by projecting the previous frame into the current frame and evaluating the averaged absolute difference of pixel values.
Download/Run
To check out and build this algorithms:
- Set up your environment
yam checkout -d <sandbox> jpl_vision
cd <sandbox>
make all
- To run the stand-alone command-line visodom application against test data, type:
$ ./run jplv-visodom - To run the stand-alone command-line stereo application against other data, type:
$ ./run jplv-visodom - To build your own applications against the JPLV library, inspect the sample code in visodom_example.c
Known Bugs/Issues
- In highly structured environments, with many colinear structures, this algorithm may generate invalide pose estimate.
Bug Reporting
Please return all feedback and bug reports to: jplv-users@helios.jpl.nasa.gov.
Related Links
- JPLV package home page http://helios/~vision/jplv/index.shtml
New Technology Report (NTR) or Patent Numbers
Change Log
- [Sep 19 2007]: initial version