New version released! - please see in original post.
OpenCV has implementations of SURF and SIFT features, I think I have even seen someone implement positioning on OpenCV. So this should be possible.
One difficulty though is determining the initial pose of the camera.