Description of initial value for P.

Added code and text to explain how to choose an initial value for P.
This commit is contained in:
Roger Labbe committed 2014-07-17 08:48:21 -07:00
1 parent 79301c9224
commit 1b6bee0adb
1 file changed
+264 -36
+264 -36
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:8308d6b4e959bab21d85e3e32855ed8611242c5db237c72712607673761dd677"
"signature": "sha256:b799d26a0c11e8a5c71db9928336e67fc5d95fa40acedbb3f1522362e2d3dec0"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -250,7 +250,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x2dddcd0>"
"<IPython.core.display.HTML at 0x1630c50>"
]
}
],
@@ -528,7 +528,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4450250>"
"<matplotlib.figure.Figure at 0x2c9d250>"
]
}
],
@@ -572,7 +572,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4661350>"
"<matplotlib.figure.Figure at 0x2eb4350>"
]
}
],
@@ -660,7 +660,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAF/CAYAAABKRQ+VAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHBpJREFUeJzt3XuMnXWBPvDnzLTTewstWCi2Fkq3sGX4lYpEERdYSUVi\nGy6imLo1alekird4zUaMlz+8IMSYuGtXg6iwSJRgu1kJIhdFDcZWoGhb5Latl7ZTp6U3WqYz8/vD\nZbTS6Tsgc873hc8nIeGdczrnS/N0+nDmOWca69ev7w8AALzAtbX6AAAAUALFGAAAohgDAEASxRgA\nAJIoxgAAkEQxBgCAJMmIVh/gKd3d3dm9e3erjwEAwPNYR0dHpk6detDbiinGu3fvzvz581t9DHia\nlStXZuHCha0+BhyUfFIq2aRUq1evHvQ2UwqosGHDhlYfAQYln5RKNqkjxRgAAKIYQ6Vzzjmn1UeA\nQcknpZJN6kgxhgpz5sxp9RFgUPJJqWSTOlKMocLdd9/d6iPAoOSTUskmdaQYAwBAFGOodMYZZ7T6\nCDAo+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy\n+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRU\nskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkd\nKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYA\nABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDF\nGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZ\nyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy\n+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRU\nskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkdKcYAABDFGCrZyVEy+aRUskkd\n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\nve992blzZzo6OvLBD34wp59++rM7McAL1K9+1Z6LLx6f7u6/fB3u7m7ks58dk6uvHp3rrtuVs8/e\n79ljgGdpSBvjz372s3nf+96X0aNHP6sH+dOf/pStW7dmzpw5+cMf/pBLLrkkP/7xjw+4j40xwOAe\ne6wtCxZMyNatg3+jb9So/tx66450dnrHIIDB/N0b45e+9KW59tprM2XKlDT+6qmIRqORCy+8sPLX\nT5kyJVOmTEmSTJs2LT09Penp6cnIkSOH8vAAL3j33tt+yFKcJPv2NXLrrR3p7PRTSQGejSFtjFet\nWpVjjz02M2fOzLHHHjvwz8yZM5/xA/7kJz/J3LlzlWJqw06OVtu/P7nmmo4h3fdrXxuVzZttKWg9\nXzupoyE9Yzxt2rQcd9xxmTx58tOeMX4murq68vnPfz5f+cpXDnr7smXLMmPGjCTJpEmT0tnZOfAj\nJZ/6A+batWvXL7TrNWvWZ/v2UzMUjz/eyIYNf8xvf/tQMed3/cK8fkop53H9wr1es2ZNHn/88STJ\nhg0bsnTp0gxmSBvjK6+8ctDbhvLiuyTZt29f3vrWt2bZsmUDh/1rNsYAB9fXl7ztbeOyYkX1s8bH\nHdebW2/dkcmTm3AwgBr6uzfGQy2/g+nv78/HPvaxvO51rztoKQZgcG1tyZIl+4ZUjN/73r1KMcCz\nNOT3MT6Ym266aUj3W7VqVW699dbceOONOf/883P++eenq6vr73loaJq//bYgtMI//mNvTjll/yHv\nM3VqX17xikPfB5rF107qaEjPGA/mgQceGNK7Upx66ql54IEH/p6HAnhBO+qo/ixfvjuXXjo2q1c/\n/cXLxxzTm+uv35Xjj/dWbQDP1qDF+I477sjZZ5+dJLntttsOep/e3t7hORUUxPyHUsya1Zfrrtud\ntWvbc/31HXn00fYceWRf/uVf9uWkk3ozfboffUc5fO2kjgYtxjt37hz495/85Cc5+eSTm3IgAAY3\ndWp/pk7dn7PO2p+9e5NRo+In3QE8RwYtxosWLRr49/b29lx00UVPu8+vf/3r4TkVFOTuu+/2zAdF\nGj1aPimXbFJHQ3rx3Rve8IaDfnywt7oAAIC6OeT7GH/5y1/O5Zdf3pSDeB9jAACG26Hex/iQzxhv\n27ZtWA4EAAClqZxSdHd3H/IfeL7zXpyUTD4plWxSR4d8H+Oenp5cffXVh/wEn/70p5/TAwLine truncated
"text": [
"<matplotlib.figure.Figure at 0x4450110>"
"<matplotlib.figure.Figure at 0x2f27b90>"
]
}
],
@@ -687,7 +687,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x46d4b90>"
"<matplotlib.figure.Figure at 0x2eb39d0>"
]
}
],
@@ -714,7 +714,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4688310>"
"<matplotlib.figure.Figure at 0x2edb050>"
]
}
],
@@ -745,7 +745,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4653b50>"
"<matplotlib.figure.Figure at 0x2e387d0>"
]
}
],
@@ -798,7 +798,7 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAF9CAYAAAAKk97ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtYlGXi//HPAMIIggfETFE3y6RfKaLiCfGEeSrN7ayl\nq6bf0rU0rdS01E1X2ZXvt5ObZruVe5VmZW1WstmWKZalZaWlZicOmoiZioKcf38gs44wOMgNzDPz\nfl1XV87MM8/c8+GBubn5zDO2/fv3lwgAAADwEX51PQAAAACgNjEBBgAAgE9hAgwAAACfwgQYAAAA\nPoUJMAAAAHwKE2AAAAD4FCbAgAdYvHixoqKiFBUVpTFjxtT1cIz59NNPFRUVpUOHDjldv3fvXsfz\nreh2lFq/fr2ioqIqvC0qKkpvvvlmjT5+RkaGoqKitGPHjhp9nNrmrc8LgPuYAAPVdP5EpKCgQFOn\nTtXgwYOVmZnp1j6mT5+ulJQUjR8/XjabraaGasy5k9ey/6666qpyz7dz587atm2bmjdv7nT9lVde\nqW3btunVV1+94GMNGDBATz/9tNHxV9WAAQMczzMmJkY33HCDXnvttTod07Zt2zR06NCLvv/s2bMv\n+MtWixYttG3bNnXq1OmiH6c6KvoFoK4nrzX9i0deXp7+7//+T9dee606duyovn376v7779eJEyec\ntnvqqac0YMCAGhsH4O0C6noAgDcpLCzUjBkzdODAAa1evVqXXHKJW/cLCQlRSEiIgoODVVJijc+m\nmTt3roYNG+Z0XZMmTZwu16tXT+Hh4eXu6+/vr/DwcOXm5tboGE2aMGGC7rrrLp06dUqvv/665s2b\np9DQUA0ePLhOxlNRrqb5+fnVyuNYRdn3Zk1+jy5evFjbtm3TggULdPnll+vgwYPauHGjcnNz1bBh\nwxp7XMDXsAIMGFI2+f3uu+/KTX6XLl2qoUOHKjo6Wj179tTcuXOVnZ3t9r7Xr1+vG264QaNGjVLP\nnj316quvKiEhQf3799d3330nScrPz9ecOXM0cOBAdejQQX369FFiYqLy8/Md+3nqqac0ZswYrVix\nQr169VLPnj31xBNPXNTzDQ0NVXh4uNN/ZavXX375ZbUrDmWrrocOHdLTTz/t2Nf5q8HPPvusEhIS\nFB0drZEjR+qDDz4ot6+oqCitWbNG8+bNU9euXdWlSxctX768SuMJDg5WeHi42rRpoxkzZqhNmzZ6\n7733HLeXrUy+9957mjp1qmJiYtS9e3enleLXX39dQ4cOVceOHTVs2LByK+Dffvutbr75ZnXo0EG3\n3nqrUlNTy42jQ4cOjizeeOONCsf63Xff6e6771bXrl3VtWtXTZw4UWlpaZJKV37LVjF37Njh2NfY\nsWMd98/KynL6+n322WflHiM7O1uzZ89W9+7dFR0drQkTJujHH3903F5Wf9m8ebMGDx6szp076777\n7lNOTo6bibunbJX4tddeU+/evdWlSxc98sgjTsf98ePHde+996pTp05KSEjQ5s2bnfbhzvdO2V85\nJGnOnDmObM5dDc7Pz9df/vIX9enTRzExMbr99tu1a9euKj2ff//73xo3bpzi4+PVokULxcbG6tFH\nH3X8FeWpp55SVFSUli9frkOHDjnGkZCQ4LSfL774QnfccYeio6PVv3//cs9nzJgxmj59uu6//35F\nR0crISFB7777bpXGClgZE2DAgMLCQj3wwAPav39/hSu/Z86c0bx58/TOO+9o+fLl2rVrlxYsWFCl\nxzh48KDmz5+vHj16KDExUcuXL1fnzp21Zs0aSaXVi8DAQC1ZskT//ve/tXTpUm3YsKHchHHPnj06\nefKk1q5dq4kTJ+qZZ57R119/XeXnXNkq2DXXXKNt27bpqaeeqvJ+y7z++utKSUlR8+bNNWHCBG3b\ntk3btm3ThAkTHNv87//+r15++WU9+uijeuedd3THHXfovvvu0zfffFNuf6tWrVLz5s21bt06Pf/8\n87rssssuemySFBgYqMLCwnLXJyUlqXv37nrzzTf19NNPKyIiQpL0yiuvaOnSpbr33nu1ceNGTZs2\nTX/+85/1/vvvS/pvdaZFixb617/+pXHjxmn16tXlKjEfffSRUlJSJKnCuswvv/yiO+64Q/7+/nrh\nhRf0yiuvqH///jp8+LAkad68eUpJSdHQoUMVExPjyPXc46Rp06ZOFZWKHmfRokX6/PPPtXz5cr36\n6quy2WyaPHmyioqKnLZbt26dli9frieffFJbtmzRSy+95HbGVfHGG2/o73//u55++ml9+OGHeuaZ\nZxy3PfbYY/rhhx+0evVqLVu2TP/85z+d7uvO9862bdscuc+dO9eR27k1lDlz5iglJUVJSUl66623\n1KdPH02YMMHtKpRU+ovlJ5984vKvI3fddZe2bdum8ePHq3nz5o5xnPuL1r59+zR+/HjFxcVpw4YN\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4682310>"
"<matplotlib.figure.Figure at 0x32590d0>"
]
}
],
@@ -1140,7 +1140,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
"prompt_number": 16
},
{
"cell_type": "markdown",
@@ -1168,7 +1168,7 @@
"\n",
"$$\\begin{bmatrix} 500&0\\\\0&500\\end{bmatrix}$$\n",
"\n",
"This will become much clearer once we look at the covariance matrix in detail in later sessions. For now recognize that each diagonal element $e_{ii}$ is the variance for the $ith$ state variable. \n",
"This will become much clearer once we look at the covariance matrix in detail in later sessions. For now recognize that each diagonal element $e_{ii}$ is the variance for the $ith$ state variable, and that the *500* is just a statement that we are very uncertain about our initial value by some *amount*. \n",
"\n",
"> Summary: For our dog tracking problem, in the 1-D case $\\mu$ was the position, and $\\sigma^2$ was the variance. In the 2-D case $\\mathbf{x}$ is our position and velocity, and $\\mathbf{P}$ is the *covariance* of the position and velocity. It is the same thing, just in higher dimensions!\n",
"\n",
@@ -1180,6 +1180,7 @@
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"from DogSensor import DogSensor\n",
"import filterpy.kalman as kf\n",
"\n",
@@ -1200,7 +1201,7 @@
" return dog_filter\n",
"\n",
"\n",
"def filter_dog(noise=0, count=0, R=0, Q=0, data=None):\n",
"def filter_dog(noise=0, count=0, R=0, Q=0, P=500., data=None, initial_x=None):\n",
" \"\"\" Kalman filter 'count' readings from the DogSensor.\n",
" 'noise' is the noise scaling factor for the DogSensor.\n",
" 'data' provides the measurements. If set, noise will\n",
@@ -1214,7 +1215,9 @@
" else:\n",
" zs = data\n",
"\n",
" dog_filter = dog_tracking_filter(R=R, Q=Q, cov=500.)\n",
" dog_filter = dog_tracking_filter(R=R, Q=Q, cov=P)\n",
" if initial_x is not None:\n",
" dog_filter.x = initial_x\n",
"\n",
" pos = [None] * count\n",
" cov = [None] * count\n",
@@ -1233,7 +1236,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 22
"prompt_number": 44
},
{
"cell_type": "markdown",
@@ -1273,9 +1276,11 @@
"cell_type": "code",
"collapsed": false,
"input": [
"def plot_track(noise=None, count=0, R=0, Q=0, data=None, plot_P=True, title='Kalman Filter'):\n",
"def plot_track(noise=None, count=0, R=0, Q=0, P=500., initial_x=None,\n",
" data=None, plot_P=True, title='Kalman Filter'):\n",
" \n",
" ps, zs, cov = filter_dog(noise=noise, data=data, count=count, R=R, Q=Q)\n",
" ps, zs, cov = filter_dog(noise=noise, data=data, count=count,\n",
" R=R, Q=Q, P=P, initial_x=initial_x)\n",
" \n",
" p0, = plt.plot([0,count],[0,count],'g')\n",
" p1, = plt.plot(range(1,count+1),zs,c='r', linestyle='dashed')\n",
@@ -1301,7 +1306,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
"prompt_number": 47
},
{
"cell_type": "markdown",
@@ -1322,9 +1327,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4a10610>"
"<matplotlib.figure.Figure at 0x324abd0>"
]
},
{
@@ -1332,11 +1337,11 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4534b50>"
"<matplotlib.figure.Figure at 0x3392850>"
]
}
],
"prompt_number": 24
"prompt_number": 48
},
{
"cell_type": "markdown",
@@ -1446,7 +1451,8 @@
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [],
"prompt_number": 20
},
{
"cell_type": "heading",
@@ -1479,7 +1485,25 @@
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3384590>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3384810>"
]
}
],
"prompt_number": 21
},
{
"cell_type": "markdown",
@@ -1584,7 +1608,17 @@
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2db6b50>"
]
}
],
"prompt_number": 22
},
{
"cell_type": "markdown",
@@ -1643,7 +1677,17 @@
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAGNCAYAAAActsnoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VPXd9/HPLJnJHhapECCtO0ujgggEEUWjQu5CLdga\nERQFHxG0oHJ7U8Uiaqu43BXFBbUuFRQX1IIE64ZWy6bCo1CWKlLCoggImSQkk9meP/JAax0gmczk\nnN/J+3VdXBcnJMNXP8w53/zyPb/j2rhxY0wAAACAg7mtLgAAAABINZpeAAAAOB5NLwAAAByPphcA\nAACOR9MLAAAAx6PpBQAAgOPR9AJAkqxYsUJdunSxugxJ0qhRozRr1iyrywAA26DpBYAUCwQCmj59\nus4//3ydcsopGjhwoG6//XYFAoFGvU44HNZdd92loqIi9ejRQ9dee6327NmToqoBwFloegEgxXbv\n3q09e/bo5ptv1htvvKHf//73WrJkia6//vpGvc5DDz2k1157TTNmzNCcOXO0Y8cOTZo0KUVVA4Cz\neK0uAACc7thjj9WDDz548Lhz5866/PLLNWPGDFVVVSk7O/uIrxGNRjVv3jyNHTtWAwYMkCTdfPPN\nGjlypP7xj3/oxBNPTFn9AOAErPQCgAUCgYDS09Pl8/ka9Plbt25VRUWFTjvttIMf69Gjh7xer9as\nWZOqMgHAMWh6AaCZff3115ozZ46uuOKKBje9B2Z3W7VqpRkzZqi4uFihUEh5eXnM9QJAA9D0AkAz\nCgQCGjdunHr16qXrrrsuoddo06aN8vPz5fF4klwdADgXTS8ANJPKykpdeeWVOvroozVz5ky5XK4G\nf23btm0lSfv27dNVV12lP/3pT3K73aqoqDj4ZwCAQ6PpBYBmUFVVpTFjxqht27Z6+OGHlZaW1qiv\n79y5s/Ly8vTJJ58c/NiqVasUDod18sknJ7tcAHAcdm8AgBSrqqrSlVdeKa/Xq9tuu0379u07+Gdt\n27aV233k9Qe3261LLrlEf/zjH9W1a1e1adNGv//979W7d2+dcMIJqSwfAByBphcAUuzvf/+7Pv/8\nc7lcLg0cOPDgx10ul959913l5+c36HWuu+461dbW6qabblIwGFT//v01ffr0VJUNAI5C0wsAKdan\nTx9t2LChya/j8Xg0ZcoUTZkyJQlVAUDLwkwvAAAAHI+mFwCSqDE7MgAAmo9r48aNMauLAAAAAFKJ\nlV4AAAA4Hk0vACTJihUr1KVLF6vLkCSNGjVKs2bNsroMALANml4AaAa7du3ShAkT1KNHDxUVFWnG\njBmKRqONfp0FCxZoyJAhOvnkk3XGGWfovvvuS0G1AOA8bFkGAM1g4sSJqqur09y5c7Vr1y5NnjxZ\nWVlZuvbaaxv8GgsWLNAtt9yiG264QWeffbYikYi+/vrrFFYNAM5B0wsAKbZhwwatWrVK8+bNU7du\n3SRJo0eP1ty5cxvV9D744IMaPXq0rrjiioMfO/7445NeLwA4EeMNAJBia9askdfr1amnnnrwY717\n99Z3332nrVu3Nug1duzYoW3btqlDhw4qLS1V//79dcUVV2j9+vWpKhsAHIWmFwBSbM+ePWrVqpUk\nafjw4br++uvVpk0bSdJ3333XoNfYuXOnJGn27Nm69NJLNXv2bLVp00ZXXHGFKisrU1M4ADgITS8A\nNINYrH5L9Pz8fB199NGN/voDN70NGTJEQ4YMUffu3XX77berqqpK77//fjJLBQBHYqYXAFKsbdu2\nqqiokCQ99NBDkqSPP/5Ykg6u+B5J69atJUk/+clPDn4sKytLrVq10rfffpvEagHAmVjpBYAUKyws\nVDgc1urVqw9+bMWKFWrTpo06d+7coNcoKChQdnb292aAa2pqtG/fPrVv3z7pNQOA09D0AkCKdenS\nRT179tSdd96pv//97/rggw/07LPPasSIEQ1+Da/Xq4suukjz5s3Te++9p82bN+t3v/udcnNzddZZ\nZ6WwegBwBsYbAKAZzJw5U7fddptGjhwpv9+viy66SBMmTGjUa9xwww0Kh8OaOnWqamtr1b17dz35\n5JPKzs5OUdUA4BwJNb179+7V2LFjFQ6HFYvFNG7cOJWUlCS7NgBwjHbt2unhhx9u0mv4fD5NnTpV\nU6dOTVJVANByJNT05uTkaM6cOcrIyNDevXtVUlKiQYMGye1mWgIAAAD2k1DT6/V65fXWf2kgEJDP\n50tqUQBgKpfLZXUJAIA4XBs3bowl8oXV1dUqLS1VeXm57r//fhUXFye7NgAAACApEm56D9i0aZPG\njRunP//5z8rMzExWXQAAAEDSNHn3huOOO075+fnatGmTCgsLD3589erVOuqoo5r68gAAAMBhVVZW\nqlu3bof9nISa3p07d8rn86l169batWuXNm/erE6dOn3vc4466ij17NkzkZeHDSxcuFBDhgyxugwk\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3392450>"
]
}
],
"prompt_number": 23
},
{
"cell_type": "markdown",
@@ -1661,7 +1705,17 @@
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAGNCAYAAAActsnoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VOXZx/HfTGayL0DABQhVEMGFLWJRCAg1BaSKiFoR\nFxQRkIraalncEDfE1lq3iiCKFC1acSkW2RQFRFEJle0lUOCFsBq27MskM+8fvKDoAMkwk3OeM9/P\ndXHJCZPJDT9PcufJPc/jys3NDQgAAABwMLfVBQAAAACRRtMLAAAAx6PpBQAAgOPR9AIAAMDxaHoB\nAADgeDS9AAAAcDyaXgBRafny5WrdurXVZRhnzJgxGjt2rNVlAECt0fQCwI8UFhZq/Pjx6tmzp9q1\na6cePXro0UcfVWFhYa2ep6qqShMmTNDFF1+sDh066M4779S+ffvCWmt1dbUmTpyo3/zmN2rfvr2y\nsrL0xz/+Ubt37w75OSdPnqzWrVvrxRdfDPrnLpcr5OcGACvR9ALAj+zdu1f79u3T/fffr48++khP\nPvmkFi1apN///ve1ep4XXnhB77//viZOnKgZM2Zo586duueee8Jaa0VFhXJzc3XXXXfpww8/1Isv\nvqiNGzdqyJAhqq6urvXzrVq1SrNnz1bDhg3DWicA2AFNLwD8SPPmzfX888+re/fuysjI0MUXX6xB\ngwZp2bJlKi4urtFz+P1+zZw5U0OGDFG3bt103nnn6f7779c333yjDRs2hK3WxMREvfbaa+rVq5d+\n8YtfqH379rrzzjv13//+V5s2barVc5WUlGjMmDF64oknFBsbG7YaAcAuaHoB4AQKCwsVHx9f42Yw\nLy9PBQUFuuCCC468rUOHDvJ4PFq9enWkypQkFRQUSJJSU1Nr9X6PP/64srOz1bZt20iUBQCWo+kF\ngOPYtWuXZsyYoVtvvbXGTe/h2d169epp4sSJys7Ols/nU1paWtjnen+suLhYkyZN0pVXXqnTTjut\nxu83Z84crVmzRiNHjoxYbQBgNY/VBQCAXRUWFmr48OHq2LFjyA1hgwYN1LhxY8XExIS5uqNVVlbq\n7rvvVv369TV+/Pgav9/u3bv16KOPaurUqfJ6vRGsEACsRdMLAEEUFRVp8ODBOvXUU/Xcc8/VateC\n9PR0SdLBgwd1++236/bbb1d1dbUKCgqO/Fk4VVZW6q677tLBgwc1bdo0xcfH1/h916xZo4KCAl1/\n/fVHPd/LL7+s2bNna968eWGvFwCsQNMLAD9RXFys2267Tenp6XrxxRePuQJaWlqq/fv3q0GDBkpM\nTDzy9oyMDKWlpenbb789Mtebk5OjqqqqsM/M+nw+3XPPPdq7d6+mTZumlJSUoI+rrKzU999/r7S0\ntKMe07lzZ82ZM+fIdSAQ0C233KKePXtq0KBBYa0VAKzETC8A/EhxcbEGDx4sj8ejRx55RAcPHlR+\nfr7y8/Pl9/uPeuzcuXOVnZ39s9VQt9ut66+/XlOnTtXixYu1Zs0aPfnkk/rlL3+pli1bhq3W6upq\n3XXXXdqyZYuefvpplZeXH6nV5/Md9diVK1cqOztbb7zxxlFvT0xM1JlnnnnkV/PmzeXxeFSvXj1l\nZGSErVYAsBorvQDwI2vXrtWqVavkcrnUo0ePI293uVz65JNP1Lhx46PedvjXT40cOVLl5eUaNWqU\nKioqlJWVVatZ25rYtWuXFi1aJJfLpT59+hxV1/Tp03XhhRce9XgOlgAQzVy5ubkBq4sAgLq2fPly\nDRo0SOvXr7e6FKMcPoJ4woQJFlcCALXDeAMAoMYCAdZJAJiJphdA1OLH/bXHvxkAUzHeAAAAAMdj\npRcAAACOR9MLICotX75crVu3troM44wZM+bIi9kAwCQ0vQDwI4WFhRo/frx69uypdu3aqUePHnr0\n0UdVWFgY8nM+/PDDat26td5///0wVvqDadOmqVevXmrTpo26d++u6dOn1/o5XnnlFXXt2lXt2rXT\noEGDtHXr1qCPY6YXgKnYpxcAfmTv3r3at2+f7r//frVo0ULbt2/X/fffr61bt2rq1Km1fr6FCxfq\nf//3fyVFpmF8+eWXNXXqVI0ZM0adOnVSSUlJrRv0f/7zn3rxxRc1YcIEtWzZUk8//bSGDh2qf//7\n3/J4+DIBwBn4bAYAP9K8eXM9//zzR64zMjI0aNAgTZw4UcXFxUpOTq7xc+3Zs0dPPvmkpk+fruzs\n7LDXWlZWpsmTJ2v06NG65pprQn6eN998U1dddZUuv/xySdLjjz+uHj16aMmSJUcd0AEAJmO8AQBO\noLCwUPHx8YqNja3x+wQCAY0ePVrDhg1T06ZNI1LXmjVrVFZWpoSEBF155ZXq2rWrRowYoby8vBo/\nR2VlpTZs2KCOHTseedvpp5+upk2bavXq1ZEoGwAsQdMLAMexa9cuzZgxQ7feemutmt4pU6YoJiZG\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2da7290>"
]
}
],
"prompt_number": 24
},
{
"cell_type": "markdown",
@@ -1692,18 +1746,164 @@
"\n",
"In general, we can state that $\\small\\mathbf{P}_{i,j}=\\small\\mathbf{P}_{j,i}$.\n",
"\n",
"So for my example I multiplied the diagonals, 2 and 6, to get 12, and then scaled that with the arbitrarily chosen $p=.2$ to get 2.4.\n",
"\n",
"Let's get back to concrete terms. Lets do another Kalman filter for our dog, and this time plot the covariance ellipses on the same plot as the position."
"So for my example I multiplied the diagonals, 2 and 6, to get 12, and then scaled that with the arbitrarily chosen $p=.2$ to get 2.4."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's get back to concrete terms. Let's start by revisting plotting a track. I will hard code the data and noise to avoid being at the mercy of the random number generator, which might generate data that does not illustrate what I want to talk about. I will start by using the same parameters as a chart above: `R=5`, `Q=.02`, and `P=500`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def plot_track(noise, count, R, Q=0, plot_P=True, title='Kalman Filter'):\n",
"# guarantee the noise is the same each time so I can be sure of\n",
"# what the graphs look like.\n",
"zs = [-6.947, 12.467, 6.899, 2.643, 6.980, 5.820, 5.788, 10.614, 5.210, \n",
" 14.338, 11.401, 19.138, 14.169, 19.572, 25.471, 13.099, 27.090,\n",
" 12.209, 14.274, 21.302, 14.678, 28.655, 15.914, 28.506, 23.181, \n",
" 18.981, 28.197, 39.412, 27.640, 31.465, 34.903, 28.420, 33.889, \n",
" 46.123, 31.355, 30.473, 49.861, 41.310, 42.526, 38.183, 41.383, \n",
" 41.919, 52.372, 42.048, 48.522, 44.681, 32.989, 37.288, 49.141, \n",
" 54.235, 62.974, 61.742, 54.863, 52.831, 61.122, 61.187, 58.441, \n",
" 47.769, 56.855, 53.693, 61.534, 70.665, 60.355, 65.095, 63.386]\n",
"\n",
"plot_track (data=zs, R=5, Q=.02, P=500., count=len(zs), plot_P=False, title='P=500')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2dc88d0>"
]
}
],
"prompt_number": 42
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Looking at the output we see a very large spike in the filter output at the beginning. If you look at the data (dotted red line) you will see a corresponding, smaller spike in the beginning of the data. We set `P=500`, which corresponds to $\\text{P}=[\\begin{smallmatrix}500&0\\\\0&500\\end{smallmatrix}]$. We now have enough information to understand what this means, and how the Kalman filter treats it. The 500 in the upper left hand corner corresponds to $\\sigma^2_x$; therefore we are saying the standard deviation of `x` is $\\sqrt{500}$, or roughly 22.36 meters, assuming our measurements are in meters. If we recall how standard deviations work, roughly 99% of the samples occur withing $3\\sigma$, therefore `P=500` is telling the Kalman filter that the initial estimate could be up to 67 meters off. That is a pretty large error, so when the measurement spikes the Kalman filter distrusts its own estimate and jumps wildly to try to incorporate the measurement. Then, as the filter evolves $\\mathbf{P}$ quickly converges to a more realistic value.\n",
"\n",
"Now let us see the effect of a smaller initial value for `P`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_track (data=zs, R=5, Q=.02, P=1., count=len(zs), plot_P=False, title='P=1')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x324acd0>"
]
}
],
"prompt_number": 45
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This plot does not have the spike that the former plot did; the filter starts tracking the measurements and doesn't take any time to 'settle' to the signal.\n",
"\n",
"Do not conclude from this that the 'magic' is to just use a small $\\text{P}$. Yes, this will avoid having the Kalman filter take time to accurately track the signal, but if we are truly uncertain about the initial measurements this can cause the filter to generate very bad results. If we are tracking a living object we are probably very uncertain about where it is before we start tracking it. On the other hand, if we are filtering the output of a thermometer, we are just as certain about the first measurement as the 1000th. For your Kalman filter to perform well you must set $\\text{P}$ to a value that truly reflects your knowledge about the data. \n",
"\n",
"\n",
"Let's see the result of a bad initial estimate coupled with a very small $\\text{P}$ We will set our initial estimate at 100m (whereas the dog starts at 0m), but set $\\text{P=1}$.\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = np.array([[100,0]]).T\n",
"plot_track(data=zs, R=5, Q=.02, P=1., initial_x=x,count=len(zs),\n",
" plot_P=False, title='P=1')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2ea89d0>"
]
}
],
"prompt_number": 55
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that the initial estimates are terrible, up to around step 15 to 20. This is because we told the Kalman filter that we strongly believe in our initial estimate of 100m.\n",
"\n",
"Now, let's provide a more reasonable value for P and see the difference."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = np.array([[100,0]]).T\n",
"plot_track(data=zs, R=5, Q=.02, P=500., initial_x=x,count=len(zs),\n",
" plot_P=False, title='P=500')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAF9CAYAAAAHja6eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcTfX/wPHX3e+MWWzDZBkThrFMmMIQKpRM3yFbESHx\nq29aRJYkSSgiovpSsoZBISNJyS5jX0p2MRhbGLPf7fz+mEzGrHfmzpy55v18PHp0zz3nfM7nvue6\n876f+Zz3R3Ps2DEFIYQQQgghSjit2h0QQgghhBCiOJDEWAghhBBCCCQxFkIIIYQQApDEWAghhBBC\nCEASYyGEEEIIIQBJjIUQQgghhAAkMRZCCCGEEAKQxFgIIVxuxIgRBAcHExwcTP369Xn88cf55JNP\nSElJydP50dHR6eff/q9OnTpYLJb0Y2w2Gx9++CHNmjWjUaNGvPrqq/z9998Z2jlz5gy9e/emQYMG\nPPLII3z11VcufZ1CCHGv0avdASGEuBc1atSIzz77DKvVSnR0NKNHjyYhIYHRo0fnuY0dO3agKP+u\nwWQ0GtMfz5gxg5UrVzJ58mTKlSvHu+++y6BBg1i4cCEAFouFAQMGUL16dZYvX87Ro0cZOXIk5cuX\np1OnTq57oUIIcQ+REWMhhCgEer2ecuXK4e/vT8eOHenQoQM///yzU22ULVuWcuXKpf93m8PhIDIy\nkv79+9OqVSvq1avHyJEj2b17NydOnABgy5YtnD9/nnHjxlGrVi06dOhAhw4d0hNnIYQQmcmIsRBC\nFAKNRpNh22g0YrVaGTBgAHv27MnynI4dOzJmzJj07ccff5yUlBRq167NG2+8QUhICAAxMTHExcXx\n4IMPph/bqFEj9Ho9hw4dIigoiMOHDxMQEECFChXSj2nSpAnff/89NpsNvV4+/oUQ4m7yySiEEIXg\n9hQIRVHYv38/UVFRtGzZkuHDh5OamprlOaVKlQKgQoUKjB8/nnr16pGYmMiCBQvo2bMnq1atonr1\n6ulziUuXLs3EiRP5+eefWbNmDb6+vun7rl+/TpkyZUhJSSE8PJz27dvTtGlT7HY7N2/epHz58kUQ\nBSGEcC+SGAshRCHYu3cvjRo1wmaz4XA4ePzxx3n33XcpXbp0rufef//93H///enbjRo1Ijw8nEWL\nFvHuu+9mOLZs2bJUqlQJnU6XZVtarZZKlSpRvnz5DPOVhRBCZCaJsRBCFIKQkBAmT56MwWCgQoUK\naLVpt3T079+fvXv3ZnnO3VMpbtNqtdSuXZvz588DpM83vnnzJgMGDGDAgAHY7Xbi4uLS95UtW5br\n169jNBr55ptvAFi1ahU6nS5PybkQQpREkhgLIUQhMJlMVK1aNdPz48ePz1B27U63p1LcTVEUTp8+\nTdOmTQGoWrUqvr6+7NmzJ32e8b59+7DZbDzwwANAWmI+a9YsLl++TMWKFYF/y8DJ/GIhhMiafDoK\nIUQhyG7awu0kNSdz5syhcuXK1KpVC4vFwuLFizl37hzTpk0D0kaQe/Towddff02dOnUoW7YsEyZM\noEmTJgQFBQHwyCOPULVqVd59913eeustjh49SlRUFOPGjXPdixRCiHuMJMZCCOFiGo0mU1UKZ9hs\nNiZOnMi1a9fw8PCgTp06zJ8/nxo1aqQf89prr5GSksKwYcNITU2lRYsWvP/+++n7DQYDX375Je+9\n9x5du3aldOnSvPHGGzz99NMFem1CCHEv0xw7dkzuxhBCCCGEECWeLPAhhBBCCCEEkhgLIYQQQggB\nSGIshBBCCCEEIImxEEIIIYQQgApVKS5cuIDD4SjqywohhBBCiBLG4XBQrVq1PB9f5Imxw+EgNDQ0\nT8e+9ZYHdeo4ePHF1ELuVckRFRVFRESE2t0okST26pL4q0virx6Jvbok/urat2+fU8cX66kUBgNk\ns0CUyKdz586p3YUSS2KvLom/uiT+6pHYq0vi716KdWJsNILVqnYvhBBCCCFESVDME2MFiyX/q0eJ\nzNq2bat2F0osib26JP7qkvirR2KvLom/eynWibFMpXC92rVrq92FEktiry6Jv7ok/uqR2KtL4u9e\nivzmu+woisKVK1ew2+3pzz32mBabDS5elCoWrhIXF4evr2+RX1en01GhQgU0mpL7F4Bt27bRokUL\ntbtRYkn81SXxV4/EXl0Sf/dSbBLjK1eu4O3tjaenZ/pzlSqp2KF7VCWVgpqUlMSVK1eoWLGiKtcX\nQgghhMiN5tixY0pRXjAmJibLcm0XL15ULWkTRUN+xkIIIYQoSvv27aNq1ap5Pr5YzzEWQgghhBCi\nqEhiLEQR2bZtm9pdKNEk/uqS+KtHYq8uib97kcTYzbRs2ZKqVatSrlw5WVpbCCGEEMKFJDEuZOXK\nleOvv/5yWXtbt25lx44dLmtPFB25K1ldEn91SfzVI7FXl8TfvUhiXIgURcnwf1e3K4QQQgghXEcS\n4zyYPn06oaGhVKlShYceeohVq1al79u+fTtt27YlMDCQpk2bpo/mduvWjWrVqgHQqlUrAgICeOed\nd4C0ddPvnAqxbds26tevn6frCfcl88zUJfFXl8RfPRJ7dUn83Uu+6hhv3bqVKVOmpG+fPHmSb7/9\nltOnT/Ppp58CMGLECB577DHX9FJlpUuXZvny5dSoUYP169fTp08fWrVqRXx8PM899xxffvklTzzx\nBKdOneLvv/8GYPny5UDaVIqtW7cSGBhY4OuVLVu2MF6eEEIIIYQgn4lxy5YtadmyJQBXr16lV69e\n1KhRg4EDB7J8+XJSU1Pp3bv3PZMY9+7dO/3xE088ga+vL8eOHeO3336jdevWtGvXDoCaNWtSs2bN\nQrne8ePHCQsLK3DbQj0yz0xdEn91SfzVI7FXl8TfvRR45bsffviBJ598koMHDxIUFJQ+qunv78/R\no0cJDg4ucCcByk53zWjp9devO33O0qVL+fzzz7lw4QIOh4P4+HisVisXL150qmh0Qa8nhBBCiJJJ\nExeH/pdfsHbponZX7mkFToyjoqKYMGECZ86cwc/Pj8jISHx9ffHz8+PKlSsuS4zzk9C6QkxMDIMG\nDWL16tU0btwYgBo1aqAoCpUrV+bgwYM5nq/RaDI9ZzKZALDZbBiNRuLj4/N0vdsMBgMAdrsdrVam\nibuLbdu2yciBiiT+6pL4q0diry5XxV/RaCg1aBA3IyLAaHRBz0RWCpRVnT59mpSUFGrXrp2euHXv\n3p327dsDWSeF7iYxMRGNRkP58uWx2WzMmDGDuLg4NBoNXbp04ddff2XdunXY7XZOnz5NdHR0hvMr\nVqzIkSNHMjxXvnx5fHx82Lt3LwCrV6/O9Xp3qlChAj4+Pmzfvr2QXrUQQgghihUfH+z334/u0CG1\ne3JPK9CI8Zo1awgPDwfSkrWrV6+m77t69Sp+fn5ZnvfKK68QEBAAgK+vLyEhIVSvXr0gXSk0wcHB\nDBw4kLZt26LT6ejXr1/69ImAgAAWLVrE+++/z0svvYS/vz/Tpk3LcP6oUaMYNmwYQ4cOpUePHowa\nNQqdTsfYsWP5v//7PwICAggNDU3/EpHT9W7T6XR8/PHHvPzyyyQlJTFr1qz0LyPF3e27c29/ey5J\n2y1atChW/Slp2xJ/ib9sy7a7b9evVo2Kv/2G/aGHikV/iuP27cfnzp0DoH///jhDc+zYsXwXxW3X\nrh2zZs0iMDAQi8VC+/bt02++69OnD+vXr890TkxMDKGhoZmev3jxIpUqVcpvV4QbkJ+xEEIIkX+G\nFSswrlhB4jffqN0Vt7Fv3z6n7gfL91SKgwcPUqpUqfQyZEajkSFDhtCjRw/69u3LyJEj89u0EPek\nO7/NiqIn8VeXxF89Ent1uSL+noMGobl6FVvTpuh37gRZ6KvQ6PN7YoMGDVixYkWG58LDw9OnVggh\nhBBCiILRXLqEISqKpClTQKcjZcgQSE0Fs1ntrt2T8p0YCyGcc3selFCHxF9dEn/1SOzVVdD4G7Zs\nwfbww6DTAZD63/+6olsiG1LrSwghhBCimNJv2oT10UfV7kaJIYmxEEVE5vmpS+KvLom/eiT26ipQ\n/BUFw+bN2B55xHUdEjmSxFgIIYQQohjSHj+OotPhKKYlbe9FBSrXlh9Srq3kkp+xEEII4QSbDe35\n8zj+qQAmnFdk5dqEEEIIIUQh0uuzTIr1Gzdimj696PtTAkhiLEQRkXl+6pL4q0virx6JvboKI/5K\nqVIYv/vO5e0KSYyFi5QrV46//vpL7W4IIYQQ9zx7w4boTp+GW7fU7so9RxJjUWDKPyvwKLIST46k\nlqi6JP7qkvirR2KvrkKJv9GIrWFD9Lt2ub7tEk4S41wsXryY1q1bU69ePfr160ePHj2oU6cOR44c\nweFwMHHiRBo2bEhwcDAjRozAZrMBcPbsWTp27Ej16tWpVq0aL7zwArfu+Gb3008/0aRJEwICAmjc\nuDG//vpr+r4GDRqwefPm9O27R2MHDhzI22+/Te/evQkICKBBgwYkJCQAEBUVRfPmzalevTrPPvss\nly9fTj8nIiKCWrVqMXr0aJo2bUrr1q1JTk4G4MaNG7z00ksEBwfTqFEjFixYkOF6r732GuHh4QQE\nBPDaa6+l7+vWrRvVqlUDoFWrVgQEBPDOO++4KvxCCCFEiaS5fj3H/bawMPTR0UXUm5JDEuM8MJlM\n/Pbbb6xbt44XX3yRXr16sXLlSj777DN++ukn1q1bx549ezh27BizZs0CwGKx0KdPH37//Xd+//13\nbty4wcSJE9PbHDRoECNHjuTcuXOsWLGC++67L32fRqNBo9Hk2Kdly5bRq1cvzp49y6JFi9Dr9ezd\nu5c33niDzz//nJMnT/LAAw/w5ptvpp/TtGlTZs6cyVdffcX69esxm83s+ufb5ssvv4zRaOLine truncated
"text": [
"<matplotlib.figure.Figure at 0x15a11d0>"
]
}
],
"prompt_number": 58
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this case the Kalman filter is very uncertain about the initial state, so it converges onto the signal much faster. It is producing good output after only 5 to 6 evolutions. With the theory we have developed so far this is about as good as we can do. However, this scenario is a bit artificial; if we do not know where the object is when we start tracking we do not initialize the filter to some arbitrary value, such as 0 or 100. Instead, we would normally take the first measurement, use that to initialize the Kalman filter, and proceed from there. But this is an engineering decision. You really need to understand the domain in which you are working and initialize your filter on the best available information. For example, suppose we were trying to track horses in a horse race. The initial measurements might be very bad, and provide you with a position far from the starting gate. We know that the horse must of started at the starting gate; initializing the filter to the initial measurement would lead to suboptimal results. In this scenario we would want to always initialize the Kalman filter with the starting gate position. \n",
"\n",
"If we have the luxury of not needing to perform the filtering in real time, as the data comes in, we can take advantage of other techniques. We can 'eyeball' the data and see that the initial measurements are giving us reasonable values for the dog's position because we can see all of the data at once. A `fixed lag smoother` will look N steps ahead before computing the state, and other filters will do things like first run forwards, than backwards over the data. This will be the subject of later chapters. It is worthwhile to keep in mind that whenever possible we should prefer this sort of batch processing because it takes advantage of all available information. It does incur cost of additional processing time and increased storage due to the requirement to store some or all of the measurements. And, of course, batch processing does not work if we need real time results, such as when using GPS in our car."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets do another Kalman filter for our dog, and this time plot the covariance ellipses on the same plot as the position."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def plot_track_ellipses(noise, count, R, Q=0, P=20., plot_P=True, title='Kalman Filter'):\n",
" dog = DogSensor(velocity=1, noise=noise)\n",
" f = dog_tracking_filter(R=R, Q=Q, cov=20.)\n",
" f = dog_tracking_filter(R=R, Q=Q, cov=P)\n",
"\n",
" ps = []\n",
" zs = []\n",
@@ -1737,12 +1937,30 @@
" plt.show()\n",
"\n",
"\n",
"plot_track (noise=5, R=5, Q=5, count=20, title='R = 5')\n",
"plot_track (noise=5, R=.5, Q=5, count=20, title='R = 0.5')"
"plot_track_ellipses (noise=5, R=5, Q=5, count=20, title='R = 5')\n",
"plot_track_ellipses (noise=5, R=.5, Q=5, count=20, title='R = 0.5')"
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x2edb310>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x32c1990>"
]
}
],
"prompt_number": 59
},
{
"cell_type": "markdown",
@@ -1795,11 +2013,21 @@
"cell_type": "code",
"collapsed": false,
"input": [
"plot_track (noise=0, R=500, Q=5, count=7, title='R = 500')"
"plot_track_ellipses (noise=0, R=500, Q=5, count=7, title='R = 500')"
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x331bcd0>"
]
}
],
"prompt_number": 60
},
{
"cell_type": "markdown",