shkolnick-kun 1 éve
szülő
commit
3e74be467a
2 módosított fájl, 19 hozzáadás és 0 törlés
  1. 9 0
      README.md
  2. 10 0
      doc/Python-Manual.md

+ 9 - 0
README.md

@@ -31,6 +31,15 @@ where:
 For all **EKF** variants we have **Bierman** and **Joseph** updates.
 For sequential UD-factorized **UKF** only **Bierman** updates have been implemented.
 
+Technically speaking all filters in YAFL are adaptive since all of them have at least measurement noice covariance atadpive adjustment.
+
+### Notes on process and measurement noice covariance adjustments
+We used [this paper](https://arxiv.org/pdf/1702.00884.pdf) to implement optional Q and R adaptive adjustments.
+Here are som notes on our implementation:
+* All filters in this lib have the optional measurement noice covariance adjustment which can be enabled by setting `rff` to a small positive number e.g. `1e-4`.
+* All EKF filters in this lib have the optional process noice covariance adjustment which can be enabled by setting `qff` to a small positive number e.g. `1e-4`.
+* None of UKF filters have the optional process noice covariance adjustment as it leads to filters instability.
+
 And yes, we [**can actually**](./doc/UsingEKFTricksWithSPKF.pdf) use **EKF** tricks with **UKF**!
 
 The library is written in C and is intended for embedded systems usage:

+ 10 - 0
doc/Python-Manual.md

@@ -103,6 +103,7 @@ The Kalman filter has these attrbutes:
 * `P = Up.dot(Dp.dot(Up.T))` which is state covariance matrix
 * `Q = Uq.dot(Dq.dot(Uq.T))` which is process noise matrix
 * `R = Ur.dot(Dr.dot(Ur.T))` which is measurement noise matrix
+* `rff` which is `R` forgetting factor used to ajust measurement noice covariance at runtime
 
 Since YAFL implements UD-factorized filters we don't have these attributes directly, but have vectors to store UD-decomposition elements of these attributes:
 * `Up :np.array((max(1, (dim_x * (dim_x - 1))//2), ))` is vector with upper triangular elements of P
@@ -112,6 +113,13 @@ Since YAFL implements UD-factorized filters we don't have these attributes direc
 * `Ur :np.array((max(1, (dim_z * (dim_z - 1))//2), ))` is vector with upper triangular elements of R
 * `Dr :np.array((dim_z, ))` is vector with diagonal elements of R
 
+### Notes on Q and R adjustments
+We used [this paper](https://arxiv.org/pdf/1702.00884.pdf) to implement optional Q and R adaptive adjustments.
+Here are som notes on our implementation:
+* All filters in this lib have the optional measurement noice covariance adjustment which can be enabled by setting `rff` attribute to a small positive number e.g. `1e-4`.
+* All EKF filters in this lib have the optional process noice covariance adjustment which can be enabled by setting `qff` attribute to a small positive number e.g. `1e-4`.
+* None of UKF filters have the optional process noice covariance adjustment as it leads to filters instability.
+
 ### EKF stuf
 The base class for all **EKF** variants is
 ```Python
@@ -123,6 +131,8 @@ where:
 
 This class extends `yaflpy.yaflKalmanBase`. This class is not supposet to be used directly.
 
+**NOTE: In addition to `rff` all EKF variants have `qff` attribute which is `Q` forgetting factor used to ajust process noice covariance at runtime**
+
 #### Basic EKF variants
 Basic UD-factorized **EKF** variants are:
 ```Python