{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Unscented Kalman filter (UKF)\n", "\n", "Some problems of the extended Kalman filter:\n", "\n", "* linearization: considers only first-order Taylor term in the expansion\n", "* it is tedious to calculate the Jacobian matrix\n", "* filter parameters are difficult to adjust, sometimes filter estimates a diverging system state\n", "\n", "Experience tells the unscented Kalman filter (**UKF**) is as good or even better.\n", "\n", "\n", "\n", "Where did this bizarre name come from? Its inventor, Jeffrey Uhlmann tells us:\n", "\n", "\"What's with the Name „Unscented”? „Initially I only referred to it as the \"new filter\". Needing a more specific name, people in my lab began referring to it as the \"Uhlmann filter\", which obviously isn't a name that I could use, so I had to come up with an official name. One evening everyone else in the lab was at the Royal Opera House, and as I was working I noticed someone's deodorant on a desk. The word \"unscented\" caught my eye as the perfect technical term. At first people in the lab thought it was absurd - which is okay because absurdity is my guiding principle” [Jeffrey Uhlmann](http://ethw.org/First-Hand:The_Unscented_Transform )\n", "\n", "## The main idea of UKF\n", "\n", "Kalman filtering makes propagation of system state with a Gaussian pdf and measurement update through a linear transform. As it is more easy to approximate a Gaussian pdf, or more generally an arbitrary pdf than a nonlinear transform, therefore we keep nonlinear transform and approximate parameters (expectation and covariance) of the Gaussian pdf by using a set of discrete points (**sigma points**). This is the essence of **unscented transform** (and unscented Kalman filter):\n", "\n", "1. choose sigma points to characterize exactly mean and covariance of system state\n", "2. transform sigma points by nonlinear transforms $f$, $h$ into system and measurement space\n", "3. approximate mean and covariance of system state from transformed sigma points\n", "\n", "\n", "\n", "This procedure is a relative of *Monte-Carlo* methods. Only discrete points are chosen deterministically instead of randomly.\n", "\n", "### Sigma points\n", "\n", "\n", "