News Archive

12.04.2017

Nonlinear Estimation Toolbox 1.5.1 released!

Changes

  • Fixed unnecessary computation of Hessians in MeasurementModel and MixedNoiseMeasurementModel if only Jacobians are requested.

  • The PGF now overwrites the moment computations for the state prediction in order to exploit the fact that all samples used by the LCD-based Gaussian sampling technique are equally weighted.

  • Moved predictedMomentsMixedNoise() implementation to GaussianFilter in order to avoid unnecessary code duplication.

  • New and improved unit tests.

  • Updated Eigen linear algebra library to version 3.3.3.

  • Various code cleanups and documentation improvements.

11.04.2017

Improved documentation for Estimators and Measurement Models.

26.02.2017

Improved documentation for System Models.

14.01.2017

Nonlinear Estimation Toolbox 1.5 released!

Changes

  • Added the regularized particle filter (class RPF).

  • The UKF uses individual sample scalings for prediction and update.

  • The GHKF uses individual number of quadrature points for prediction and update.

  • The S2KF now overwrites the moment computations for the state prediction and the measurement update in order to exploit the fact that all samples used by the S²KF are equally weighted. This reduces runtime and has numerical benefits.

  • The LCD-based Gaussian sampling (GLCD) now uses different bMax for different dimensions by default.

  • Analogous to the SampleBasedJointlyGaussianPrediction interface, the FOTaylorBasedJointlyGaussianPrediction and SOTaylorBasedJointlyGaussianPrediction interfaces are added to separate the first-order and second-order Taylor series based prediction from the EKF and EKF2, respectively.

  • State covariance matrices of Gaussian filters (subclasses of GaussianFilter) are now guaranteed to be symmetric.

  • LinearSystemModel.analyticPredictedMoments() guarantees a symmetric predicted state covariance matrix.

  • LinearMeasurementModel.analyticMeasurementMoments() guarantees a symmetric measurement covariance matrix.

  • Utils.getMeanAndCov() and Utils.getMeanCovAndCrossCov() guarantees a symmetric measurement covariance matrix in case of non-equally weighted samples.

  • Utils.decomposedStateUpdate() guarantees a symmetric posterior covariance matrix. Note that Utils.decomposedStateUpdate() now additionally requires the square root of the prior covariance matrix and the square root of the already updated state covariance matrix.

  • Refactoring of the GaussianFilter measurement updates: the GaussianFilter class now handles the state decomposition. As a consquence, subclasses of GaussianFilter now have to implement performUpdateObservable() rather than performUpdate().

  • All GaussianSampling subclasses can now be copied with the copy() method.

  • Although the Filter interface already inherits from matlab.mixin.Copyable, not all implemented filters could be correctly copied (in particular filters that inherit from LRKF). This is now fixed. Using the copy() method, for example, Gaussian mixture estimators can now be easily created by configuring a GaussianFilter subclass (e.g., select number of samples in the S2KF) and copy it several times to get an identical filter instance for each Gaussian mixture component.

  • In addition, the Filter.copyWithName() method is introduced to be able to give the copied filter instance a different name. The standard copy() method also copies the name of the filter instance to be copied. However, a filter cannot change its name after construction. If it is desired to have different names for different copies of a filter instance, use this method to select proper names during the copy procedure, e.g., to put several copies of a filter instance in the same FilterSet (which requires the filters to have different names to allow for a unique identification).

  • GaussianMixture.drawRndSamples() now additionally returns for each sample the ID of its corresponding component.

  • New and improved unit tests.

  • Various code cleanups and documentation improvements.

  • When compiling MEX files with compileMexOpenMP(), OpenMP is disabled by default on Mac OS.

  • Updated Eigen linear algebra library to version 3.3.1.

07.10.2016

Nonlinear Estimation Toolbox 1.4 released!

Changes

  • Added the second-order EKF (EKF2). This also includes its iterated version (analogous to the iterated EKF).

  • The derivative() methods of all system models and measurement models now additionally return the Hessians (required for EKF2). By default, the Hessians are computed using central finite differences.

  • Utils.diffQuotientState() and Utils.diffQuotientStateAndNoise() now additionally compute approximative Hessian matrices using central finite differences. This also changes the Jacobian approximation from forward finite differences to central finite differences.

  • Updated the Eigen linear algebra library to version 3.2.10.

  • Various code cleanups.

  • Fixed bug #4: Please add second order EKF.

23.09.2016

Nonlinear Estimation Toolbox 1.3 released!

