giant.relative_opnav

This package provides the required routines and objects to extract observables to targets in an image.

Description

In GIANT, Relative OpNav refers to the process of extracting observables from monocular images of non-star targets. These observables can take many different forms, and are usually fed to some type of filter or estimator to use in refining the knowledge of the relative state between the camera and the target. Some of the most common forms of RelNav measurements are bearing observables to the center of figure of an object, bearing observables to a surface feature on a target, bearing measurements to points on the illuminated limb of a target, full 3DOF relative position measurements between the camera and the center of figure of the target, and constraint measurements (or bearing measurements to the same, possibly unknown, feature in multiple images. In addition to the different types of observables that can be extracted from images, there are also many different techniques for extracting these observables. Taken together, all of these choices can make doing RelNav and writing code to do RelNav confusing and difficult. Therefore, as with the StellarOpNav class, in GIANT we have made a single user interface to handle most of these techniques and make doing RelNav significantly easier in the form of the RelativeOpNav class.

The RelativeOpNav class is generally the only interface a user will require when performing relative OpNav. Indeed, in most cases, doing RelNav using this class is as simple as initializing the class with some basic settings and then calling auto_estimate(), which will attempt to automatically deduce what technique is best suited for extracting observables from the images based on what is expected to be seen in the images and apply those techniques to the images. This means it is largely possible to do RelNav without having a super in-depth understanding of what exactly is going on, though at least a basic understanding certainly helps. For those with an in-depth understanding, the RelativeOpNav class also provides easy access to many of the sub-steps required, allowing for more fine-grained control and more advanced analysis.

This package level documentation only focuses on the use of the class to do RelNav for typical cases. If you need a deeper understanding of what is going on, or you need to do some advanced analysis (or possibly even create your own RelNav technique) then we encourage you to read the sub-module/package documentation from this package (relative_opnav.estimators, relnav_class, and relative_opnav.visualizer)

Tuning for Successful Relative OpNav

Tuning is generally simple for most relative OpNav techniques, especially when compared to stellar OpNav. In most cases, the only tuning parameter you really need to worry about is the extended_body_cutoff. This knob tells the auto_estimate() method when to switch from using the unresolved technique, where the target in the image is assumed to be dominated by the point spread function of the camera, to using resolved techniques based on the shape representation of the target. Typically you want this set around 5-10 pixels, though if you have a particularly large PSF for your camera then you may want to increase this slightly. Beyond that, at least for method auto_estimate(), most of the default tuning parameters should be sufficient to get pretty good RelNav results. If you need more control over the tuning for individual techniques you should refer to their module documentation which you can get to from relative_opnav.estimators.

Modules

relnav_class

This module provides a subclass of the OpNav class for performing relative OpNav.

estimators

This package provides an abstract base class that defines the interface GIANT expects for Relative OpNav techniques as well as concrete implementations some of the most commonly used RelNav techniques.

Classes

RelativeOpNav

This class serves as the main user interface for performing relative optical navigation.