NASA Goddard Space Flight Center has developed FlashPose, a relative navigation measurement software and VHDL for spaceflight missions requiring vehicle-relative and terrain-relative navigation and control. FlashPose processes real-time or recorded range and intensity images from 3D imaging sensors, such as LiDARs, and compares them to known models of the target surfaces to output the position and orientation of the known target relative to the sensor coordinate frame. All algorithmic processing takes place in the software application, while custom FPGA firmware interfaces directly with the Ball Vision Navigation System (VNS) LiDAR and provides imagery to the algorithm.
FlashPose is a combination of software written in C and FPGA firmware written in VHDL. It is designed to run under the Linux OS environment in an embedded system or within a custom development application on a Linux workstation. The algorithm is based on the classic Iterative Closest Point (ICP) algorithm.
Basically, the algorithm takes in a range image from a 3D imager, filters and thresholds the image, and converts it to a point cloud in the Cartesian coordinate system. It then minimizes the distances between the point cloud and a model of the target at the origin of the Cartesian frame by manipulating point cloud rotation and translation.
This procedure is repeated a number of times for a single image until a predefined mean square error metric is met; at this point, the process repeats for a new image. The rotation and translation operations performed on the point cloud represent an estimate of relative attitude and position, otherwise known as pose.
In addition to 6-degrees-of-freedom (DOF) pose estimation, FlashPose also provides a range and bearing estimate relative to the sensor reference frame. This estimate is based on a simple algorithm that generates a configurable histogram of range information and analyzes characteristics of the histogram to produce the range and bearing estimate. This can be generated quickly and provides valuable information for seeding the FlashPose ICP algorithm as well as external optical pose algorithms and relative attitude Kalman filters.