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!
- 02.07.2015
Nonlinear Estimation Toolbox 1.0 released!