1. A method for navigation, comprising: constructing, with a processor, a current map that includes one or more two-dimensional or three dimensional representations of an area; detecting one or more edge features on the current map with the processor; generating a first fine-edge map based on the detected edge features on the current map with the processor; retrieving from a memory unit a historical map that includes one or more two-dimensional or three dimensional representations of the area; detecting one or more edge features on the historical map with the processor; generating a second fine-edge map based on the detected edge features on the historical map with the processor; generating a coarse version of the current map from the first fine-edge map with the processor; generating a coarse version of the historical map from the second fine-edge map with the processor; correlating the coarse version of the current map with the coarse version of the historical map with the processor to determine a first position and orientation; and correlating, with the processor, the first fine-edge map with the second fine-edge map using the first position and orientation to determine a second position and orientation that is more accurate than the first position and orientation.