1. A method comprising: receiving a three-dimensional set of range data including a plurality of points from one or more range finders; extracting one or more surface features, wherein extracting includes: segmenting the set of range data into a plurality of surfaces based on one or more edges; selecting one or more of the plurality of surfaces as the one or more surface features; and describing the one or more surface features based on a generic descriptor that can describe both planar and non-planar surface features; and using the one or more surface features to calculate one of a relative angle and orientation between the set of range data and at least one other set of range data, a rotation and translation of an object in the set of range data with respect to the object in at least one other set of range data, a rotation and translation between the set of range data with and at least one other set of range data, or a navigation solution based on the set of range data and at least one other set of range data.