diff --git a/Kalman Filters.ipynb b/Kalman Filters.ipynb new file mode 100644 index 0000000..117a30a --- /dev/null +++ b/Kalman Filters.ipynb @@ -0,0 +1,251 @@ +{ + "metadata": { + "name": "" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#Kalman Filters\n", + "\n", + "\n", + "Now that we understand the histogram filter and gaussians we are prepared to implement a 1D Kalman filter. We will do this exactly as we did the histogram filter - rather than going into the theory we will just develop the code step by step. \n", + "\n", + "#Tracking A Dog\n", + "\n", + "As in the histogram chapter we will be tracking a dog in a long hallway at work. However, in our latest hackathon someone created an RFID tracker that provides a reasonable accurate position for our dog. Suppose the hallway is 100m long. The sensor returns the distance of the dog from the left end of the hallway. So, 23.4 would mean the dog is 23.4 meters from the left end of the hallway.\n", + "\n", + "Naturally, the sensor is not perfect. A reading of 23.4 could correspond to a real position of 23.7, or 23.0. However, it is very unlikely to correspond to a real position of say 47.6. Testing during the hackathon confirmed this result - the sensor is accurate, and while it had errors, the errors are small.\n", + "\n", + "Implementing and/or robustly modelling an RFID system is beyond the scope of this book, so we will write a very simple model. We will start with a simulation of the dog moving from left to right at a constant speed with some random noise added. " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy.random as random\n", + "import math\n", + "\n", + "class dog_sensor(object):\n", + " \n", + " def __init__(self, x0 = 0, vel=1, noise=0.0):\n", + " \"\"\" x0 - initial position\n", + " vel - velocity (+=right, -=left)\n", + " noise - scaling factor for noise, 0== no noise\n", + " \"\"\"\n", + " self.x = x0\n", + " self.velocity = vel\n", + " self.noise = math.sqrt(noise)\n", + "\n", + " def sense(self):\n", + " self.x = self.x + self.velocity\n", + " return self.x + random.randn() * self.noise\n" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 106 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The constructor (__init__()) initializes the dog_sensor class with an initial position (x0), velocity (vel), and an noise scaling factor. The *sense()* function has the dog move by the set velocity and returns its new position, with noise added. If you look at the code for *sense()* you will see a call to *numpy.random.randn()*. This returns a number sampled from a normal distribution with a mean of 0.0. Let's look at some example output for that.\n", + "\n" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for i in range(20):\n", + " print (\"%.4f\" % random.randn())," + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0.4069 0.2905 -1.7388 1.0792 -0.4538 0.5012 -0.5006 0.0431 0.4978 0.1898 -0.2238 -0.0177 -0.9256 1.1435 0.5238 0.3113 0.2732 0.5035 1.7994 -1.2416\n" + ] + } + ], + "prompt_number": 107 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should see a sequence of numbers near 0, some negative and some positive. Most are probably between -1 and 1, but a few might lie somewhat outside that range. This is what we expect from a normal distribution - values are clustered around the mean, and there are fewer values the further you get from the mean.\n", + "\n", + "Okay, so lets look at the output of the *dog_sensor* class. We will start by setting the noise to 0 to check that the class does what we think it does" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "dog = dog_sensor (noise = 0.0)\n", + "xs = []\n", + "for i in range (10):\n", + " x = dog.sense()\n", + " xs.append(x)\n", + " print (\"%.4f\" % x),\n", + "plot (xs)\n", + "show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nAElFTkSuQmCC\n", + "text": [ + "" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 108 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The constructor initialized the dog at position 0 with a velocity of 1 (move 1.0 to the right). So we would expect to see an output of 1..10, and indeed that is what we see. If you thought the correct answer should have been 0..9 recall that *sense()* returns the dog's position *after* updating his position, so the first postion is 0.0 + 1, or 1.0.\n", + "\n", + "Now let's inject some noise in the signal." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def test_sensor(noise_scale):\n", + " dog = dog_sensor (noise = noise_scale)\n", + "\n", + " xs = []\n", + " for i in range (100):\n", + " x = dog.sense()\n", + " xs.append(x)\n", + " p1, = plot (xs, c='b')\n", + " p2, = plot ([0,99],[1,100], 'r--')\n", + " xlabel('time')\n", + " ylabel('pos')\n", + " ylim ([0,100])\n", + " title('noise = ' + str(noise_scale))\n", + " legend ([p1, p2], ['sensor', 'actual'], loc=2)\n", + " show()\n", + " \n", + "test_sensor(4.0)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n69at71qxy1LuRXZ2Nvv372fcuHHs378fGxubO7pWLOVexMTEMH/+fOLi4vjrr79IT09n5cqVha6x\nlHtRlHu993vdF7NIFPXr1yc+Pj7/cXx8fKGMaAmysrIYOHAgI0aMoF+/foD6KyExMRGAhIQE6tSp\nY8oQjSIiIoLQ0FAaNWrE8OHDCQsLY8SIERZ5L5ydnXF2dqZt27YADBo0iP379+Pk5GRx9+KPP/6g\nY8eO1KxZE2trawYMGEBkZKRF3oub7vY7cfvn6blz56hfv36xr2UWicLb25tTp04RFxdHZmYm69at\no2/fvqYOy2g0TcPf3x+9Xs/bb7+df7xv376EhIQAEBISkp9AyrOZM2cSHx9PbGwsa9eupXv37qxY\nscIi74WTkxMNGjTg5MmTAOzcuRMPDw/69OljcffC3d2dqKgorl27hqZp7Ny5E71eb5H34qa7/U70\n7duXtWvXkpmZSWxsLKdOnaJdu3bFv1hJD6iUli1btmhubm5a48aNtZkzZ5o6HKP65ZdfNJ1Op7Vs\n2VJr1aqV1qpVK+3HH3/ULl26pPn6+mpNmzbV/Pz8tOTkZFOHalTh4eFanz59NE3TLPZeHDx4UPP2\n9ta8vLy0/v37aykpKRZ7L2bNmqXp9XrN09NTGzlypJaZmWkx92LYsGFa3bp1tYoVK2rOzs7a119/\nXex7nzFjhta4cWOtWbNm2tatW+/5+rLgTgghRLHMoutJCCGE6UiiEEIIUSxJFEIIIYoliUIIIUSx\nJFEIIYQoliQKIYQQxZJEIUQxUlNTWbRoEaBWtw4ePNjEEQlhfLKOQohixMXF0adPH44cOWLqUIQw\nmTJTClWIsmjKlCnExMTQunVrmjZtyvHjxzly5AjLli1j06ZNXL16lVOnTjFhwgSuX7/O6tWrqVy5\nMlu2bMHBwYGYmBjGjx/PhQsXeOyxx1i6dCnNmjUz9dsS4oFI15MQxZg1axaNGzfmwIEDzJ49u9C5\no0eP8u233/L777/z3nvvYWdnx/79++nQoQPLly8HYOzYsXz++ef88ccfzJ49m3HjxpnibQjxSKRF\nIUQxCvbM3t5L261bN2xsbLCxsaF69er5ZVlbtGjB4cOHycjIICIiotC4RmZmpnECF6IESaIQ4iFV\nrlw5/3srK6v8x1ZWVmRnZ5Obm4uDgwMHDhwwVYhClAjpehKiGLa2tly5cuWBnnOz5WFra0ujRo3Y\nuHFj/vHDhw+XeIxClDZJFEIUo2bNmnTq1IkWLVowadKk/Epgt1cMu/37m49XrVpFUFAQrVq1wtPT\nk9DQUOO+ASFKgEyPFUIIUSxpUQghhCiWJAohhBDFkkQhhBCiWJIohBBCFEsShRBCiGJJohBCCFEs\nSRRCCCGKJYlCCCFEsf4fk4MxYtXK+W4AAAAASUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 124 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**note**:*numpy uses a random number generator to generate the normal distribution samples. The numbers I see as I write this are unlikely to be the ones that you see. If you run the cell above multiple times, you should get a slightly different result each time. I could use numpy.random.seed(some_value) to force the results to be the same each time. This would simplify my explanations in some cases, but would ruin the interactive nature of this chapter. To get a real feel for how normal distributions and Kalman filters work you will probably want to run cells several times, observing what changes, and what stays roughly the same.*\n", + "\n", + "So the output of the sensor should be a wavering blue line drawn over a dotted red line. The dotted red line shows the actual position of the dog, and the blue line is the noise signal produced by the simulated RFID sensor. Please note that the red dotted line was manually plotted - we do not yet have a filter that recovers that information! \n", + "\n", + "If you are running this in an interactive IPython Notebook, I strongly urge you to run the script several times in a row. You can do this by putting the cursor in the cell containing the Python code and pressing Ctrl+Enter. Each time it runs you should see a different jagged blue line wavering over the top of the dotted red line.\n", + "\n", + "I also urge you to adjust the noise setting to see the result of various values. However, since you may be reading this in a read only notebook, I will show two extreme examples. The first plot shows the noise set to 100.0, and the second shows noise set to 0.5." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "test_sensor(100.0)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 123 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "test_sensor(0.5)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n/OcAAAAASUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 113 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may not have a full understanding of the exact *meaning* of a noise value of 100.0, but as it turns out if you multiply *randn()* with a number $n$, the result is just a normal distribution with $\\sigma = \\sqrt{n}$. So the example with noise = 100 is using the normal distribution $N(0,100)$. If the square root is confusing, recall that normal distributions use $\\sigma^2$. *dog_sensor().__init__* takes the square root of the noise setting so that the noise * randn() call properly computes the normal distribution." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 111 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file