Changes

  • All subclasses of GaussianFilter can now perform a semi-analytic filter step by using a state decomposition. That is, if the considered measurement model/likelihood function does not depend upon the entire system state, the update of the non-dependent state variables can be performed in closed-form. It can be enabled with the setStateDecompDim() method. Currently, it is available for all subclasses of KF (AnalyticKF, CKF, EKF, GHKF, RUKF, S2KF, UKF), the PGF, and the GPF.

  • The GaussianSamplingUKF and UKF can now be configured such that the weight of the mean sample is negative.

  • Updated the Eigen linear algebra library to version 3.2.9

  • The state prediction for subclasses of GaussianFilter was massively refactored to improve code reuse and code quality. As a side effect, the EKF can now work with AnalyticSystemModels. Moreover, the interface SampleBasedGaussianFilter was removed and the interface SampleBasedJointlyGaussianPrediction added. Subclasses of GaussianFilter now have to implement the predictedMoments*() methods.

  • The KF measurement update was massively refactored to improve code reuse and code quality. As a side effect, the EKF can now work with AnalyticMeasurementModels. Subclasses of KF now have to implement the getMomentFunc*() methods.

  • Fixed a bug when evaluating the logarithmic PDF of a GaussianMixture consisting only of a single component.

03.07.2016

Nonlinear Estimation Toolbox 1.2.1 released!

Changes

  • Minor bug fixes

  • Some refactoring of Kalman filter code

  • Updated the Eigen linear algebra library to version 3.2.8

  • Implemented analytic derivatives for linear models

  • Added unit tests for model derivatives

14.11.2015

Nonlinear Estimation Toolbox 1.2 released!

Changes

  • Unified naming scheme in error messages for supported system models and measurement models

  • Fixed bug in PF: number of particles was not updated when setting the system state with a DiracMixture

  • Moved the resamling step of SIRPF and ASIRPF from the end of the measurement update to the beginning of predict(), update(), and step() to obtain more accurate point estimates

  • Default compiler flags in compileMex() function are now also set when compiling on Mac OS

  • Added compileMexOpenMP() function that automatically enables OpenMP when compiling a MEX file

  • Fixed some warnings in C++ code

  • Updated the Eigen linear algebra library to version 3.2.7

  • Enabled OpenMP when computing Gaussian LCD samples

  • Set default bMax value to 200 when computing Gaussian LCD samples

  • Updated GLCD MEX files for Windows and Linux

13.10.2015

Nonlinear Estimation Toolbox 1.1 released!

Changes

  • Added a Filter.step() method in order to perform combined time and measurement updates

  • Added also a FilterSet.step() method

  • Added new abstract base class BasePF for particle filters

  • Added a Gaussian Particle Filter with combined time and measurement update (CGPF)

  • Added the Auxiliary SIR Particle Filter (ASIRPF)

  • Added unit tests for CGPF

  • Added unit tests for ASIRPF

  • Added unit tests for the GaussianFilter, SampleBasedGaussianFilter, KF, LRKF, and PF interfaces

  • Added missing additive noise dimensionality checks to GPF the when dealing with AdditiveNoiseSystemModel or MixedNoiseSystemModel

  • For better code reuse and reliability, EnKF, SIRPF, ASIRPF, and CGPF now use the same code for state predictions, and SIRPF and GPF the same code for likelihood evaluations

  • Improved the numerical stability of the GaussianMixture logarithmic pdf

  • Utils.resampling() and Utils.systematicResampling() now additionally return the indices of the samples that were resampled from

  • Updated the Eigen linear algebra library to version 3.2.6

  • Fixed bug in UKF.getSampleScaling()

  • Fixed bug in L-BFGS C++ code

  • Fixed bug in GPF unit test

  • Updated GLCD MEX files for Windows and Linux

  • Various code cleanups

  • Fixes bug #3: Add the Auxiliary SIR Particle Filter to the toolbox

03.08.2015

Nonlinear Estimation Toolbox 1.0.2 released!

Changes

  • Fixes bug #5: Better handle errors related to the GLCD MEX files

22.07.2015

Nonlinear Estimation Toolbox 1.0.1 released!

Changes

  • Fixes bug #1: SIRPF cannot handle DiracMixture distributions when setting the system state

  • Fixes bug #2: Inconsistent behavior when creating DiracMixture distributions

  • Adds unit tests for Utils and SIRPF classes

02.07.2015

Nonlinear Estimation Toolbox 1.0 released!