diff --git a/12-Particle-Filters.ipynb b/12-Particle-Filters.ipynb index c62a17c..e7a31f1 100644 --- a/12-Particle-Filters.ipynb +++ b/12-Particle-Filters.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -262,7 +262,7 @@ "" ] }, - "execution_count": 1, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -281,29 +281,29 @@ "source": [ "## Motivation\n", "\n", - "Here is our problem. We have objects moving in a space, and we want to track them. Maybe the objects are fighter jets and missiles in the sky, or maybe we are tracking people playing cricket in a field. It doesn't really matter. Which of the filters that we have learned can handle this problem? Well, none of them are ideal. Let's think about the characteristics of this problem. \n", + "Here is our problem. We have moving objects that we want to track. Maybe the objects are fighter jets and missiles, or maybe we are tracking people playing cricket in a field. It doesn't really matter. Which of the filters that we have learned can handle this problem? Unfortunately, none of them are ideal. Let's think about the characteristics of this problem. \n", "\n", - "1. **multi-modal**: We want to track zero, one, or more than one object simultaneously.\n", + "* **multimodal**: We want to track zero, one, or more than one object simultaneously.\n", "\n", - "2. **occlusions**: One object can hide another, causing there to be only one measurement for multiple objects.\n", + "* **occlusions**: One object can hide another, resulting in one measurement for multiple objects.\n", "\n", - "3. **nonlinear behavior**: Aircraft are buffeted by winds, balls move in parabolas, and people collide into each other.\n", + "* **nonlinear behavior**: Aircraft are buffeted by winds, balls move in parabolas, and people collide into each other.\n", "\n", - "4. **nonlinear measurements**: Radar gives us the distance to an object. Converting that to an (x,y,z) coordinate requires a square root, which is nonlinear.\n", + "* **nonlinear measurements**: Radar gives us the distance to an object. Converting that to an (x,y,z) coordinate requires a square root, which is nonlinear.\n", "\n", - "5. **non-Gaussian noise:** as objects move across a background the computer vision can mistake part of the background for the object. \n", + "* **non-Gaussian noise:** as objects move across a background the computer vision can mistake part of the background for the object. \n", "\n", - "6. **continuous:** the object's position and velocity (i.e. the state space) can smoothly vary over time.\n", + "* **continuous:** the object's position and velocity (i.e. the state space) can smoothly vary over time.\n", "\n", - "7. **multivariate**: we want to track several attributes, such as position, velocity, turn rates, etc.\n", + "* **multivariate**: we want to track several attributes, such as position, velocity, turn rates, etc.\n", "\n", "None of the filters we have learned work well with all of these constraints. \n", "\n", - "* **Discrete Bayes filter**: This has most of the attributes. It is multimodal, can handle nonlinear measurements, and can be made to work with nonlinear behavior (in this book we only handled the linear case). However, it is discrete, not continuous, and it is *univariate*, not multivariate.\n", + "* **Discrete Bayes filter**: This has most of the attributes. It is multimodal, can handle nonlinear measurements, and can be extended to work with nonlinear behavior. However, it is discrete and univariate.\n", "\n", "* **Kalman filter**: The Kalman filter produces optimal estimates for unimodal linear systems with Gaussian noise. None of these are true for our problem.\n", "\n", - "* **Unscented Kalman filter**: The UKF handles nonlinear, continuous, multivariate problems. However, it is neither multimodal nor does it handle occlusions. It can handle noise that is modestly non-Gaussian, but does not do well with distributions that are very non-Gaussian or problems that are very nonlinear.\n", + "* **Unscented Kalman filter**: The UKF handles nonlinear, continuous, multivariate problems. However, it is not multimodal nor does it handle occlusions. It can handle noise that is modestly non-Gaussian, but does not do well with distributions that are very non-Gaussian or problems that are very nonlinear.\n", "\n", "* **Extended Kalman filter**: The EKF has the same strengths and limitations as the UKF, except that is it even more sensitive to strong nonlinearities and non-Gaussian noise." ] @@ -319,16 +319,16 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": "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\nej3KNqZYs9PpJBAISJqMuPkQ1xBV8rt370pNeKUKjhjaFBDOq3sNeQJSFky5JiX2+97Uky1Tvi9K\nia8v+vunQoUKFUeFWvlgZRz8h//wH2K1WtHpdFy4cIEPPviA8fFx2cG9ePEi+Xye3/72t7jdblnY\ncblcshsMn8RjocJ1+fJlWWRRdp0tFgvRaFQKDTz22GNcunSJ559/Xko0inhcKBS4e/cuS0tLrK2t\nUSwWGRsb4+zZs1WVexUqPgscWaL+z/7ZPwN2JfLqYXZ2ljfeeIMbN27w+OOPA/Bf/+t/5Vvf+hbz\n8/OcPHnyqJbyjcNeAaI2KAru3l5JoMViua9V6Pf7Jc+vvb2dK1euAMhEXEBU9QcGBqrOK6r0IkgK\nFAoF5ubmaG1tpauri0KhQDQaZXx8nHfeeYeuri68Xm+V1JWSNz89Pc3t27cpFAoMDw9XVb9rq/Ei\nGIvqfVNTE7lcjlAodJ+ZEXBfNVz8XO8YsZb99MzrVdhVqPgq4aWXXuLP//zPqx5zu93yBl0c89/+\n239jfX2dxx9/nP/8n/+zpKKp+ObhQZ1FJTKZDAMDA/zpn/6pfOzOnTvSpbRSqRCLxcjlcgQCATY3\nN+no6MDlctHe3l6lvqWMsUKprJ7js5ImWi6XJcXmqaeeqhIcEAUpQXPs6upiY2ODY8eOMTo6WldN\nTVz/y9CRV/HVx+fGUZ+YmMBsNjM2NiYfu3jxIiaTiYmJCTVR3wO1Q52wd2X9oEHxIOcX/xeUlHpu\na8qflQYPoVBI/i6fz8tgqbzW1atXmZubY3l5Wco3rq6uotfrOXHiBI8//jijo6MyeMInvHXBQywW\ni3IAVXyvRGXa6XSSz+dJpVLMz88TDoex2+0MDg6i0Wi4evUqBoOBK1euyIBdj46yV+uyNvAq3ez2\nep9r33Pl4/U2EjW4q/gyYXBwkGvXrsl/Hzt2TP78b//tv+Xf//t/zy9/+UtOnjzJn//5n/N3/s7f\n4e7du5jN5i9gtSq+DHhQDBO0y3ru2ZcuXSKdTst/OxwOWltb0ev1ZDIZXn75ZbxeL7//+78v1cuy\n2axMwi9fvixlG0VRSSm8II77wz/8Qzkvlc/nuXv3LjMzM9y9e5dUKoXdbufy5ctSPtJut+P3+zl9\n+rQ8by11cT83cBUqDovPLVGPxWL3OTRqNBpcLpdsbamoD+Ufej3zm3rHKY8Ph8O0t7dXGevs9Tzl\n+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\n", + "image/png": "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\nWXz44Yfw+XxjTpZ8GMXHiQnEdQr7HvUDBw5gx44d45ZJS0vj/2+z2fD8889DIBDg8uXLEIlE/HMq\nlQpGo9HvtYwxGAwGqFSqwFY8AB637eOZaW2fiJGeuUc/zer1eqjV6iDV6skb+f7p9XpoNBr+uF6v\nn7Hf20cdOHAA77//Pj777DOkp6fzx2dD2wPpSccUlUo16s/CIz2lM/37M5VruWzZMgiFQjQ3N2Pp\n0qVhGZ+niuL75EgkEmRnZ6OlpQXf+c53AFB8/DoTuY+oVCp4vV709fX59arrdDqsXbt2/DcI3PD6\nmc9qtbJnnnmGrV69mtlstlHPjzVh58aNG36Tn2a6x5n4FQ5tX7ly5ZiTjX79618HqUbTb6yJMGq1\netREGLlczs6cOROMKgbU3r17mVqtZg0NDaOeC/e2h4KpxJSPPvpo1GTSd999d9ZNJn1UTU0N4ziO\nXb9+nTEWvvF5qmZjfJ8qp9PJVCoVe/311xljjOLjGCZzDx1vMunVq1fHfT9K1L9ktVrZ008/zbKz\ns1lzczPr6enhH0NDQ3y5jRs3ssWLF7OqqipWWVnJcnJy2JYtW4JY88Do6elhWq2Wvfvuu4zjOHbl\nyhWm1WqZyWTiy4Rj2y9cuMBEIhH7+9//zurr69nevXuZTCZjHR0dwa5aQNlsNqbVaplWq2USiYT9\n5je/YVqtlm/nm2++yWJjY9mlS5dYbW0t27ZtG0tNTR3zA+tMsnv3biaXy9mnn37q9zv9cLvCte3B\nFoiY4vV62eLFi9m3vvUtptVq2bVr11hqairbu3dvMJoUFK2trez48ePsv//9L2tra2Mffvghy8zM\nZMuXL2c+n48vF47xeapmS3yfioMHD7KysjJ279499vnnn7MXXniBxcbGhv294XEF4h7685//nGk0\nGvbJJ5+w6upqVlBQwHJzc/1+j8dCifqXPvvsM8ZxHBMIBIzjOP4hEAhYWVkZX85sNrMf/ehHTC6X\nM7lczkpKSlh/f38Qax4YR48e9WvzyL8Pf2oM17afOnWKpaenM7FYzFasWMH3UoWTkZ/vR3/Gf/KT\nn/Bljh07xtRqNYuKimIFBQWsrq4uiDUOjLF+pzmOY8ePH/crF45tD7ZAxZSOjg62adMmJpFImEKh\nYPv27fPrPAl3nZ2dbN26dUyhUDCxWMzmz5/P9u/fz8xms1+5cI3PUzUb4vtU/OAHP2ApKSlMJBKx\n1NRUtnXrVnb37l2/MhQfA3MPdblcbM+ePUyhUDCJRMK2bNni99fCr8IxFqYzdQghhBBCCJnBwn7V\nF0IIIYQQQmYiStQJIYQQQggJQZSoE0IIIYQQEoIoUSeEEEIIISQEUaJOCCGEEEJICKJEnRBCCCGE\nkBBEiTohhBBCCCEhiBJ1QgghhBBCQhAl6oQQQgghhISg/wOq57/8losdWAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -344,29 +344,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "On the left I created 3000 points normally distributed based on the Gaussian\n", + "The left plot shows 3,000 points normally distributed based on the Gaussian\n", "\n", "$$\\mu = \\begin{bmatrix}0\\\\0\\end{bmatrix},\\, \\, \\, \\Sigma = \\begin{bmatrix}32&15\\\\15&40\\end{bmatrix}$$\n", "\n", - "\n", - "and passed them through the system\n", + "The right plots shows these points passed through this set of equations:\n", "\n", "$$\\begin{aligned}x&=x+y\\\\\n", "y &= 0.1x^2 + y^2\\end{aligned}$$ \n", "\n", - "I then showed how poorly the EKF did at estimating the new mean and covariance compared to the UKF.\n", + "Using a finite number of randomly sampled points to compute a result is called a *Monte Carlo* (MC) method. The idea is simple. Generate enough points to get a representative sample of the problem, run the points through the system you are modeling, and then compute the results on the transformed points. \n", "\n", - "This technique of using a finite number of randomly sampled to compute a result is called a *Monte Carlo* (MC) method. The idea is simple. Generate enough points to get a representative sample of the problem, run the points through the system you are modeling, and then compute the results on the transformed points. \n", - "\n", - "In a nutshell this is what particle filtering is. A bit later I'll demonstrate how MC can integrate over a probability distribution, but you don't need that formality to understand how they work. It's very simple. It is the Bayesian filter algorithm we have been using throughout the book applied to thousands of particles, where each particle represents a *possible* state for the system. We extract the estimated state from the thousands of particles using weighted statistics of the particles.\n", + "In a nutshell this is what particle filtering does. The Bayesian filter algorithm we have been using throughout the book is applied to thousands of particles, where each particle represents a *possible* state for the system. We extract the estimated state from the thousands of particles using weighted statistics of the particles.\n", "\n", "\n", - "**Generic Particle Filter Algorithm**\n", + "## Generic Particle Filter Algorithm\n", "\n", "1. **Randomly generate a bunch of particles**\n", " \n", - " Particles can have position, heading, and/or whatever other state variable you need to estimate.\n", - " Each has a weight indicating how likely it matches the actual state of the system.\n", + " Particles can have position, heading, and/or whatever other state variable you need to estimate. Each has a weight (probability) indicating how likely it matches the actual state of the system.\n", " \n", "2. **Predict next state of the particles**\n", "\n", @@ -374,18 +370,17 @@ " \n", "3. **Update**\n", "\n", - " Update the weighting of the particles based on a measurement.\n", + " Update the weighting of the particles based on measurements.\n", " \n", "4. **Resample**\n", "\n", - " Discard highly improbable particle and replace them with copies of more probable particles\n", + " Discard highly improbable particle and replace them with copies of more probable particles.\n", " \n", - " Optionally, compute mean and covariance of the set of particles to get the most likely current state.\n", - " \n", - " \n", - " \n", - " \n", - "This naive algorithm runs into some practical difficulties which we will need to overcome, but this is the general idea. To demonstrate this I wrote a particle filter that performs robot localization. This is the same robot localization problem used in the UKF and EKF chapter. In this problem we have a robot that we can control. It has sensors that measure its distance to various landmarks, and we can steer the robot. Both the sensors and control mechanism have noise in them, and we need to estimate the robot's position.\n", + "5. **Compute Estimate**\n", + "\n", + " Optionally, compute weighted mean and covariance of the set of particles to get a state estimate.\n", + " \n", + "This naive algorithm has practical difficulties which we will need to overcome, but this is the general idea. Let's see an example. I wrote a particle filter for the robot localization problem from the UKF and EKF chapters. The robot has steering and velocity control inputs. It has sensors that measures distance to visible landmarks. Both the sensors and control mechanism have noise in them, and we need to track the robot's position.\n", "\n", "Here I run a particle filter and plotted the positions of the particles. The plot on the left is after one iteration, and on the right is after 10. The red 'X' shows the actual position of the robot, and the large circle is the computed weighted mean position." ] @@ -416,7 +411,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "After the first iteration the particles are still largely randomly scattered around the map, but you can see that some have already collected near the robot's position. The computed mean is quite close to the robot's position. This is because each particle is weighted based on how closely it matches the measurement. The measurement (with noise) says the robot is near (1,1), so particles that are near (1, 1) will have a high weight, and particles at, say, (15, 19.5) will have a very low weight. The estimated is computed as the weighted mean of all of the particle's positions, so the estimate is quite accurate. This is partially the result of the random number generation - other runs could produce a poor estimate if no particles were particularly near the robot.\n", + "If you are viewing this in a browser, this animation shows the entire sequence:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After the first iteration the particles are still largely randomly scattered around the map, but you can see that some have already collected near the robot's position. The computed mean is quite close to the robot's position. This is because each particle is weighted based on how closely it matches the measurement. The robot is near (1,1), so particles that are near (1, 1) will have a high weight because they closely match the measurements. Particles that are far from the robot will not match the measurements, and thus have a very low weight. The estimated position is computed as the weighted mean of positions of the particles. Particles near the robot contribute more to the computation so the estimate is quite accurate.\n", "\n", "Several iterations later you can see that all the particles have clustered around the robot. This is due to the *resampling* step. Resampling discards particles that are very improbable (very low weight) and replaces them with particles with higher probability. There are multiple algorithms for this, and we will discuss them later. \n", "\n", @@ -428,15 +437,15 @@ "metadata": {}, "source": [ "## Probability distributions via MC\n", - "Suppose we want to know the area under the curve $y= \\mathrm{e}^{\\sin(x)}$ in the interval [0, $\\pi$]. We can compute the area with the definite integral $\\int_0^\\pi \\mathrm{e}^{\\sin(x)}\\, \\mathrm{d}x$. As an exercise, go ahead and compute the answer; I'll wait. If you are wise you did not take that challenge; $y= \\mathrm{e}^{\\sin(x)}$ cannot be integrated analytically.\n", + "Suppose we want to know the area under the curve $y= \\mathrm{e}^{\\sin(x)}$ in the interval [0, $\\pi$]. Area is computed with the definite integral $\\int_0^\\pi \\mathrm{e}^{\\sin(x)}\\, \\mathrm{d}x$. As an exercise, go ahead and find the answer; I'll wait. \n", "\n", - "The world is filled with equations which we cannot integrate. We cannot integrate something as simple as $\\int_a^b x^x\\, \\mathrm{d}x$. For a realistic example from physics, think of how we calculate luminosity of an object. An object reflects light. Some of that light bounces off of other objects and restrikes the original object, increasing the luminosity. This creates a *recursive integral*. Good luck with that one.\n", + "If you are wise you did not take that challenge; $\\mathrm{e}^{\\sin(x)}$ cannot be integrated analytically. The world is filled with equations which we cannot integrate. For a realistic example from physics, think of how we calculate the luminosity of an object. An object reflects some of the light that strike it. Some of the reflected light bounces off of other objects and restrikes the original object, increasing the luminosity. This creates a *recursive integral*. Good luck with that one.\n", "\n", - "However, these are trivial to compute using a Monte Carlo technique. Create a bounding box that contains the curve in the desired interval, generate random pairs $(x,y)$, and count how many fall under the curve. Multiply the area of the bounding box by the ratio of points that were under the curve vs the total number of points and you will have computed the are under the curve. As you tend towards infinite points you can achieve any arbitrary precision. In practice, a few thousand points will give you a fairly accurate result.\n", + "However, integrals are trivial to compute using a Monte Carlo technique. To find the area under a curve create a bounding box that contains the curve in the desired interval, generate random pairs $(x,y)$, and count how many fall under the curve. Multiply the area of the bounding box by the ratio of points that were under the curve vs the total number of points and you will have computed the area under the curve. As you tend towards infinite points you can achieve any arbitrary precision. In practice, a few thousand points will give you a fairly accurate result.\n", "\n", - "Think of how powerful this technique is. You can use it to numerically integrate any function. The function can be of any arbitrary difficulty, including being non integrable and noncontinuous, and yet we can trivially find the answer. \n", + "You can use this technique to numerically integrate a function of any arbitrary difficulty. this includes non-integrable and noncontinuous functions. This technique was invented by Stanley Ulam at Los Alamos National Laboratory to allow him to perform computations for nuclear reactions which were unsolvable on paper.\n", "\n", - "Let's use it to compute $\\pi$ by computing the area of a circle. This is very easy. We will create a circle with radius 1, and bound it in a square. The means that the length of a side of the box will be 2, and hence the area of the box is 4. We will generate a set of uniformly distributed random points within the box, and count how many fall inside the circle. The area of the circle is then the area of the box times the ratio of points inside the circle over the total number number of points. Finally, we know that $A = \\pi r^2$, so $\\pi = A / r^2$.\n", + "Let's compute $\\pi$ by finding the area of a circle. We will define a circle with a radius of 1, and bound it in a square. The side of the square has length 2, so the area is 4. We generate a set of uniformly distributed random points within the box, and count how many fall inside the circle. The area of the circle is computed as the area of the box times the ratio of points inside the circle vs. the total number of points. Finally, we know that $A = \\pi r^2$, so we compute $\\pi = A / r^2$.\n", "\n", "We start by creating the points.\n", "\n", @@ -445,19 +454,19 @@ "ps = uniform(-1, 1, (N, 2))\n", "```\n", "\n", - "A point is inside the circle if it's distance from the center point (0, 0) is less than or equal to one. We can compute the distance by using `numpy.linalg.norm`. If you aren't familiar with this, the norm is the magnitude of a vector. Since vectors start at (0, 0) calling norm will compute the point's distance from the origin.\n", + "A point is inside a circle if its distance from the center of the circle is less than or equal to the radius. We compute the distance with `numpy.linalg.norm`. If you aren't familiar with this, the norm is the magnitude of a vector. Since vectors start at (0, 0) calling norm will compute the point's distance from the origin.\n", "\n", "```python\n", "dist = np.linalg.norm(ps, axis=1)\n", "```\n", "\n", - "Next we compute which of this distances fit the criteria with this code, which returns a bool array that contains `True` if it meets the condition\n", + "Next we compute which of this distances fit the criteria. This code returns a bool array that contains `True` if it meets the condition `dist <= 1`:\n", "\n", "```python\n", "in_circle = dist <= 1\n", "```\n", "\n", - "All that is left is to count the points inside the circle, compute pi, and plot the results. I've put it all in one cell so you can experiment with alternative values for `N`." + "All that is left is to count the points inside the circle, compute pi, and plot the results. I've put it all in one cell so you can experiment with alternative values for `N`, the number of points." ] }, { @@ -492,13 +501,15 @@ "from numpy.random import uniform \n", "\n", "N = 20000\n", + "radius = 1\n", + "area = (2*radius)**2\n", + "\n", "ps = uniform(-1, 1, (N, 2))\n", "dist = np.linalg.norm(ps, axis=1)\n", "in_circle = dist <= 1\n", "\n", - "in_circle_count = np.count_nonzero(in_circle)\n", - "area = 2*2\n", - "pi = area*(in_circle_count / N)\n", + "pts_in_circle = np.count_nonzero(in_circle)\n", + "pi = area * (pts_in_circle / N)\n", "\n", "plt.scatter(ps[in_circle,0], ps[in_circle,1], \n", " marker=',', edgecolor='k', s=1)\n", @@ -514,15 +525,38 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I show this to you to help illustrate that you really are computing a numerical integration. An alternative way to find the area of a circle is by integrating the infinitely many circles that lie inside the circle:\n", + "I show this to you to help illustrate that you are performing a numerical integration. An alternative way to find the area of a circle is by integrating the infinitely many circles that lie inside the circle:\n", "\n", "$$A = \\int_0^{2\\pi r} 2\\pi t\\, dt = \\pi r^2 $$\n", "\n", - "The Monte Carlo technique does something very similar by summing the infinite number of points inside the circle. Computers can't sum infinities, so we settle for a representative sampling of points and less than infinite precision in the results. Using Monte Carlo for this problem is remarkably unnecessary, but imagine instead trying to compute the recursive integral for luminosity that I mentioned. As far as I know there is no analytic solution to that problem, yet we could use the code above to find the answer. MC is a powerful tool to reach for when analysis fails. \n", + "The Monte Carlo technique does something very similar by summing the infinite number of points inside the circle. Computers can't sum infinities, so we settle for a representative sampling of points and less than infinite precision in the results. Using Monte Carlo for this trivial problem is overkill, but imagine trying to compute the recursive integral for luminosity. As far as I know there is no analytic solution to that problem, yet we could use the code above to find the answer. \n", "\n", "This insight leads us to the realization that we can use Monte Carlo to compute the probability density of any probability distribution. For example, suppose we have a Gaussian. The Gaussian has a probability distribution as shown below." ] }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from filterpy.stats import plot_gaussian_pdf\n", + "plot_gaussian_pdf(mean=2, variance=3);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The *probability density function* (PDF) is the probability that the random value falls between 2 values. For example, we may want to know the probability of x being between 0 and 2 in the graph above. This is a continuous function, so we need to take the integral to find the area under the curve, as the area is equal to the probability for that range of values to occur. \n", + " \n", + "$$P[a \\le X \\le b] = \\int_a^b f_X(x) \\, dx$$\n", + "\n", + "It is easy to compute this integral for a Gaussian. But real life is not so easy. For example, the plot below shows a possible and realistic probability distribution. There is no way to analytically describe an arbitrary curve, let alone integrate it analytically." + ] + }, { "cell_type": "code", "execution_count": 5, @@ -532,53 +566,9 @@ "outputs": [ { "data": { + "image/png": "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\nCwAAgND4f2S/EXBaa4TZAAAAAElFTkSuQmCC\n", "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from filterpy.stats import plot_gaussian_pdf\n", - "plot_gaussian_pdf(mean=2, variance=3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The *probability density function* (PDF) is the probability that the random value falls between 2 values. For example, we may want to know the probability of x being between 0 and 2 in the graph above. This is a continuous function, so we need to take the integral to find the area under the curve, as the area is equal to the probability for that range of values to occur. \n", - " \n", - "$$P[a \\le X \\le b] = \\int_a^b f_X(x) \\, dx$$\n", - "\n", - "It is easy to compute this integral for a Gaussian. But real life is not so easy. For example, the plot below shows a possible and realistic probability distribution. There is no way to analytically describe the curve, let alone integrate it symbolically." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nYII=\n", - "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -593,7 +583,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "But we have already stated that we can use Monte Carlo methods to compute any integral. The PDF is computed with an integral, hence we can compute the PDF of this curve using Monte Carlo. " + "We can use Monte Carlo methods to compute any integral. The PDF is computed with an integral, hence we can compute the PDF of this curve using Monte Carlo. " ] }, { @@ -602,23 +592,21 @@ "source": [ "## The Particle Filter\n", "\n", - "All of this brings us to the particle filter. Consider tracking a robot or a car in an urban environment. For consistency I will use the robot localization problem from the ends of the EKF and UKF chapters. In this problem we tracked a robot that had a sensor that could detect the range and bearing to landmarks. \n", + "All of this brings us to the particle filter. Consider tracking a robot or a car in an urban environment. For consistency I will use the robot localization problem from the EKF and UKF chapters. In this problem we tracked a robot that had a sensor measures the range and bearing to landmarks. \n", "\n", - "Before I continue let me point out that the filter I am going to develop next is a specific form of particle filter that is intuitive to grasp and relates to the problems we have studied in this book. In other words, particle filters are a family of algorithms. A more academic approach would give you a better grasp of this family and the interrelationships between the algorithms, but as in previous chapters I choose to develop concepts based on examples and basic reasoning, and only once that is done go back and develop the theory. This will leave a few of the steps seeming a bit 'magical' since I haven't offered full explanation for their use. Full explanations will follow later in the chapter.\n", + "Before I continue let me point out that particle filters are a family of algorithms. I'm presenting a specific form of a particle filter that is intuitive to grasp and relates to the problems we have studied in this book. A more academic approach would start by defining the characteristics and interrelationships between the algorithms. I choose to develop concepts based on examples and basic reasoning, and only once that is done go back and develop the theory. This will leave a few of the steps seeming a bit 'magical' since I haven't offered full explanation for their use. Full explanations will follow later in the chapter.\n", "\n", - "Taking insight from the discussion in the previous section we start by creating several thousand *particles*. Each particle has a position that represents a possible belief of where the robot is in the scene, and perhaps a heading and velocity. Suppose that when we initialize the filter we have no knowledge of the location of the robot. We would want to scatter the particles uniformly over the entire scene. If there was a large clump of particles near a specific location that would imply that we were more certain that the robot is there. If you think of all of the particles representing a probability distribution, locations where there are more particles represent a higher belief, and locations with fewer particles represents a lower belief.\n", - "\n", - "Think back to the *Discrete Bayes* chapter. In that chapter we modeled positions in a hallway as discrete and uniformly spaced. This is very similar except the particles are randomly distributed.\n", + "Taking insight from the discussion in the previous section we start by creating several thousand *particles*. Each particle has a position that represents a possible belief of where the robot is in the scene, and perhaps a heading and velocity. Suppose that we have no knowledge of the location of the robot. We would want to scatter the particles uniformly over the entire scene. If you think of all of the particles representing a probability distribution, locations where there are more particles represent a higher belief, and locations with fewer particles represents a lower belief. If there was a large clump of particles near a specific location that would imply that we were more certain that the robot is there.\n", "\n", "Each particle needs a weight - ideally the probability that it represents the true position of the robot. This probability is rarely computable, so we only require it be *proportional* to that probability, which is computable. At initialization we have no reason to favor one particle over another, so we would typically assign a weight of $1/n$, where $n$ is the number of particles. We did the same thing in the discrete Bayes chapter. When we initialized the filter we assigned a probability of 1/N to each hallway position. The reason for $1/n$ is simple - the sum of all probabilities must equal one, and of course $\\sum\\limits_{i=1}^n \\frac{1}{n} = 1$.\n", "\n", - "We will be operating on many particles so it is imperative that we are as efficient in our programming as possible. That means storing the particles in an NumPy `array` and making full use of vectorization and ufuncs.\n", + "The combination of particles and weights forms the *probability distribution* for our problem. Think back to the *Discrete Bayes* chapter. In that chapter we modeled positions in a hallway as discrete and uniformly spaced. This is very similar except the particles are randomly distributed in a continuous space rather than constrained to discrete locations.\n", "\n", "To track our robot we need to maintain states for x, y, and heading. We will store `N` particles in a `(N, 3)` shaped array. The three columns contain x, y, and heading, in that order.\n", "\n", "In this problem the robot can move on a plane of some arbitrary dimension, with the lower right corner at (0,0).\n", "\n", - "Here is a partial implementation of this problem. The particles are initially randomly distributed over the space, and are given a random heading. " + "Here is a partial implementation of this problem. The particles are initially randomly distributed over the space with a random heading." ] }, { @@ -658,11 +646,11 @@ "source": [ "### Predict Step\n", "\n", - "The predict step in the Bayes algorithm predicts the movement of the robot and to update our belief in the robot's position by that movement. How would we do that with particles? Each particle represents a possible position for the robot. Suppose we send a command to the robot move 0.1 meters while turning 0.0073 radians. We would want to update each particle by moving it using the same command. If we did that exactly we would soon run into a problem. The robot's controls are not perfect so it will not move exactly as commanded. Therefore we need to add noise to the particle's movements to have a reasonable chance of capturing the actual movement of the robot. If you do not model the uncertainty in the system the particle filter will not correctly model the probability distribution of our belief in the robot's position. \n", + "The predict step in the Bayes algorithm uses the process model to update it's belief in the system state. How would we do that with particles? Each particle represents a possible position for the robot. Suppose we send a command to the robot to move 0.1 meters while turning by 0.007 radians. We could move each particle by this amount. If we did that we would soon run into a problem. The robot's controls are not perfect so it will not move exactly as commanded. Therefore we need to add noise to the particle's movements to have a reasonable chance of capturing the actual movement of the robot. If you do not model the uncertainty in the system the particle filter will not correctly model the probability distribution of our belief in the robot's position. \n", "\n", "If this wasn't a robot, but something you are tracking passively, then you would want to include things like velocity in the particle state and use that estimate to make the prediction. When using particle filters I try to minimize the dimensionality of the problem; if I add 2 random variables I will probably have to increase the number of particles to ensure I have enough samples to correctly sample from the probability distribution of each. This can quickly become intractable. Thus I've excluded velocity from this problem.\n", "\n", - "I cannot easily modify a class definition in Jupyter Notebook, so I will show you the method in text. The entire class is in pf_internal, and we will be importing when we run the filter. \n", + "The predict step for the class ParticleFilter is listed below: \n", "\n", "```python\n", "def predict(self, u, std, dt=1.):\n", diff --git a/animations/particle_animate.ipynb b/animations/particle_animate.ipynb index 51e2b69..538a4bf 100644 --- a/animations/particle_animate.ipynb +++ b/animations/particle_animate.ipynb @@ -1,342 +1,447 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from __future__ import division, print_function\n", - "%matplotlib inline\n", - "import sys\n", - "sys.path.insert(0,'..') # allow us to format the book\n", - "sys.path.insert(0,'../code') \n", - "# use same formatting as rest of book so that the plots are\n", - "# consistant with that look and feel.\n", - "import book_format\n", - "book_format.load_style(directory='..')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from random import uniform\n", - "import matplotlib.pylab as pylab\n", - "from matplotlib import animation\n", - "from gif_animate import animate\n", - "import matplotlib as mpl\n", - "from math import pi\n", - "\n", - "def make_particle():\n", - " return [uniform(0,100), uniform(0,100), uniform(0, 2), uniform(0, 2*pi)]\n", - "\n", - "\n", - "def move(particles, t=1.):\n", - " vx = particles[:, 2]*np.cos(particles[:, 3])\n", - " vy = particles[:, 2]*np.sin(particles[:, 3])\n", - " particles[:, 0] = (particles[:, 0] + vx*t) % 100\n", - " particles[:, 1] = (particles[:, 1] + vy*t) % 100\n", - " \n", - "particles = np.asarray([make_particle() for i in range(1000)])\n", - "\n", - "def panimate(frame):\n", - " move(particles, t=1.)\n", - "\n", - " plt.cla()\n", - " plt.scatter(particles[:, 0], particles[:, 1])\n", - " plt.xlim(0, 100)\n", - " plt.ylim(0, 100)\n", - " plt.gca().get_xaxis().set_ticks([])\n", - " plt.gca().get_yaxis().set_ticks([])\n", - "\n", - " \n", - "animate('13_particle_move.gif', panimate, \n", - " frames=500, interval=50, figsize=(4, 4))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.4.3" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from __future__ import division, print_function\n", + "%matplotlib inline\n", + "import sys\n", + "sys.path.insert(0,'..') # allow us to format the book\n", + "sys.path.insert(0,'../code') \n", + "# use same formattibng as rest of book so that the plots are\n", + "# consistant with that look and feel.\n", + "import book_format\n", + "book_format.load_style(directory='..')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from numpy.random import randn, random, uniform, seed\n", + "import scipy.stats\n", + "\n", + "class ParticleFilter(object):\n", + "\n", + " def __init__(self, N, x_dim, y_dim):\n", + " self.particles = np.empty((N, 3)) # x, y, heading\n", + " self.N = N\n", + " self.x_dim = x_dim\n", + " self.y_dim = y_dim\n", + "\n", + " # distribute particles randomly with uniform weight\n", + " self.weights = np.empty(N)\n", + " self.weights.fill(1./N)\n", + " self.particles[:, 0] = uniform(0, x_dim, size=N)\n", + " self.particles[:, 1] = uniform(0, y_dim, size=N)\n", + " self.particles[:, 2] = uniform(0, 2*np.pi, size=N)\n", + "\n", + "\n", + " def predict(self, u, std):\n", + " \"\"\" move according to control input u with noise std\"\"\"\n", + "\n", + " self.particles[:, 2] += u[0] + randn(self.N) * std[0]\n", + " self.particles[:, 2] %= 2 * np.pi\n", + "\n", + " d = u[1] + randn(self.N)\n", + " self.particles[:, 0] += np.cos(self.particles[:, 2]) * d\n", + " self.particles[:, 1] += np.sin(self.particles[:, 2]) * d\n", + "\n", + " self.particles[:, 0:2] += u + randn(self.N, 2) * std\n", + "\n", + "\n", + " def weight(self, z, var):\n", + " dist = np.sqrt((self.particles[:, 0] - z[0])**2 +\n", + " (self.particles[:, 1] - z[1])**2)\n", + "\n", + " # simplification assumes variance is invariant to world projection\n", + " n = scipy.stats.norm(0, np.sqrt(var))\n", + " prob = n.pdf(dist)\n", + "\n", + " # particles far from a measurement will give us 0.0 for a probability\n", + " # due to floating point limits. Once we hit zero we can never recover,\n", + " # so add some small nonzero value to all points.\n", + " prob += 1.e-12\n", + " self.weights += prob\n", + " self.weights /= sum(self.weights) # normalize\n", + "\n", + "\n", + " def neff(self):\n", + " return 1. / np.sum(np.square(self.weights))\n", + "\n", + "\n", + " def resample(self):\n", + " p = np.zeros((self.N, 3))\n", + " w = np.zeros(self.N)\n", + "\n", + " cumsum = np.cumsum(self.weights)\n", + " for i in range(self.N):\n", + " index = np.searchsorted(cumsum, random())\n", + " p[i] = self.particles[index]\n", + " w[i] = self.weights[index]\n", + "\n", + " self.particles = p\n", + " self.weights = w / np.sum(w)\n", + "\n", + "\n", + " def estimate(self):\n", + " \"\"\" returns mean and variance \"\"\"\n", + " pos = self.particles[:, 0:2]\n", + " mu = np.average(pos, weights=self.weights, axis=0)\n", + " var = np.average((pos - mu)**2, weights=self.weights, axis=0)\n", + "\n", + " return mu, var" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAARIAAAETCAYAAAD6a4mGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXtcVNX6/z8z3GFsQBFBxyugHLAGDD2KIaOmHe8GkXY5\nhfrLc1JE0JNlmXdTzvmaCYiWmVanTA0sj5euXBwMTY/DlHq4itqUiKiDjgJyWb8/aO/mxnUPl8Hn\n/XrxYth77bWfPcz6zFrPetazRIwxBoIgCAGIO9oAgiCsHxISgiAEQ0JCEIRgSEgIghAMCQlBEIIh\nISEIQjAkJITVo1AoIBbTR7kj6dLvfl1dHXbt2oWxY8eiR48esLe3h4eHBx5++GFERUVh3759BuX3\n7NkDsViMNWvWdJDFjaPRaLBhwwZERkbCx8cHYrEYYrEY+fn5DV7zwQcfYObMmfDx8YFUKoVEIoG/\nvz/mz5/f6HUthWvMjf209n3l6r5y5YrZ8yKRCCKRSIj5FicjIwNisRhz5szpaFPaBduONqCtqKur\nw/Tp03H06FG4urpi6tSpkMlkqK6uxvnz55GSkoIff/wRs2bNMrm2s30oOc6cOYM333wTYrEYAwcO\nhKurK8rLyxu95pNPPkFJSQlGjRoFT09PiMVinDt3Drt378ZHH32EgwcPYtKkSRazMSoqCgMGDDB7\nTqFQtLrexv4nH330ESoqKlpdd1vSWT9LlqbLCslnn32Go0ePIjAwEJmZmejWrZvB+fv37yMrK8vs\ntZ012Hf48OFQKpWQy+WQSCRQKBQ4fvx4o9ccPXoUDg4OJse/++47TJw4EbGxsRYXkjFjxlisPg7G\nWIP/l759+1r8fpais36WLA7roixYsICJRCK2devWZpV/8cUXmUgkMvuTmZlpUPbzzz9n48ePZ25u\nbszBwYH5+vqy1157jd2+fduk3v79+zORSMSqqqrY8uXLWf/+/ZmDgwPz8fFh69atY/fv32/1M4aF\nhTGRSMTy8vJadb2rqyuztbVt9f3N2WL8XjXGoUOH2Pjx45mXlxdzcHBgXl5ebPTo0eytt97iyzT0\nPxkwYIDJvfVJT09nIpGIRUVFscLCQhYREcG6d+/OunXrxiZOnMjOnTvHGGOstLSUvfTSS8zLy4s5\nOjqy4OBglp6ebmLrr7/+ytasWcNCQkJYr169mL29Pevduzd75pln2Pnz5w3Krlq1qkG79+zZY1A2\n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\n+5KgLwwOVC8AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pf_internal import plot_pf\n", + "\n", + "seed(1234)\n", + "N = 3000\n", + "pf = ParticleFilter(N, 20, 20)\n", + "xs = np.linspace (1, 10, 20)\n", + "ys = np.linspace (1, 10, 20)\n", + "zxs = xs + randn(20)\n", + "zys = xs + randn(20)\n", + "\n", + "def animatepf(i):\n", + " if i == 0:\n", + " plot_pf(pf, 10, 10, weights=False)\n", + " \n", + " idx = int((i-1) / 3)\n", + " x, y = xs[idx], ys[idx]\n", + " z = [x + randn()*0.2, y + randn()*0.2]\n", + "\n", + " step = (i % 3) + 1\n", + " if step == 2:\n", + " pf.predict((0.5, 0.5), (0.2, 0.2))\n", + " pf.weight(z=z, var=.6)\n", + " plot_pf(pf, 10, 10, weights=False)\n", + " plt.title('Step {}: Predict'.format(idx+1))\n", + " elif step == 3:\n", + " pf.resample()\n", + " plot_pf(pf, 10, 10, weights=False)\n", + " plt.title('Step {}: Resample'.format(idx+1))\n", + "\n", + " else:\n", + " mu, var = pf.estimate()\n", + " plot_pf(pf, 10, 10, weights=False)\n", + " plt.scatter(mu[0], mu[1], color='g', s=100, label='PF')\n", + " plt.scatter(x, y, marker='x', color='r', s=180, lw=3, label='Robot')\n", + " plt.title('Step {}: Estimate'.format(idx+1))\n", + " #plt.scatter(mu[0], mu[1], color='g', s=100, label=\"PF\")\n", + " #plt.scatter([x+1], [x+1], marker='x', color='r', s=180, label=\"True\", lw=3)\n", + " plt.legend(scatterpoints=1, loc=2)\n", + " plt.tight_layout()\n", + "\n", + "from gif_animate import animate\n", + "animate('particle_filter_anim.gif', animatepf, \n", + " frames=40, interval=800, figsize=(4, 4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.0" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/animations/particle_filter_anim.gif b/animations/particle_filter_anim.gif new file mode 100644 index 0000000..630af84 Binary files /dev/null and b/animations/particle_filter_anim.gif differ