Redundant sigma points in Unscented Kalman Filter?

361 Views Asked by At

According to the Unscented Transform equations in an Unscented Kalman Filter, sigma points are chosen via:

$\chi^{[0]}=\mu$

$\chi^{[i]}=\mu+\left(\sqrt{(n+\lambda)\Sigma}\right)_i\;\;\;i=1,...,n$

$\chi^{[i]}=\mu-\left(\sqrt{(n+\lambda)\Sigma}\right)_{i-n}\;\;\;i=n+1,...,2n$

where $\mu$ is a vector of variable means, $\Sigma$ is the covariance matrix of the variables, and $n,\lambda$ are tuning parameters.

In order to take the square root of $\Sigma$, the literature suggests performing a Cholesky LL' transformation and using the resulting L as the matrix "square root".

With L being a lower triangle matrix, the upper triangle is obviously all zeros. This ultimately populates the $\chi$ matrix (sigma points) with several redundant copies of the mean $\mu$.

These redundant sigma points would obviously be a poor choice, as:

  • they wouldn't spread out to sample the nonlinear function well
  • they waste repeated computation on the same values

A simple example:

Assume $(n+\lambda)=1$

Using Cholesky LL decomposition:

$\Sigma=LL^*$

$\sqrt\Sigma=L=\begin{bmatrix}L_{0,0}&0&0\\L_{1,0}&L_{1,1}&0\\L_{2,0}&L_{2,1}&L_{2,2}\end{bmatrix}$

Substituting this back in to the equations for $\chi$:

$\chi= \begin{bmatrix} \mu_0&\mu_0+L_{0,0}&\mu_0&\mu_0&\mu_0-L_{0,0}&\mu_0&\mu_0\\ \mu_1&\mu_1+L_{1,0}&\mu_1+L_{1,1}&\mu_1&\mu_1-L_{1,0}&\mu_1-L_{1,1}&\mu_1\\ \mu_2&\mu_2+L_{2,0}&\mu_2+L_{2,1}&\mu_2+L_{2,2}&\mu_2-L_{2,0}&\mu_2-L_{2,1}&\mu_2-L_{2,2} \end{bmatrix}$

As you can see, the top two variables (rows) have sigma points that are made up of redundant values of the variable mean.

Am I doing something wrong in my calculations, or does the use of Cholesky decomposition really result in a poor choice of sigma points?

1

There are 1 best solutions below

1
On

Looking back on this after implementing it, I had forgotten that each COLUMN represents a version of the state vector, not each ROW. So the selection of sigma points using the standard unscented transform does work well, as each column (state vector) is completely different. Duh!