In an GPS denied environment one option to track the own position is with a camera which is mounted to see the ground directly from above. With a quadcopter this could be archived with a gimbal.
Two other preconditions are that the ground has good visible structures and there is sufficient light.
With OpenCV there are different optical flow methods available. The first approach used
Lucas-Kanade to track the points in the picture. To detect the movement of the cam it
used just a median of max 100 points. But this approach did not work very well.
The second approach was to build with max 21 points some triangles. There are a lot of
advantages with this triangle approach.
- Check possible if the triangle has the same ratio on the sites
- Calculate the middle of the triangle to calculate the translation
- Calculate the rotation of the triangle
- Calculate the scale of the triangle
In the screencast you can see that it works quite well.
The video to track was recorded with the smartphone and the screencast was done on a laptop of course.
But as you can see on the video, not only the movement can be tracked also the orientation and the distance.
Of course the movement related to the ground has to calculated together with the distance and the rotation.
Because of accumulating errors this navigation is not as exact as with GPS, but dependingon the scenario it might be good enough.