1. A method for real-time visual odometry, the method comprising: capturing a first three-dimensional image of a location at a first time; capturing a second three-dimensional image of the location at a second time that is later than the first time; extracting one or more features and their descriptors from each of the first and second three-dimensional images; matching one or more features from the first three-dimensional image with one or more features from the second three-dimensional image; and determining a change in rotation and a change in translation between the first and second three-dimensional images from the first time to the second time using a random sample consensus (RANSAC) process and an iterative refinement technique, wherein the iterative refinement technique comprises: receiving a first set of inliers and changes in rotation and translation for the first set of inliers outputted from the RANSAC process; scoring the changes in rotation and translation for the first set of inliers; operating on the first set of inliers using a least squares method in a first joint trial to produce a second set of inliers during a first iteration; computing changes in rotation and translation for the second set of inliers from the first joint trial; scoring the changes in rotation and translation for the second set of inliers from the first joint trial; and comparing the score of the changes in rotation and translation for the first set of inliers with the score of the changes in rotation and translation for the second set of inliers to determine appropriate outputs during the first iteration.