A landing system for Mars matches features seen in descent imagery against a map constructed from orbital imagery. The spacecraft attitude and altitude are known, but lateral position is known only poorly. From attitude and altitude, one can generate a mapping (homography) that allows the descent image to be warped into the orthonormal viewpoint of the map. The homography maps any pixel in the map image to the corresponding pixel in the descent image.
A homography is a 3×3 floating-point matrix. The process of mapping a pixel location (x,y) to the corresponding position (x',y') in a new image involves performing a dot product of the rows of the homography H by the vector (x,y,1), and calculating ratios of the various dot product results. Floatingpoint operations are very resource-intensive operations on an FPGA (field-programmable gate array). An FPGA implementation of the homography remapping process was developed to allow real-time performance to be achieved. The implementation uses a hybrid fixed/floating-point representation of H.
Remapping of points via a homography is quite natural in floating point. However, selecting a single fixed-point representation for every possible homography produces poor results. Instead, C code inspects the homography and chooses a hybrid floating/fixed point representation that preserves as many fractional bits as possible while avoiding overflows within the area of the image being manipulated. The representation includes a single integer term that specifies how many bits to shift left or right at one particular step in the calculation. In effect, the representation allows a limited form of floating point.
In C code, the representation is chosen, and all the elements of the homography matrix are converted to the representation. The representation is then passed to the FPGA where the remapping is performed. The remapping of 1K × 1K images has been demonstrated using Mars-like terrain taken from a helicopter at frame rates of 10 Hz using low-power, space-qualified hardware.
This technique is applicable whenever one is far enough from the ground that the ground can be modeled as a plane. Hence, there are likely applications for unmanned aerial vehicles (UAVs).