diff --git a/07_Kalman_Filter_Math.ipynb b/07_Kalman_Filter_Math.ipynb index e017a2c..3498c42 100644 --- a/07_Kalman_Filter_Math.ipynb +++ b/07_Kalman_Filter_Math.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -237,7 +237,10 @@ " },\n", " displayAlign: 'center', // Change this to 'center' to center equations.\n", " \"HTML-CSS\": {\n", - " scale:85,\n", + " scale:100,\n", + " availableFonts: [\"Neo-Euler\"],\n", + " preferredFont: \"Neo-Euler\",\n", + " webFont: \"Neo-Euler\",\n", " styles: {'.MathJax_Display': {\"margin\": 4}}\n", " }\n", " });\n", @@ -247,7 +250,7 @@ "" ] }, - "execution_count": 1, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -467,7 +470,7 @@ "\\end{aligned}\n", "$$\n", "\n", - "Just a reminder: the superscript $^-$ is used to denote that the value is a prediction, not an estimate. But $\\mathbf{x}$ and $\\mathbf{x}^-$ are the same thing, the *state* of our system, just at different times of the algorithm. I am not entirely pleased with this notation for several reasons. First, it clutters the equations up, making them harder to read. More importantly, that aren't always correct. For example, consider a situation wherre we have no measurement for 1 or more time periods. In that case we just compute the predict step several times in a row without an intervening update step. Thus, $\\mathbf{x}$ is never computed, and the predict step is actually $\\mathbf{x}^-_t = \\mathbf{Fx}^-_{t-1} + \\mathbf{Bu}$. Alternatively, if you have several measurements for one time epoch (from different sensors, say) it is sometimes possible to perform the update once for each measurement instead of trying to incorporate all of the measurements at once. In that case the subsequent updates are not performing the computations on the predicted state, but on the partially updated state. The $^-$ notation does not capture any of these. For most of the book I will dispense with this notation unless I want to call out that I am computing a prediciton. \n", + "Just a reminder: the superscript $^-$ is used to denote that the value is a prediction, not an estimate. But $\\mathbf{x}$ and $\\mathbf{x}^-$ are the same thing, the *state* of our system, just at different times of the algorithm. I am not entirely pleased with this notation for several reasons. First, it clutters the equations up, making them harder to read. More importantly, that aren't always correct. For example, consider a situation wherre we have no measurement for 1 or more time periods. In that case we just compute the predict step several times in a row without an intervening update step. Thus, $\\mathbf{x}$ is never computed, and the predict step is actually $\\mathbf{x}^-_t = \\mathbf{Fx}^-_{t-1} + \\mathbf{Bu}$. Alternatively, if you have several measurements for one time epoch (from different sensors, say) it is possible to perform the update once for each measurement instead of trying to incorporate all of the measurements at once. Later in the book we will do this with a localization problem where we have bearing and distance measurements for several landmarks. In that case the subsequent updates are not performing the computations on the predicted state, but on the partially updated state. You can think of this as un update being performed with no movement or time having passed since the last update. The $^-$ notation does not capture any of these. For most of the book I will dispense with this notation unless I want to call out that I am computing a prediciton. \n", "\n", "I will start with the update step, as that is what we started with in the one dimensional Kalman filter case. The first equation is\n", "\n", @@ -480,7 +483,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -489,7 +492,7 @@ "data": { "image/png": "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\n8s0HyMsvQPdW/2xXJpPQtWVDnEm9p9bXs7Gj6v9OdpYAgDvpWXCua/Xc2yeqznSG60GDBqlNL1q0\nCCtXrsThw4e1hut169YhOzsbq1evhomJCVq0aIFz585h2bJlDNdERFTjlXS3DQtTY/X+EJjg3w4z\nhnbV6Otc1wrnr97TaC/NdsqLEAIymfpZcyPDfy7KlP53Rl2p5G1HqPYq9ZjrgoICbNiwAdnZ2ejV\nq5fWPnFxcejZsydMTP654rhfv364efMmrly58uLVEhERVQKlUon8/LrIz68LpVKptY8QAn+fva7W\nFn/2OurXtS72Thzt3J1wOuUuGjvbaPyYGhuiSX1bGBkaIC7pmmqZrCe5OJ1yp9havZrWg1IIHDia\nonW+8f/CcEEx+wEATZxtYGxogJhTV1VtBQVKxJ25jhaudYtdjohKEa5PnToFS0tLmJqaYuLEiQgL\nC4OHh4fWvgqFAo6OjmptRdMKhUIP5RIREVUspVKJvXtz8NprLnjtNRfs3ZtTbMC+mfYI078Nx/mr\n9/B79Bl8sTEOM4Z2AaB56zsAmD2iOw6fu4F3vtqJYxdv4dKN+9gZdwGTl+0EAFiaGePtAW0x+8cI\nRCQmIynlDsYt2QHlM+sSQkD87/4hzRraYZh3S4z/4g9sOXgWKbce4K+TV7D2f3cwcXWUQ5Ik7Iy7\ngLvpWch6kqtRl4WZMd4J6IDZP0bgz78v4uyVu3jnq124m56FKQEdn/9gEtUCJd6Kr3nz5jh58iQy\nMjKwadMmDB8+HJGRkejQoYNGX0nHBRYlSUhIeO5lSTceW6ou+Fylqig/vy4CA12gUBSejwoMNMHW\nrVdhaKg+ZCMz8xH6tamHWwoFOk7+ARIkDOrUED0bGSIhIQF5ubm4du0aEhKM1Jb7flJnrAw/j557\nT0CpFKhva46XW9dTvR5Gdq6LqzduIeCj32BqZIg3erjC00WOe2n3VH0yMx/h7h1JNR3UzwUm4gne\nWbYD6Vm5cJCbYmSvRkiwKQzSE33d8e/v92D80h3w69AAc4e1QVpaGjIe56rWMay9LW7ftseoRZuR\nmZ0Hj/rW+CqwPa4ln8O1ZOD85TRIAI4dPwa5eeFwl5v3H0MCcObMGSgf3iiXx4NKj++p5cfd3b3Y\neZLQ9lFaB19fXzRo0AAhISEa88aMGYO0tDTs3LlT1XbkyBF07twZKSkpcHV1VeufkZGh+v/FixfL\n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\nAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -720,7 +723,162 @@ "\\end{aligned}\n", "$$\n", "\n", - "So we have proven that the multivariate equations are equivalent to the univariate equations when we only have one state variable. I'll close this section by recognizing one quibble - I hand waved my assertion that $H=1$ and $F=1$. In general we know this is not true. For example, a digital thermometer may provide measurement in volts, and we need to convert that to temperature, and we use $H$ to do that conversion. I left that issue out of the last chapter to keep the explanation as simple and streamlined as possible. It is very straightforward to add that generalization to the equations of the last chapter, redo the algebra above, and still have the same results. In practice we do not use the equations in the last chapter to perform Kalman filtering due to the material in the next section which demonstrates how much better the Kalman filter performs when we include unobserved variables. So I prefer to leave the equations from the last chapter in their simplest form so that they economically represent our central ideas without any extra complications." + "So we have proven that the multivariate equations are equivalent to the univariate equations when we only have one state variable. I'll close this section by recognizing one quibble - I hand waved my assertion that $H=1$ and $F=1$. In general we know this is not true. For example, a digital thermometer may provide measurement in volts, and we need to convert that to temperature, and we use $H$ to do that conversion. I left that issue out to keep the explanation as simple and streamlined as possible. It is very straightforward to add that generalization to the equations above, redo the algebra, and still have the same results." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Compare Performance to Univariate Kalman Filter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's implement a simple 1-D kalman filter using the Kalman filter from this chapter, and compare its output to the kalman filter from the previous chapter by plotting it. We will use a simple model of tracking an object that starts at x=0 and moves by 1 at each step. We will assume the arbitrary value 5 for the measurement noise and .02 for the process noise.\n", + "\n", + "First, let's implement the filter from the *Univariate Filter* chapter." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from __future__ import division\n", + "import numpy as np\n", + "from numpy.random import randn\n", + "from filterpy.kalman import KalmanFilter\n", + "\n", + "# 1-D Kalman filter equations\n", + "def predict(pos, variance, movement, movement_variance):\n", + " return (pos + movement, variance + movement_variance)\n", + "\n", + "\n", + "def update (mu1, var1, mu2, var2):\n", + " mean = (var1*mu2 + var2*mu1) / (var1+var2)\n", + " variance = 1 / (1/var1 + 1/var2)\n", + " return (mean, variance)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, let's implement the same thing using the Kalman filter. I will implement it as a function that returns a KalmanFilter object so that you can run the analysis code several times with the KalmanFilter initialized to the same starting conditions each time." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from filterpy.kalman import KalmanFilter\n", + "\n", + "def mkf_filter(R, Q):\n", + " f = KalmanFilter(dim_x=1, dim_z=1, dim_u=1)\n", + " f.P = 500.\n", + " f.H = np.array([[1.]])\n", + " f.F = np.array([[1.]])\n", + " f.B = np.array([[1.]])\n", + " f.Q = Q\n", + " f.R = R\n", + " \n", + " return f" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, let's compare the two. I will plot the data from the 1-D Kalman filter as a blue line, and the output of the filter from this chapter as red dots. I wrote it as a function so you can easily modify the parameters and regenerate the plots." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuYAAAEjCAYAAAB+VMTJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4VOX9///nzGSZJExCErKQPUDYd5DdCAgoIrTYIot+\nLNqKfooV9FtxaUuAIhalbq1a60cLv6qIe7VajZU1LCKiIgTCFhLIBiQh+2Sb8/sjEBmykMAEAnk9\nrotLPec+97kn12n6mpv3uW+TYRgGIiIiIiJyWZkv9wBERERERETBXERERESkVVAwFxERERFpBRTM\nRURERERaAQVzEREREZFWQMFcRERERKQVUDAXEREREWkFFMxFRFoZh8PBq6++ypgxYwgMDMTDw4Pg\n4GD69OnD7NmzWbNmTW3blStXYjabWbx4sUvufeTIEcxmM2PGjHFJfyIi0nRul3sAIiLyI4fDwZQp\nU/j0009p3749N998MxEREVRWVrJnzx7ee+89tm/fzvTp052uM5lMLrn/mX5c1Z+IiDSdgrmISCvy\n1ltv8emnn9K/f382bNiAzWZzOl9RUUFSUlKd61y1ibM2gxYRuXxUyiIi0ops3rwZgNmzZ9cJ5QAe\nHh6MHTu2ts1dd90FwOLFizGbzbV/Nm7cCEBhYSFPPfUUY8eOJSIiAk9PT4KDg5kyZQpbt2516nvl\nypV06tQJgPXr1zv1d26pzM6dO5kxYwZhYWF4enoSFhbGHXfcwaFDh1z7AxERaUM0Yy4i0ooEBgYC\nkJKSct62U6dOpaCggH/961+MHj2a0aNH156LiYkBIDk5md///vdcd911TJ48GX9/f9LS0vjoo4/4\nz3/+w0cffcTEiRMBGDBgAPPmzeO5554jJiaG2bNn1/Z3dt9vvPEGs2fPxmq1MmXKFCIjIzlw4ACr\nV6/m448/Zv369fTr1++ifxYiIm2NydDfW4qItBrfffcdQ4cOpaqqilmzZvHTn/6UgQMHEhMTU2/d\n98qVK7nrrrtYtGgRCxcurHO+sLCQqqoqAgICnI5nZGQwZMgQfH192bt3b+3xtLQ0YmNjGT16NGvX\nrq3T38GDB+nduzeRkZFs3LiRjh071p7bsGED48aNo1+/fuzYseNifgwiIm2SSllERFqR/v378/rr\nrxMSEsIbb7zBtGnT6Ny5M/7+/tx8882sWbOmWXXgvr6+dUI5QHh4OD/72c9ISUnh2LFjtcfP1/dL\nL71ERUUFzzzzjFMoB2pn5Xfu3OkU9kVEpGlUyiIi0spMmzaNqVOnsm7dOjZv3sy3335LUlISn376\nKZ9++ikrV67ko48+wt3dvUn9bd68meeee46tW7dy4sQJKioqnM5nZGQQERHR5L6gZna8vlnxnJwc\nAPbu3UuPHj2a1KeIiNRQMBcRaYXc3NwYP34848ePB2qWUXzvvfe46667+Pzzz3nppZe4//77z9vP\nBx98wM9//nO8vb0ZP348nTt3xsfHB7PZzLp169iwYQPl5eVNHldubi4Af/7znxtsYzKZKCkpaXKf\nIiJSQ8FcROQKYDabmTZtGj/88ANLly5l7dq1TQrmf/jDH7BarezYsYNu3bo5ncvIyGDDhg3NGoef\nnx8mk4nc3Fzat2/frGtFRKRxqjEXEbmCtGvXDvixFtxisQBQXV1db/uDBw/Ss2fPOqHc4XDUux76\n+fobMWIEhmHULscoIiKuo2AuItKKrF69mv/+97/1voSZnZ3NK6+8AkB8fDzw4/KKaWlp9fYXGxvL\n/v37ycrKqj1mGAaLFi1i7969dVZ68ff3B+Do0aP19nfffffh4eHB//t//6/eJR2rqqpYt27d+T6m\niIjUQ8slioi0Ig888ADPPfccoaGhjBo1qnY98tTUVD755BPsdjsjRozgyy+/xNPTk4KCAiIiIqis\nrOR//ud/iIqKwmQycccddxAVFcXf//537r33XoKDg7nllltwd3dn8+bN7N27l3HjxtWuO34m6AOM\nGjWKLVu2cPPNNzNgwADc3d257rrruPbaa4Ga3UnvvPNOqqqquPHGG4mLi6O6upqjR4+yefNmKisr\nycvLuxw/PhGRK5vhQpmZmcYdd9xhBAUFGVar1ejZs6exYcMGpzYJCQlGWFiY4eXlZYwePdrYs2eP\nK4cgInJFO3bsmPHSSy8Zt9xyi9G9e3fDz8/PcHd3N0JDQ43x48cbf//7342qqiqna7744gtj1KhR\nhs1mM0wmk2E2m51+965cudLo37+/4ePjYwQFBRm33HKLsXv3bmPRokV12hqGYRw+fNiYOnWq0aFD\nB8NisRhms9lYvHixU5vk5GTjV7/6lREbG2t4enoa/v7+Rs+ePY277rrL+OSTT1ruByQichVz2Yz5\nqVOnGDhwIPHx8dx3330EBQVx+PBhOnbsSPfu3QFYvnw5jz/+OKtWraJr164sWbKEpKQkUlJSausm\n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\nTU3lq6++4uc//zllZWW1C9rPnz+f5cuX88EHH7B7925mz56NzWZj1qxZrhyGiIiIiMgVx6Uz5hkZ\nGcycOZOTJ08SFBTE8OHD2bZtG5GRkQAsWLCAsrIy5s6dS35+PsOGDSMxMREfHx9XDkNERERE5Irj\n0mC+evXq87ZJSEggISHBlbcVEREREbnitejLnyIiIiIi0jQK5iIiIiIirYCCuYiIiIhIK6BgLiIi\nIiJOFi1ahNmsmHip6ScuIiIicoVbuXIlZrOZ7du3Ox0vLi7m2muvxcPDg/fff79ZfTa2M7u0DAVz\nERERkatQSUkJN910E9u3b+ett97illtuadb1hmG00MikIQrmIiIiIleZM6H8q6++YvXq1c0O5XJ5\nKJiLiIiIXISqkhLs27dj/+AD7J9+Svnhwzgcjss2ntLSUiZNmsS2bdvqhPKPPvqIyZMnExkZidVq\nJSYmhgULFlBeXn7efmNiYpg4cSLr169n8ODBeHt706dPH9auXQvAe++9R58+ffDy8mLQoEHs3LnT\n6fpdu3Zx55130rlzZ7y8vAgKCmLmzJkcPXrUqd2ZspyNGzfy4IMPEhQURLt27bjllls4efKkC35C\nrZdLNxgSERERaUvK9+/HtGwZnv/8J6bTYdwREkL5Cy/gcfPNWDw9L+l4SkpKmDRpElu3bq13pnzl\nypV4eXkxb948/Pz82Lp1K8888wxHjx4970aRJpOJw4cPM2vWLO655x7uuOMOnnrqKX7yk5/w/PPP\nk5CQwH333YfJZGLZsmVMmzaNAwcO1L5E+t///pf9+/cze/ZswsLCOHjwIH/729/Yvn07u3fvxsvL\ny+l+8+fPJzAwkMWLF5Oamsqzzz7Lfffdx1tvveXaH1oromAuIiIicgEq8/Mx//73uL/zjtNxc04O\n1unTsX/+OdaxYy/pS5R33nknmZmZDdaUv/HGG04B+O677yYuLo7f//73PPXUU0RERDTYt2EYHDhw\ngE2bNjFy5EgAevTowQ033MCvf/1r9u3bR3R0NADt27fnnnvuYd26dVx//fUA/O///i8PPvigU59T\npkxh5MiRvP/++9x2221O5zp06EBiYmLtfzscDp5//nmKioqw2WzN/MlcGVTKIiIiInIBqnbvxu2c\nUH6Gqboat7/+leri4ks6puPHj2O1WomKiqr3/JlQ7nA4KCgo4OTJk4wcORLDMPj222/P23+3bt1q\nQznAkCFDABgzZkxtKD/7eGpqap17Q81qMbm5ucTFxdG+ffs6ZS8Av/zlL53+e9SoUVRXV5OWlnbe\ncV6pFMxFRERELoApNZXG5sLdPvuMquzsSzYegJdffhkvLy8mTpxIcnJynfO7d+/mpptuwmaz4e/v\nT3BwMKNHjwagoKDgvP2fG/j9/PwAiIyMrPd4fn5+7bH8/HzuueceAgMD8fX1JSgoiODgYE6dOlXv\nvc+9l7+/f50+rzYqZRERERG5EB4ejZ42rFZMFsslGkyNbt268fnnnzNmzBgmTJjApk2biI2NBWqC\n95gxY7DZbCxbtowuXbrg5eXFsWPHmD17dpNeWLU08HkaOn72kou33norW7Zs4be//S0DBgyoLUeZ\nMWNGvfduSp9XGwVzERERkQvRtSuGhwemiop6T1f98pe4NVBS0pL69+/Pv//9byZMmMD48ePZtGkT\nHTt2ZN26deTm5vL+++9z7bXX1rb/4osvWnxM+fn5fPnllyxevJg//OEPtcftdjt5eXktfv8rhUpZ\nRERERC6Ae69eVCxeXO85R4cOVM+YgcXt8syBjhw5kvfee4+jR48yYcIE8vLyamegz56ddjgcPP30\n0y0+nvruDfDMM89c1TPgzaUZcxEREZELYPH0xHH33ZRFReGxZAmWlBQMd3cqb7uN6l//GuugQZd1\nfDfeeCOvv/46M2fOZOLEibz99tsEBgbyi1/8gt/85je4ubnx7rvvUlJS0uJj8fX1ZfTo0Tz55JNU\nVFQQFRVFUlISGzduJDAwUOH8NAVzERERkQvkHhiI28yZVF53HZXHj4OHB26dO+NhtV7ysdS3LOO0\nadMoLCzk7rvv5q677uL999/nscceIyEhAZvNxs9+9jPuvfde+vbtW6evc/u72GUf33zzTebNm8fL\nL79MZWUl1113HWvXrmXcuHFNvtelXHrycjAZrfArytlv5p55q1fkXDt27ABg8ODBl3kk0prpOZGm\n0HPSdtjtdqyXITTL1aOxZ+hiM6xqzEVEREREWgEFcxERERGRVkDBXERERNoEwzBw2O2XexgiDVIw\nFxERkateVVER9jVrMH333eUeikiDFMxFRETkqmYYBpWffIJ15kxMmjGXVqzFgvkTTzyB2WzmN7/5\njdPxRYsWER4ejre3N2PGjCE5ObmlhiAiIiJCRXo6ngsWUOFhocjmebmHI9KgFgnm27Zt45VXXqFv\n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\n/wOccDP0t4vxcwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nxx11LrHXUPfdd58k6e6771ZhYaHPPtM0fW4cfPDBB+VyuTR58mTvVI9TFRUVnfahNgAQiZjaAQAn\nnLzpcN26dZKk22+/XS1btvTuv+aaa9S7d289/fTT2rx5s84//3zl5ORo2bJluvrqq/XOO++clTo6\ndOigCRMm6J133tH555+vMWPGqLCwUJ9//rni4uJ0/vnnBzTFovoiTb/+9a+VmZmpN954Q71799Z1\n112nhIQEHTx4UCtXrtS1116rZ555RlLVetvr1q3T888/r169eumKK65Qt27dVFBQoD179mj16tW6\n4oor9P7775+VzwAAwoFfI9IHDx7UpEmTlJiYqNjYWPXv31+rVq0Kdm0A0OjuvPNOSfK5yfCkuLg4\nLV++XL/4xS+0detWPf/889qyZYsee+wxvfnmm7WezzCMBs2PPunVV1/Vww8/rLKyMs2fP1+ff/65\nxo0bpy+++EIOh6PB56yrjtdff11vvfWWBgwYoP/5n//RM888o4yMDA0dOlTjx4/3OfbZZ5/Vv/71\nL40YMUIZGRl65pln9OGHHyo/P19Tp07VzJkzG/w+ASCc1buOdEFBgQYPHqwRI0Zo6tSpSkhIUHZ2\ntjp16qSUlJTGqhMAAABoUuoN0g8//LBWr16t1atXN1ZNAAAAQJNX79SODz/80PtffB06dNCgQYM0\nb968xqgNAAAAaLLqDdLZ2dmaP3++evfurc8++0z333+/ZsyYQZgGAABAs1bv1A673a6hQ4cqMzPT\nu+2RRx7RBx98oG3btnm3VV86CQAAAAgnJx9A5a96R6STkpLUr18/n20pKSl1Pp4WAAAAaA7qDdI/\n+clP9J///Mdn2/bt29W9e/dg1QQAAAA0efU+kGXatGkaPny4nnjiCd18881av369nn/+eT355JN1\ntmnosDiah5OPIU5LSwtxJWjK6CfwB/0E/qCfwB9nMj253hHptLQ0ffjhh3r33Xc1cOBAPfroo5oz\nZ47uvvvugC8KAAAAhDu/HhF+1VVX6aqrrgp2LQAAAEDY8OsR4QAAAAB8EaQBAACAABCkAQAAgAAQ\npAEAAIAAEKQBAACAABCkAQAAgAAQpAEAAIAAEKQBAACAABCkAQAAgAAQpAEAAIAAEKQBAACAABCk\nAQAAgAAQpAEAAIAAEKQBAACAABCkAQAAgAAQpAEAAIAAEKQBAACAABCkAQAAgAAQpAEAAIAAEKQB\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def plot_kf_compare(x0, p0, R, Q, move):\n", + " # storage for filter output\n", + " x_uni, x_kf = [], []\n", + " p1, p2 = [], []\n", + "\n", + " # initialize the filters\n", + " f = mkf_filter(R, Q)\n", + " f.x[0] = 0.\n", + " f.P[0, 0] = p0\n", + " pos = (x0, p0)\n", + " for i in range(50):\n", + " z = i*move + randn()\n", + " pos = update(pos[0], pos[1], z, R)\n", + " f.update(z)\n", + "\n", + " x_uni.append(pos[0])\n", + " x_kf.append(f.x[0])\n", + "\n", + " p1.append(pos[1])\n", + " p2.append(f.P[0, 0])\n", + "\n", + " u = move + randn()\n", + " pos = predict(pos[0], pos[1], u, Q)\n", + " f.predict(u=u)\n", + "\n", + " plt.scatter(range(len(x_kf)), x_kf, c='r', s=80, label='Kalman')\n", + " plt.title('State')\n", + " plt.plot(x_uni, label='Univariate')\n", + " plt.xlim([0, 50])\n", + " plt.legend()\n", + "\n", + " plt.figure()\n", + " plt.plot(p1)\n", + " plt.scatter(range(len(x_kf)), p2, c='r', s=80)\n", + " plt.title('Variance')\n", + " plt.xlim([0, 50])\n", + " plt.show()\n", + " \n", + "plot_kf_compare(x0=0., p0=500., R=5., Q=.2, move=1.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, both filters produce the same results. Feel free to vary the initial guess, the measurement noise, and the process noise; so long as you make the same changes to both filters the output should be the same. This is a solid demonstration, albeit not a rigorous proof, that both filters in fact implement the same math for the 1-D case. " ] }, { @@ -837,7 +995,7 @@ "source": [ "### Taylor Series Expansion\n", "\n", - "Broadly speaking there are three ways to find $\\Phi$. The technique most often used with Kalman filters is to use a Taylor-series expansion. The Taylor series represents a function as an infinite sum of terms. The terms are linear, even for a nonlinear function, so we can express any arbitrary nonlinear function using linear algebra. The cost of this choice is that unless we use an infinite number of terms (and who has time for that these days) the value we compute will be approximate rather than exact.\n", + "Broadly speaking there are three ways to find $\\Phi$ that are used in Kalman filters. The technique most often used with Kalman filters is to use a Taylor-series expansion. The Taylor series represents a function as an infinite sum of terms. The terms are linear, even for a nonlinear function, so we can express any arbitrary nonlinear function using linear algebra. The cost of this choice is that unless we use an infinite number of terms (and who has time for that these days) the value we compute will be approximate rather than exact.\n", "\n", "For the Kalman filter we will be using a form of the series that uses a matrix. But before we do that, let's work through a couple of examples with real functions since real functions are easier to plot and reason about. The Taylor series for either are nearly identical, so this is a good first step.\n", "For a real (or complex) function the Taylor series of a function $f(x)$ evaluated at $a$ is defined as \n", @@ -2510,7 +2668,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.4.1" + "version": "3.4.3" } }, "nbformat": 4,