javaslam.filter
Class UnscentedTransformation

java.lang.Object
  |
  +--javaslam.filter.Linearization
        |
        +--javaslam.filter.UnscentedTransformation

public class UnscentedTransformation
extends Linearization

The Unscented Transformation for linearizing functions with Gaussian-distributed inputs. This technique selects a set of sigma points that characterize the Gaussian distribution of the input vector, passes these points through the nonlinear function, and then computes the best Gaussian approximation of their images.

This class records counts of all floating point operations using Flops.count(long).

See Also:
http://cslu.cse.ogi.edu/nsel/ukf/, "S. J. Julier and J. K. Uhlmann, "A new extension of the kalman filter to nonlinear systems," The Proceedings of AeroSense: The 11th International Symposium on Aerospace/Defense Sensing, Simulation and Controls, Orlando, Florida, 1997."

Field Summary
protected static LinearizationFactory factory
          A factory for creating linearizations using the unscented transformation.
 
Fields inherited from class javaslam.filter.Linearization
a, B, G, k, m, n, q, vSet, xSet, y, ySet
 
Constructor Summary
UnscentedTransformation(NoisyVectorFunction f, Gaussian px)
          Constructor.
UnscentedTransformation(NoisyVectorFunction f, Gaussian px, double alpha, double beta, double kappa)
          Constructor.
 
Method Summary
static LinearizationFactory getFactory()
          Returns a handle on a factory for creating linearizations using the unscented transformation.
 
Methods inherited from class javaslam.filter.Linearization
getCoefficient, getCoefficient, getConstantTerm, getDistribution, getNoiseCovariance, getOutputVariable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

factory

protected static LinearizationFactory factory
A factory for creating linearizations using the unscented transformation.

Constructor Detail

UnscentedTransformation

public UnscentedTransformation(NoisyVectorFunction f,
                               Gaussian px)
Constructor. The parameters used to choose sigma points are set at default values.

Parameters:
f - a vector function that takes a (n + m)-by-1 vector as input and returns a k-by-1 vector; the function's input is x stacked on top of v
px - a Gaussian distribution (in the moment parameterization) over the n-by-1 vector x (which can be partitioned into several sub-variables)
Throws:
IllegalArgumentException - if the sum dimension of px and pv does not match the input dimension of f

UnscentedTransformation

public UnscentedTransformation(NoisyVectorFunction f,
                               Gaussian px,
                               double alpha,
                               double beta,
                               double kappa)
Constructor.

Parameters:
f - a vector function that takes a (n + m)-by-1 vector as input and returns a k-by-1 vector; the function's input is x stacked on top of v
px - a Gaussian distribution (in the moment parameterization) over the n-by-1 vector x (which can be partitioned into several sub-variables)
alpha - a scaling parameter that determines the spread of the sigma points about the mean
beta - a parameter that is used to incorporate prior knowledge of the input distribution
kappa - a secondary scaling parameter
Throws:
IllegalArgumentException - if the sum dimension of px and pv does not match the input dimension of f
Method Detail

getFactory

public static LinearizationFactory getFactory()
Returns a handle on a factory for creating linearizations using the unscented transformation.

Returns:
a factory for creating linearizations