Better introduction.

Added Dan Simon's example of a range/bearing with noise to illustrate
nonlinear behavior.
This commit is contained in:
Roger Labbe committed 2014-11-24 17:57:24 -08:00
1 parent 3e5248f7fa
commit c05c04a94e
1 file changed
+106 -50
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:a2e52b61eda730d642e07ed11f2d1d9c5d578591c7ac587dc7afee8425ce3e4d"
"signature": "sha256:0c0bb47419d5cc93676b016c0494006e579ca5b7c7b773014800489a190f0e42"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -43,6 +43,8 @@
"html": [
"<style>\n",
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
"@import url('http://fonts.googleapis.com/css?family=Vollkorn');\n",
"@import url('http://fonts.googleapis.com/css?family=Arimo');\n",
"\n",
" div.cell{\n",
" width: 850px;\n",
@@ -129,9 +131,9 @@
" white-space: nowrap;\n",
" }\n",
" div.text_cell_render{\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" font-family: 'Arimo',verdana,arial,sans-serif;\n",
" line-height: 135%;\n",
" font-size: 110%;\n",
" font-size: 125%;\n",
" width:750px;\n",
" margin-left:auto;\n",
" margin-right:auto;\n",
@@ -141,12 +143,12 @@
" div.output_subarea.output_text.output_pyout {\n",
" overflow-x: auto;\n",
" overflow-y: scroll;\n",
" max-height: 300px;\n",
" max-height: 50000px;\n",
" }\n",
" div.output_subarea.output_stream.output_stdout.output_text {\n",
" overflow-x: auto;\n",
" overflow-y: scroll;\n",
" max-height: 300px;\n",
" max-height: 50000px;\n",
" }\n",
" code{\n",
" font-size: 70%;\n",
@@ -259,7 +261,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x7fb4016249e8>"
"<IPython.core.display.HTML at 0x7f4785982630>"
]
}
],
@@ -269,12 +271,57 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"In the previous chapter we developed the Extended Kalman Filter to allow us to use the Kalman filter with nonlinear problems. It is by far the most commonly used Kalman filter. However, it requires that you be able to analytically derive the Jacobian blah blah limp prose.\n",
"In the previous chapter we developed the Extended Kalman Filter to allow us to use the Kalman filter with nonlinear problems. It is by far the most commonly used Kalman filter. However, it comes with a lot of difficulties and limitations. For example, it requires that you be able to analytically derive the Jacobian. However, for many problems finding the Jacobian is either very difficult or impossible. Furthermore, being an approximation, the EKF can diverge. I particularly like this way of looking at the problem, which I am borrowing from Dan Simon's *Optimal State Estimation* [1]. Consider a tracking problem where we get the range and bearing to a target, and we want to track it's position. Suppose the distance is 50km, and the reported angle is 90$^\\circ$. Now, given that sensors are imperfect, assume that the errors in both range and angle are distributed in a Gaussian manner. That is, each time we take a reading the range will be $50\\pm\\sigma^2_{range}$ and the angle will be $90\\pm\\sigma^2_{angle}$. Given an infinite number of measurements what is the expected value of the position?\n",
"\n",
"I have been recommending using intuition to solve problems in this book, so let's see how it fares for this problem (hint: nonlinear problems are *not* intuitive). We might reason that since the mean of the range will be 50km, and the mean of the angle will be 90$^\\circ$, that clearly the answer will be x=0 km, y=90 km.\n",
"\n",
"However, for many problems finding the Jacobian is either very difficult or impossible. Furthermore, being an approximation, the EKF can diverge. For all these reasons there is a need for a different way to approximate the Gaussian being passed through a nonlinear transfer function. In the last chapter I showed you this plot:\n",
"Well, let's plot that and find out. Here are 300 points plotted with a normal distribution of the distance of 0.4 km, and the angle having a normal distribution of 0.35 radians. We compute the average of the all of the positions, and display it as a star. Our intutition is displayed with a triangle."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from numpy.random import randn\n",
"import matplotlib.pyplot as plt\n",
"import math\n",
"\n",
"**author's note - need to add calculation of mean/var to the output.**"
"xs, ys = [], []\n",
"N = 300\n",
"for i in range (N):\n",
" a = math.pi / 2. + (randn() * 0.35)\n",
" r = 50.0 + (randn() * 0.4)\n",
" xs.append(r*math.cos(a))\n",
" ys.append(r*math.sin(a))\n",
"\n",
"plt.scatter(xs, ys, label='measurements')\n",
"plt.scatter(sum(xs)/N, sum(ys)/N, c='r', marker='*', s=200, label='mean')\n",
"plt.scatter(0, 50, c='k', marker='v', s=200, label='intuition')\n",
"plt.axis('equal')\n",
"plt.legend()\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f4760d324a8>"
]
}
],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that out intuition failed us because the nonlinearity of the problem forced all of the errors to be biased in one direction. This bias, over many iterations, can cause the Kalman filter to diverge.\n",
"\n",
"For all these reasons there is a need for a different way to approximate the Gaussian being passed through a nonlinear transfer function. In the last chapter I showed you this plot:"
]
},
{
@@ -298,13 +345,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAGDCAYAAAAlC6awAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdUFNffBvBn6U2QJgiC2EEQFBWsoIi9YE9iYkjUJLbY\nW4waozEaNWqimKImlqg/Kwr2hiAWRBQ7GLGA2BAQROnw/sHLRgSBZRdmln0+53Bkh9mZh2G8+927\nd+5IoqOj80FEREREpCLUhA5ARERERFSVWAATERERkUphAUxEREREKoUFMBERERGpFBbARERERKRS\nWAATERERkUphAUxERKRinj9/jrFjx8LNzQ329vYYPny40JFKtGfPHnTr1g2Ojo6wt7dHeHi40JEq\n7NGjR7C3t4e/v7/QUQiAhtABiMpy4sQJxMfHw9fXt8r3HRYWhvDwcIwfP77K901E4nD79m2cOHEC\nn332GWrUqCF0HIVYsmQJIiIiMG7cOJiYmMDMzEzoSMXExMRgzpw56Nq1K8aOHQt1dXXUr19f6FhF\nyPoaIZFIIJFIKjkVlQcLYBK9EydO4OLFi4IUwBcvXoSfnx8LYCIVdvv2bfj5+WHQoEHVpgAOCwuD\nj4+PIO1qeV28eBH5+flYtGiRaI+7LK8RderUwdWrV6GhwdJLDPhXICIiKof8/Opz49SkpCQYGhoK\nHaNUiYmJACDa4rcitLS0hI5A/49jgEmh4uLiMGHCBLi5ucHFxQUDBw7E8ePHi6xjb2+PNWvWFFm2\nd+9e2Nvb4/HjxwD+Gytlb2+Pffv24fHjx9LH7z4/LCwM9vb2OHToEMaOHYsWLVqgQ4cOWLZsGXJy\ncorsx8vLC998802RZYXPf3tsWeF+/Pz8ijy2t7cv9nwiqp68vLxgb2+P2bNnAwC6dOkibQdKGjM7\na9YseHl5ISkpCVOmTIGbmxtcXV3x8ccfIzMzEwAQHR2Nb7/9Ft27d0fz5s3RunVrjBo1CpGRkUW2\nVdguBQcHY86cOXBzc0OHDh3w008/IS8vr9i+Dx8+jEGDBqFly5Zwc3PD4MGDsX379iLrrF69Wpo/\nPz8fa9asee/vk5+fj02bNqF3795wdnZGhw4dsGDBArx+/brYvgvb79jYWKxcuRIeHh5wcXFB3759\ncfPmTdkOOlCsnX+7/X27nS483iU9v6TXiPIey6ysLPj5+aFnz55wdnZGx44dMXXqVDx48KBYxvK8\nRixYsKDIz0sbA3z48GEMGDAALi4ucHd3x6RJkxAfH19kncLjfe3aNUyYMAGurq7o3Lkz1q9fX8pR\npXexB5gUJiUlBcOGDcPr16/h6+sLExMT+Pv7Y8KECVi1ahW6d+9e7m2Zmppi2bJlAIAdO3YgJiZG\n+iIEAE2aNCn2nB9++AHOzs6YPn06Ll++jA0bNuDNmzf47rvvZP5dCvd97NgxHD9+XPoYAGxtbWXe\nHhEpn9mzZyM9PR3h4eHYuXMnZs+eDWNjYwAoccysRCJBfn4+Ro0aBXNzc0yYMAEZGRk4efIksrOz\noa2tjdDQUFy4cAF9+vRB3bp1kZSUhJ07d+LTTz/Fzp07YW9vX2SbP/74IxwdHTFlyhScO3cOf//9\nN6ysrIoUrOfPn8fkyZPRokULTJ06FQAQFRWFoKAgfPTRR9L1unXrBjs7O+Tn52PGjBno1q0bunbt\nWuLvM3fuXOzZswf9+vWDr68v4uLi8M8//+Dff//F5s2bSxzH+tNPPyE2NhaffPIJ9PX1ERERgefP\nn8PR0VGm415a+/vuGGBZxtOW51jm5ubiq6++wvnz59GjRw8MHz4c2dnZOHbsGEJCQmBnZ1dmxndf\nIwYMGIAWLVogKSkJixcvfm/mQ4cOYcqUKXB0dMS0adOQmJiITZs2ITIyEoGBgcV6wmfOnAk3NzfM\nmDEDhw8fxvLly1G/fv0S3xRQcSyASWG2bt2KhIQE+Pn5oUuXLgCAwYMHo3v37li5cqVMBbCuri76\n9u0LADh79iyePHkiffw+9evXx++//w4AGDZsGHJzc7Fjxw6MHj0aFhYWMv0uhft68OABjh8/Xua+\niaj68fb2BgBkZ2dj586d8Pb2hpWV1XvXz8/Px5MnT9C5c2fMmzdPunzUqFHS7318fDBixIgiRVCP\nHj3g7e2NHTt2FHvD3rhxY6xYsQIA8OGHH6Jbt244efJkkaLt9OnTAIC1a9dKC3SgoJh7W5MmTaSd\nBzNmzEDjxo1LbNvCw8Oxe/duTJ48GV999VWR50+bNg1nzpyBh4dHsec9ffoUe/bskX7M//HHH5fY\nw1oWWdpfWYallOdY7tu3D+fPn8fEiRMxZswY6XJfX18kJCRUKGOzZs3QrFkzPHr0CIsXL37veqtW\nrYKFhQW2bt0KHR0dAICTkxPGjx+P7du348svvyyyvqenJ2bNmgWg4Lzq0KEDTp48yQK4nDgEghTm\nwoULqFmzprT4BQoK2R49euDBgwd49uxZhbddnkauT58+RR7369cPeXl5uHjxYoX3S0Qkq7cLp3eZ\nmZlJi9/s7GwkJydDT08PxsbGiI2NLbb+ux0H9vb2ePLkSZFl+vr6AAp6gt+mrq5eofxHjhyBRCJB\njx49kJSUJP0q7Ml931RkI0aMKDbGVU1NPGVGeY7lsWPHoKuri5EjRxZ7vrm5eaVle/z4MWJjY9Gz\nZ09p8QsUDLsxMjLChQsXij3n7d9HV1cX9erVw9OnTystY3XDHmBSmGfPnqF27drFlhf2mDx79kzm\nnlhZvLtvS0tLAGCDQERVxtDQsNRCKS0tDX/++Sf27duHhISEIm/uC8cJv+3dbenp6SE7O7vIsmHD\nhuHw4cOYMmUKli5diubNm6N9+/bw8fGp0EVXDx8+RH5+fomf2kkkEiQnJ5f4vAYNGsi8r6pUnmMZ\nGxuLOnXqVPnFaoUdRO9+wiCRSGBpaVni69i7v4+urm6x34fejwUwicK7H9UpUlkNWUU+oiMiKklZ\nMxZMnToV586dg6+vL1xcXGBgYAAAmDJlSomfdJWnB9XMzAwBAQE4d+4cLl68iNOnT+PIkSMICAjA\nli1bKvR76OnpSS/weletWrVKXC6GWSVKey0RU2+0IlS336eqsQAmhbGwsEB0dHSx5YVXsBb2/mpo\naCAjI6PIOs+fP3/vdst7kUPhDBLvPn77HbWmpmaxfZc2NIMTlhORLO1AacO1UlNTERISgrFjx+Lr\nr7+WLs/KykJKSopcGTU1NeHp6QlPT09Mnz4d33zzDfz9/REdHV3iRcOlsbW1RWhoKJo2bQojIyO5\nclWmktrz0l5LysPGxgbh4eHIzMyEtrZ2mesr6jWi8PXx3Rkf8vLy8PTpU5kvJKSy8e0DKUzbtm2R\nkpKCEydOSJe9efMGR44cQb169aT/wS0tLXHt2jXpOrm5udIxZyXR19dHcnJymb3EBw4cKPI4MDAQ\n2tracHV1lS6ztLTEjRs3iqx38ODB926zcGzd2xc/EJFqKWwHylNclVYQFfbYvdtzt3XrVpk+iXp3\nHy9fviy2jrW1NQBU6KYLhUMfCi8qftvr16/lLtYVxcLCAsnJyUWKxndfB8ry7rHs0aMH0tPTsWHD\nhmLrJiUlFVumqNcIKysr1K1bF4cPH0Z6erp0+alTp5CSkoI2bdrItX0qjj3ApDDDhg3D9u3bMX36\ndPj6+sLY2Bj79+/HixcvMGfOHOl6nTt3xpYtWzBz5kw4ODhIC+b39Zy4urrin3/+wbfffgtvb29o\naWnBzs6u2FQz9+/fx1dffQUPDw9cuXIFR44cwSeffAJTU9Mi+16yZAlGjx6NNm3a4MKFC6WOEW7Z\nsiUAYM6cORg0aBB0dHRgaWmJxo0bV/g4EZFycXFxgYaGBhYvXgxfX18YGBigZs2acHZ2LrZuaT3A\nBgYGaNOmDdavX4/s7GxYWloiMjISoaGhMDY2LveMBu+u9+233yI5ORnt2rWDhYUFHjx4gK1bt8LR\n0bFC43Ld3d0xYMAA/P3337h37x7atWuH/Px83LlzBydOnICfnx9at24t83YVrUuXLlizZg3GjBmD\nAQMG4NGjR4iIiJBpG+8ey/79++PAgQP49ddfER0dDTc3N+Tk5ODEiRPw9vYudue8sl4jEhMTERoa\nCgDSsdOXL1+WFt729vbSHvqJEydiypQp+Pjjj+Hj44Pk5GRs2rQJtWvXxrBhwyr0+9D7sQAmhTEy\nMsLWrVuxbNkybNu2DRkZGWjYsCF++eUXdOvWTbrelClTkJqaitOnT+Ps2bMYOnQorKysMHfu3BK3\n26tXL0RFRWHfvn0ICAhAXl4exo8fX+zWk3PmzEFgYCCWLVsGAwMDfP7559I5MQsNHz4cT58+RWBg\nIK5cuYLevXtj2LBhRab6eZuzszNmzZqFLVu2YPLkycjNzcWAAQNKncqGiKoXCwsLLFmyBGvXrsWM\nGTOQk5MDNzc3bN68uch6EomkzI/Ely9fjiVLlmDHjh3IyMiAq6srNm7ciLFjxxZ7bknbKmkfPj4+\n2LlzJ7Zv347U1FTUqlULAwYMkOsW7osXL4aTkxN2796NFStWQFtbG3Xr1oWvr2+JHQCVMVysrOPp\n4OCAxYsXY+3atfj111/RunXrItNwlpWvpO2rqanh999/x/r16xEYGIigoCAYGhrC3d0dnTp1KraN\nsl4j7t69i5kzZxbZ586dO7Fz505IJBKMGzdOWgD36tULampq+PPPP/Hzzz9DV1dXOqSlcKx4ab9P\nacupOEl0dLRC3i5cunQJn3zyCRYuXIghQ4YoYpNE5RIWFgZfX19s2bJFFL0SRMqAbTYRqTKFjAHO\nycnB8uXL0aBBA777ICISObbZRKTqFFIA//PPP+jcuTNMTEwUsTkiIqpEbLOJSNXJXQAnJCLine truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fb3e85be550>"
"<matplotlib.figure.Figure at 0x7f4768df6c18>"
]
}
],
"prompt_number": 2
"prompt_number": 3
},
{
"cell_type": "markdown",
@@ -312,11 +359,24 @@
"source": [
"I generated this by taking 500,000 samples from the input, passing it through the nonlinear transform, and building a histogram of the result. From that histogram we can then compute a mean and a variance that we compared to the output of the EKF.\n",
"\n",
"It has perhaps occurred to you that this sampling process constitutes a solution to our problem. This is called a 'monte carlo' approach, and it used by some Kalman filter designs, such as the *Ensemble filter*. Sampling requires no specialized knowledge programming, and does not require a closed form solution. No matter how nonlinear or poorly behaved the transfer function is, as long as we sample with enough points we will build an accurate output distribution.\n",
"It has perhaps occurred to you that this sampling process constitutes a solution to our problem. This is called a 'monte carlo' approach, and it used by some Kalman filter designs, such as the *Ensemble filter*. Sampling requires no specialized knowledge, and does not require a closed form solution. No matter how nonlinear or poorly behaved the transfer function is, as long as we sample with enough points we will build an accurate output distribution.\n",
"\n",
"\"Enough points\" is the rub. The graph above was created with 500,000 points, and the output is still not smooth. You wouldn't need to use that many points to get a reasonable estimate of the mean and variance, but it will require many points. What's worse, this is only for 1 dimension. In general, the number of points required increases by the power of the number of dimensions. If you need $50$ points for 1 dimension, you need $50^2$ for two dimensions, $50^3$ for three dimensions, and so on. So while this approach does work, it is very computationally expensive. The Unscented Kalman filter uses a somewhat similar technique but reduces the amount of computation needed by a drastic amount. \n",
"\n",
"It is somewhat hard to understand some aspects of this problem by looking at the histogram, so consider this alternative representation, this time for 2 variables/dimensions."
"\"Enough points\" is the rub. The graph above was created with 500,000 points, and the output is still not smooth. You wouldn't need to use that many points to get a reasonable estimate of the mean and variance, but it will require many points. What's worse, this is only for 1 dimension. In general, the number of points required increases by the power of the number of dimensions. If you need $50$ points for 1 dimension, you need $50^2$ for two dimensions, $50^3$ for three dimensions, and so on. So while this approach does work, it is very computationally expensive. The Unscented Kalman filter uses a somewhat similar technique but reduces the amount of computation needed by a drastic amount. "
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Choosing Sigma Points"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's look at the problem in terms of a 2D covariance ellipse (2D only because it is easy to plot, this extends on any number of dimensions)."
]
},
{
@@ -332,33 +392,20 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xdc1PfhP/DXTe6OO4557CGCCoiKM7jAAaiJmjRpmmY1\nq2lGk2a26f6lSdOmaTqSJuluv23SkaZmD9C4RQXFyRJQBNnjjnl33Pj8/kCpRCGK3H1uvJ6PRx4o\n977PvYhwvO5z78/7LamurhZAREREROShpGIHICIiIiIaDwsrEREREXk0FlYiIiIi8mgsrERERETk\n0VhYiYiIiMijsbASERERkUeTj3djZ2cnzGazu7IQERERkZ9SKpWIjIy86G3jFlaz2Yy0tDSXhCIi\nIiIiOqeysnLM2zglgIiIiIg8GgsrEREREXk0FlYiIiIi8mgsrERERETk0VhYiYiIiMijsbASERER\nkUdjYSUiIiIij8bCSkREREQejYWViIiIiDwaCysREREReTQWViIiIiLyaCysREREROTRWFiJiIiI\nyKOxsBIRERGRR2NhJSIiIiKPxsJKRERERB6NhZWIiIiIPBoLKxERERF5NBZWIiIiIvJoLKxERERE\n5NFYWImIiIjIo7GwEhEREZFHY2ElIiIiIo/GwkpEREREHo2FlYiIiIg8GgsrEREREXk0FlYiIiIi\n8mgsrERERETk0VhYiYiIiMijsbASERERkUdjYSUiIiIij8bCSkREREQejYWViIiIiDwaCysRERER\neTQWViIiIiLyaCysREREROTRWFiJiIiIyKOxsBIRERGRR2NhJSIiIiKPxsJKRERERB6NhZWIiIiI\nPBoLKxERERF5NBZWIiIiIvJoLKxERERE5NFYWImIiIjIo7GwEhEREZFHY2ElIiIiIo/GwkpERERE\nHk0udgAiIiJyL6fTCavVCqvVCofDAYlEAplMBrlcDqlUCplMBplMBqlUColEInZcIhZWIiIiX2Q2\nm2EymdDb14dBsxUDZgsGLVYMmM2w2uyQypWQyBWQSmWAAAiCA4LTCcE5/BHC8J/VqgCEB+sREaqH\nPigIQUFBUKvVYn955GdYWImIiLycw+FAb28venp60NbVjdZOI6x2AVK1FgqVFoqAACgCg6AMViIw\nQAmFQnnJx7ZaLBgY6EdnRz/sjV1wmAcglzgRFhyEyLAQxERHISgoyIVfHRELKxERkVfq7e1Fc0sr\n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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xlc0+fhB/BPTpKQEM5wH6KIgKh4FkXxAtRW7dau670e\nW9d7XY+t27qr7bqtXdffuh472p3ttnZd23XtKmi1ijeeKJeAIsh9JOHIQY7v7w8r01qoIsk3x+f9\nevkCyZPkE4XwyTfP93kkdXV1AoiIiIiIfJRU7ABERERERGNhYSUiIiIin8bCSkREREQ+jYWViIiI\niHwaCysRERER+TQWViIiIiLyafKxLmxpafFWDiIiIiIKcsnJyZ/59TELKwBkZWVNeBgiIiIiorPV\n1NSMehmnBBARERGRT2NhJSIiIiKfxsJKRERERD6NhZWIiIiIfBoLKxERERH5NBZWIiIiIvJpLKxE\nRERE5NNYWImIiIjIp7GwEhEREZFPY2ElIiIiIp/GwkpEREREPo2FlYiIiIh8GgsrEREREfk0FlYi\nIiIi8mksrERERETk01hYiYiIiMinsbASERERkU9jYSUiIiIin8bCSkREREQ+jYWViIiIiHwaCysR\nERER+TQWViIiIiLyaSysREREROTTWFiJiIiIyKexsBIRERGRT2NhJSIiIiKfxsJKRERERD6NhZWI\niIiIfBoLKxERERH5NBZWIiIiIvJpLKxERERE5NNYWImIiIjIp7GwEhEREZFPY2ElIiIiIp/GwkpE\nREREPo2FlYiIiIh8GgsrEREREfk0FlYiIiIi8mksrERERETk01hYiYiIiMinsbASERERkU9jYSUi\nIiIin8bCSkREREQ+jYWViIiIiHwaCysRERER+TQWViIiIiLyaSysREREROTTWFiJiIiIyKfJxQ5A\nRERE3uV2u2G322G32+FyuSCRSCCTyT7zD5EvYGElIiIKQFarFSaTCf0DAxiy2GCx2TFktcFis8Hu\ncEIqV0IiV0AqlQECIAguCG43BPfpjxBOf65WhSA6XI+YSD30YWEICwuDWq0W++FRkGFhJSIi8nMu\nlwv9/f0wm83o7O1DR48RdqcAqVoLhUoLRYgKilA9QsKV0IYooVAoL/i27TYbhoYG0dM9CGdLL1zW\nIcglbkSFhyE2KgIJ8XEICwvz4KMjYmElIiLyS/39/Whr70Bbdy96TQOAUgW5Sgu1LgyRk5MRolJN\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fb401624550>"
"<matplotlib.figure.Figure at 0x7f4768de2f28>"
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here on the left we show an ellipse depicting the $1\\sigma$ distribution of two variables. The arrows show how three randomly sampled points might be transformed by some arbitrary nonlinear function to a new distribution. The ellipse on the right is drawn semi-transparently to indicate that it is an *estimate* of the mean and variance of this collection of points - if we were to sample, say, a million points the shape of the points might be very far from an ellipse. "
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Choosing Sigma Points"
]
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here on the left we show an ellipse depicting the $1\\sigma$ distribution of two variables. The arrows show how three randomly sampled points might be transformed by some arbitrary nonlinear function to a new distribution. The ellipse on the right is drawn semi-transparently to indicate that it is an *estimate* of the mean and variance of this collection of points - if we were to sample, say, a million points the shape of the points might be very far from an ellipse. \n",
"\n",
"So what would be fewest number of sampled points that we can use, and what kinds of constraints does this problem formulation put on the points? We will assume that we have no special knowledge about the nonlinear transform as we want to find a generalized algorithm. For reasons that come clear in the next section, we will call these points *sigma points*.\n",
"\n",
"Let's consider the simplest possible case, and see if it offers any insight. The simplest possible system is *identity* - the transformation does not alter the input. It should be clear that if our algorithm does not work for the identity transformation then the filter will never converge. In other words, if the input is 1 (for a one dimensional system), the output must also be 1. If the output was different, such as 1.1, then when we fed 1.1 into the transform at the next time step, we'd get out yet another number, maybe 1.23. The filter would run away (diverge). \n",
@@ -384,13 +431,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fb401624470>"
"<matplotlib.figure.Figure at 0x7f4768b325c0>"
]
}
],
"prompt_number": 4
"prompt_number": 5
},
{
"cell_type": "markdown",
@@ -401,7 +448,7 @@
"$$\\begin{aligned}\n",
"1 &= \\sum_i{w_i}\\;\\;\\;&(1) \\\\\n",
"\\mu &= \\sum_i w_i\\mathcal{X}_i\\;\\;\\;&(2) \\\\\n",
"\\Sigma &= \\sum_i w_i{(\\mathcal{X}_i-\\mu)(\\mathcal{X}_i-\\mu)^T}\\;\\;\\;&(3)\n",
"\\Sigma &= \\sum_i w_i{(\\mathcal{X}_i-\\mu)(\\mathcal{X}_i-\\mu)^\\mathsf{T}}\\;\\;\\;&(3)\n",
"\\end{aligned}\n",
"$$\n",
"\n",
@@ -424,13 +471,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Wd7U2eiLv5bvVrVknu3AWNTTIeQQkLIpE+S2ZNkstu5\nzrnO/9V8h/M9/m/Onl1mMnuSTHohhCRAANMMmOreLVuSVWx1aZ0XJoRiiOT2LGndv+uaF2OHcEO8\ntO71rKeobt26JYGIiIiISKbUogMQERERET0OCysRERERyRoLKxERERHJGgsrEREREckaCysRERER\nyRoLKxERERHJmvZx3/T7/YjH4+uVhYiIiIgUSq/Xo6KiYsnvPbawxuNxtLe3r0koIiIiIqKf3bhx\n45Hf45QAIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIi\nIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIi\nkjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKS\nNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1\nFlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUW\nViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZW\nIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYi\nIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIi\nIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIi\nIpI1regAJE+5XA7RaBRzc3OYm5tDKpVCNptFKp0BAGg1ami1Wmi1WjgcDjidTtjtdmi1/JEiZcjl\ncgiHwwgGgwiFQkin08hkMshkcwB+uUZ0Oh0cDgdcLhfsdjvUao4TkDJkMhmEw2HMzc0hFAotXh/3\n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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Vd7G2eCLeqFnEgiM+cgiSKVc3CWs910255x257ZM/uZ\n8+xz1f9h/49zs6dnxt7d0w7sdpYlWVbOEkmJEnMGAwACBJFDnQtKsqINkiC/Amq9l/Kj9oIbhVr1\n1RdUd+7ckUBEREREJFNq0QGIiIiIiH4NCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoL\nKxERERHJmvbX/uH4+Ph65SAiIiIihaupqXnin/9qYQWA1tbWnIchIiIiInpQb2/vU/8ZpwQQERER\nkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGR\nrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGs\nsbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayx\nsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGw\nEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbAS\nERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIR\nERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhER\nEZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERER\nkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkaxpRQcgecpk\nMgiFQpifn8f8/DwSiQRSqRSSqTQAQKtRQ6vVQqvVwmazwW63w2q1QqvlV4qUIZPJIBgMYn5+HoFA\n4P41kkpnAPxyjej1+oeuEbWa4wSkDKlU6qFrJJVKPXSN6LSa+9eI3W6H3W5HSUkJVCqV4OQkR2wX\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fb3e0aa8c50>"
"<matplotlib.figure.Figure at 0x7f4762646550>"
]
}
],
"prompt_number": 5
"prompt_number": 6
},
{
"cell_type": "markdown",
@@ -494,13 +541,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAtIAAAF2CAYAAABDD3/PAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xdc1WX/x/HXYS9BRVw4cCSiGCKOcqFWklrdadqw0LIc\nd3an3s5s3mrLNHNkjjRblg0rs6X9FMyFham5QHEhuEDmYXPO7w/uKG5xcdQv4/18PHrE+S7ewOXh\nw/d8znWZYmJirIiIiIiIyFWxMzqAiIiIiEhFpEJaRERERKQMVEiLiIiIiJSBCmkRERERkTJQIS0i\nIiIiUgYqpEVEREREykCFtIiIiIhIGdhcSJ8+fZrw8HDatm3LgAEDOHTo0GXP2b59O3fffTchISHc\neuutTJ48GbPZXLw/KiqKsLAwgoODGT16NJmZmbbGFBERERG5pmwupJ9//nn8/f3ZsWMHffr0Ydy4\ncZc9p1mzZrz77rtER0fz888/k5SUxJIlSwDIzs5mzJgxPP3002zbtg2TycTs2bNtjSkiIiIick3Z\nVEhnZmaydetWhg8fjpOTE0OHDiUhIYHY2NhLnufj40OdOnUAKCgowGq14u7uDhTdjfb09KRfv364\nuLgwbNgwvv/+e1tiioiIiIhcczYV0sePH8fJyQk3NzcGDx7MyZMnadSoEUeOHLnsuYmJiYSEhNCp\nUyc8PT0ZMWIEAEePHqVp06ZER0fz+OOP07hxY9LS0khJSbElqoiIiIjINWVTIZ2dnY27uztms5m4\nuDjS09Nxd3cnOzv7sufWr1+f6Oho1q9fz7Fjx/jkk08AyMrKws3NjaSkJOLi4nBycireLiIiIiJS\nXjjYcrKrqytms5m6desSFRUFgNlsxs3N7Yqv0bBhQ0aMGMGyZct46KGHcHNzIysri7CwMMLCwkhL\nSwO44Jrx8fG2RBcRERERuWINGza8YJtNhXTjxo3Jzc3lzJkz1KlTh7y8PE6cOEGTJk2u6joWiwWr\n1QqAn59f8d1pgMOHD+Pl5UWNGjUuOC8gIMCW+JWCt7c3q1evJjQ01OgoUo5oXEhpNC6kNBoXUhqN\ni5IOHDhQ6nabWjs8PDzo2rUrS5YsITc3lxUrVuDr60uLFi2KjwkPD2fWrFklzvvuu++IiYnBYrGQ\nmJjI8uXL6d69OwC33HILGRkZrF27lqysLJYvX07fvn1tiSkiIiIics3ZPP3dtGnTiI2NpWPHjvz4\n44/MmTOnxP6EhASSk5NLbEtNTeXpp58mJCSEBx54gPbt2/Pkk08CRe0ic+fOZf78+XTu3BmA8ePH\n2xpTREREROSaMsXExFiNDlEW8fHxau2g6KWXAwcOULt2baOjSDmicSGl0biQ0mhcSGk0Lko6cOBA\nqT3SWiK8EtAfFFIajQspjcaFlEbjQkqjcXF5KqRFRERERMrAplk7RERERCqi/Px8UlJSMJlMRkcp\nl/5cCK+goMDgJNeX1WqlRo0aODo6lul8FdIiIiJSpeTn55OcnEzt2rWxs9OL81WZxWLh7NmzeHt7\nl6mY1ugRERGRKiUlJUVFtABgZ2dH7dq1i+/AX/X51ziPiIiISLlmMplUREsxOzu7Mrf4aBSJiIiI\niJSBCmkRERERkTJQIS0iIiIiUgYqpEVEREREykDT34mIiIhcpfz8fD777DPWrFlDTk4O1apVY8iQ\nIdxxxx2am7oKUSEtIiIi8jfx8fEsWbKE1NRUWrduzZAhQ3Bzcyven5mZycMPP8yuXbtKLFiyfft2\nevToweLFi7G3tzcierm1cuVKPvnkE+Li4jCZTLRu3ZpJkybRvn17o6PZRK0dIiIiIkBhYSFPPfUU\nd999N8uXL2f16tXMmDGDO+64g08++aT4uHHjxvHbb79dsOpfdnY269ev5/XXXy+xbfbs2dx9993c\ndttt3H333cyePZvs7Owy58zIyGDy5Mk0a9aMnJycMl/nRoqKiuL+++/nyy+/5JtvvsHHx4fBgwdz\n9OhRo6PZRHekRURERIBnnnmGb7/9tkSBbLVaOXbsGK+99hoNGjSgdevW7Nq166LXKCgoYMOGDUye\nPJmsrCweeughfv/99xLH7Ny5k4iICFauXEm1atWuOme1atW4/fbbOXfuHC4uLld9vhHmzp1b4vEr\nr7zCN998Q0REBE2aNDEole10R1pERESqvLS0NDZt2nTBXeY/JSUl8fbbbxMdHU1iYuIlr3X27FlO\nnz7NxIkTLyii/7Rz504mT55c5rwbN24kLCyszOdfS6tXr6ZFixYX/a80aWlpAHh5ed3IqNec7kiL\niIhIlff9998THx9/yWOOHj2KyWTCZDJhtVovepzJZCI7O5vdu3df8nq7du0iMzMTDw+Pq867efNm\nJk6cSFRUFLt372batGls376d+vXrM3fuXLy9vbFYLPz2228MHDiQHj16kJ6ezqeffsr27dt58MEH\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fb3e818e048>"
"<matplotlib.figure.Figure at 0x7f47688a06a0>"
]
}
],
"prompt_number": 6
"prompt_number": 7
},
{
"cell_type": "markdown",
@@ -510,7 +557,7 @@
"\n",
"$$\\begin{aligned}\n",
"\\mu &= \\sum_i w_i\\mathcal{X}_i\\;\\;\\;&(2) \\\\\n",
"\\Sigma &= \\sum_i w_i{(\\mathcal{X}_i-\\mu)(\\mathcal{X}_i-\\mu)^T}\\;\\;\\;&(3)\n",
"\\Sigma &= \\sum_i w_i{(\\mathcal{X}_i-\\mu)(\\mathcal{X}_i-\\mu)^\\mathsf{T}}\\;\\;\\;&(3)\n",
"\\end{aligned}\n",
"$$\n",
" \n",
@@ -599,7 +646,7 @@
"However there is an alternative definition, and we will chose that because it has numerical properties that makes it much easier for us to compute its value. We can alternatively define the square root as the matrix S, which when multiplied by its transpose, returns $\\Sigma$:\n",
"\n",
"$$\n",
"\\Sigma = SS^T \\\\\n",
"\\Sigma = SS^\\mathsf{T} \\\\\n",
"$$\n",
"\n",
"This latter method is typically chosen in computational linear algebra because this expression is easy to compute using something called the *Cholesky decomposition*. \n",
@@ -687,7 +734,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
"prompt_number": 8
},
{
"cell_type": "markdown",
@@ -696,7 +743,7 @@
"Now let's implement the unscented transform. Recall the equations\n",
"$$\\begin{aligned}\n",
"\\mu &= \\sum_i w_i\\mathcal{X}_i\\;\\;\\;&(2) \\\\\n",
"\\Sigma &= \\sum_i w_i{(\\mathcal{X}_i-\\mu)(\\mathcal{X}_i-\\mu)^T}\\;\\;\\;&(3)\n",
"\\Sigma &= \\sum_i w_i{(\\mathcal{X}_i-\\mu)(\\mathcal{X}_i-\\mu)^\\mathsf{T}}\\;\\;\\;&(3)\n",
"\\end{aligned}\n",
"$$\n",
" \n",
@@ -718,7 +765,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"All that is left is to compute $\\Sigma = \\sum_i w_i{(\\mathcal{X}_i-\\mu)(\\mathcal{X}_i-\\mu)^T}$\n",
"All that is left is to compute $\\Sigma = \\sum_i w_i{(\\mathcal{X}_i-\\mu)(\\mathcal{X}_i-\\mu)^\\mathsf{T}}$\n",
"\n",
" P = np.zeros((n,n))\n",
" for k in range (2*n+1):\n",
@@ -757,7 +804,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
"prompt_number": 9
},
{
"cell_type": "heading",
@@ -773,6 +820,15 @@
"source": [
"We are now ready to consider implementing a Kalman filter using the approximations for the mean and covariances afforded by the unscented transform. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References\n",
"\n",
"[1] Simon, Dan. *Optimal State Estimation*, John Wiley & Sons, 2006."
]
}
],
"metadata": {}