Minor wording changes.

This commit is contained in:
Roger Labbe committed 2015-07-08 16:12:23 -07:00
1 parent 600e7ca167
commit 540e61313b
1 file changed
+65 -52
+65 -52
View File
@@ -270,8 +270,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"** author's note: this is being written now. It is not ready to be read.**\n",
"** Depends on a development version of FilterPy which you probably don't have.**\n",
"## Motivation\n",
"\n",
"Here is our problem. We have object 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",
"\n",
@@ -318,9 +317,9 @@
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x447d1d0>"
"<matplotlib.figure.Figure at 0x57ea550>"
]
},
"metadata": {},
@@ -351,7 +350,10 @@
"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",
"\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 just 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.\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 just 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",
"\n",
"\n",
"** Generic Particle Filter Algorithm**\n",
"\n",
"1. **Randomly generate a bunch of particles**\n",
" \n",
@@ -377,21 +379,21 @@
" \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",
"\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 asterisk is the actual position of the robot, and the large circle is the computed weighted mean position."
"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."
]
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 71,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x7dc9048>"
"<matplotlib.figure.Figure at 0x96c09b0>"
]
},
"metadata": {},
@@ -466,7 +468,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x825eac8>"
"<matplotlib.figure.Figure at 0x966bb00>"
]
},
"metadata": {},
@@ -518,7 +520,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x82167b8>"
"<matplotlib.figure.Figure at 0x8f05160>"
]
},
"metadata": {},
@@ -552,7 +554,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x8e8c4e0>"
"<matplotlib.figure.Figure at 0x8f2ca58>"
]
},
"metadata": {},
@@ -584,9 +586,9 @@
"\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",
"\n",
"Each particle needs a weight - a probability that it represents the true position of the robot. 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",
"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 its vectorization capabilities.\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",
"\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",
@@ -631,7 +633,7 @@
"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 m at an angle of 1.3 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 - it is very unlikely that any given particle exactly represents the robot's position. So, we will add some noise to the particle movement proportional to the noise in the real robot's movement mechanism. If it is highly likely to overshoot and very unlikely to undershoot then we will do the same to the particles - make most overshoot, and a few undershoot. 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 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",
"\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",
@@ -678,6 +680,8 @@
"\n",
"In the literature this part of the algorithm is called **Sequential Importance Sampling**, or SIS, and the equation for the weights is called the **importance density**. I will give it theoretical underpinnings in a following section. For now I hope that this makes intuitive sense. If we weight the particles according to how how they match the measurements they *probably* are a good sample for the probability distribution of the system after incorporating the measurements. Theory changes 'probably are a good sample' to 'are a good sample'. Different problems will need to tackle this step in slightly different ways.\n",
"\n",
"** AUTHORS NOTE: NO. WE ARE SAMPLING FROM EVOLUTION USING IS TO GET POSTERIOR**\n",
"\n",
"\n",
"And that is the general framework for the particle filter. The particles and their weights represent the probability distribution of our belief. This algorithm works well for multiple objects; clusters of particles will group around each object. We can compute the position of the robot by computing the mean of the point positions multiplied by their weights. If we have multiple objects we have to run some sort of clustering algorithm to determine which particles belong to which object, but that isn't hard. \n",
"\n",
@@ -745,7 +749,7 @@
"source": [
"## SIR Filter - A Complete Example\n",
"\n",
"There is much more to cover, but we have covered enough to implement a full particle filter. The filter in this form is called the **Sampling Importantance Resampling filter**, or SIR.\n",
"There is more, but we have covered enough to implement a full particle filter. The filter in this form is called the **Sampling Importance Resampling filter**, or SIR.\n",
"\n",
"The code above has been placed in the file *./code/RobotLocalizationParticleFilter.py* which we will import. If you want to read the source code, comment out the %load command in the next cell and press ctrl-return to execute it.\n",
"\n",
@@ -766,7 +770,7 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 56,
"metadata": {
"collapsed": false
},
@@ -780,9 +784,9 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x8700780>"
"<matplotlib.figure.Figure at 0xb19cf28>"
]
},
"metadata": {},
@@ -804,7 +808,10 @@
" pf.create_gaussian_particles(mean=initial_x, var=(5, 5, np.pi/4))\n",
" \n",
" if plot_particles:\n",
" plt.scatter(pf.particles[:, 0], pf.particles[:, 1], alpha=.25, color='g')\n",
" alpha = .20\n",
" if N > 5000:\n",
" alpha *= np.sqrt(5000)/np.sqrt(N) \n",
" plt.scatter(pf.particles[:, 0], pf.particles[:, 1], alpha=alpha, color='g')\n",
" \n",
" xs = []\n",
" pos = np.array([0., 0.])\n",
@@ -823,12 +830,12 @@
" xs.append(mu)\n",
" if plot_particles:\n",
" plt.scatter(pf.particles[:, 0], pf.particles[:, 1], color='k', marker=',', s=1)\n",
" p1 = plt.scatter(pos[0], pos[1], marker='+', color='k', s=120)\n",
" p1 = plt.scatter(pos[0], pos[1], marker='+', color='k', s=180, lw=3)\n",
" p2 = plt.scatter(mu[0], mu[1], marker='s', color='r')\n",
" \n",
" xs = np.array(xs)\n",
" plt.plot(xs[:, 0], xs[:, 1])\n",
" plt.legend([p1, p2], ['Actual', 'PF'], loc=4)\n",
" #plt.plot(xs[:, 0], xs[:, 1])\n",
" plt.legend([p1, p2], ['Actual', 'PF'], loc=4, numpoints=1)\n",
" plt.xlim(*xlim)\n",
" plt.ylim(*ylim)\n",
" print('final position error, variance:', mu, var)\n",
@@ -866,7 +873,7 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": 57,
"metadata": {
"collapsed": false
},
@@ -880,9 +887,9 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x87179e8>"
"<matplotlib.figure.Figure at 0xaada240>"
]
},
"metadata": {},
@@ -890,7 +897,7 @@
}
],
"source": [
"seed(2) \n",
"seed(2)\n",
"run_pf1(N=5000, iters=8, plot_particles=True, xlim=(0,8), ylim=(0,8))"
]
},
@@ -918,7 +925,7 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": 37,
"metadata": {
"collapsed": false,
"scrolled": true
@@ -933,9 +940,9 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x8eca1d0>"
"<matplotlib.figure.Figure at 0x8e885c0>"
]
},
"metadata": {},
@@ -970,7 +977,7 @@
},
{
"cell_type": "code",
"execution_count": 12,
"execution_count": 58,
"metadata": {
"collapsed": false
},
@@ -984,9 +991,9 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x8efb400>"
"<matplotlib.figure.Figure at 0x9517ac8>"
]
},
"metadata": {},
@@ -1009,7 +1016,7 @@
},
{
"cell_type": "code",
"execution_count": 13,
"execution_count": 30,
"metadata": {
"collapsed": false
},
@@ -1025,7 +1032,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x92072b0>"
"<matplotlib.figure.Figure at 0x9684e10>"
]
},
"metadata": {},
@@ -1058,7 +1065,7 @@
"\n",
"The idea is simple, and we already used it. We draw samples from the known probability distribution, but *weight the particles* according to the distribution we are interested in. We can then compute properties such as the mean and variance by computing the weighted mean and weighted variance of the samples.\n",
"\n",
"For the robot localization problem we drew samples from the probability distribution that we computed from our state model prediction step. In other words, we said 'the robot was there, it is perhaps moving at this direction and speed, hence it might be here'. Of course the robot might have done something completely different than we predicted (fell off a cliff, hit by a mortar round, airlifted away, etc), so that probability distribution is not correct. It seems like we are stymied, but we are not because we can use importance sampling. So we drew particles from that likely incorrect probability distribution, then weighted them according to how well the particles match the measurements. That weighting is based on the true probability distribution, so according to the theory the resulting mean, variance, etc, will be correct. Magic!\n",
"For the robot localization problem we drew samples from the probability distribution that we computed from our state model prediction step. In other words, we reasoned 'the robot was there, it is perhaps moving at this direction and speed, hence it might be here'. Of course the robot might have done something completely differen. It may have fell off a cliff, been hit by a mortar round or airlifted away, and so on. In each case the probability distribution is not correct. It seems like we are stymied, but we are not because we can use importance sampling. We drew particles from that likely incorrect probability distribution, then weighted them according to how well the particles match the measurements. That weighting is based on the true probability distribution, so according to the theory the resulting mean, variance, etc, will be correct. Magic!\n",
"\n",
"How can that be true? I'll give you the math; you can safely skip this if you don't plan to go beyond the robot localization problem. However, other particle filter problems require different approaches to importance sampling, and a bit of math helps. Also, the literature and much of the content on the web uses the mathematical formulation in favor of my rather imprecise \"imagine that...\" exposition. If you want to understand the literature you will need to now the following equations.\n",
"\n",
@@ -1128,12 +1135,12 @@
"\n",
"### Multinomial Resampling\n",
"\n",
"Multinomial resampling is the algorithm that I used while developing the robot localization example. The idea is simple. Compute the cumulative sum of the normalized weights. This gives you an array of increasing values from 0 to 1. Here is a plot which illustrates how this spaces out the weights."
"Multinomial resampling is the algorithm that I used while developing the robot localization example. The idea is simple. Compute the cumulative sum of the normalized weights. This gives you an array of increasing values from 0 to 1. Here is a plot which illustrates how this spaces out the weights. The colors are meaningless, they just make the divisions easier to see."
]
},
{
"cell_type": "code",
"execution_count": 14,
"execution_count": 22,
"metadata": {
"collapsed": false
},
@@ -1142,14 +1149,14 @@
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0.1 0.3 0.4 1. ]\n"
"cumulative sume is [ 0.1 0.3 0.4 1. ]\n"
]
},
{
"data": {
"image/png": "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\nOP8CSdsd9j7kQ7EAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x980edd8>"
"<matplotlib.figure.Figure at 0xb70f240>"
]
},
"metadata": {},
@@ -1158,7 +1165,7 @@
],
"source": [
"from pf_internal import plot_cumsum\n",
"print(np.cumsum([.1, .2, .1, .6]))\n",
"print('cumulative sume is', np.cumsum([.1, .2, .1, .6]))\n",
"plot_cumsum([.1, .2, .1, .6])"
]
},
@@ -1190,7 +1197,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x98571d0>"
"<matplotlib.figure.Figure at 0xa85a438>"
]
},
"metadata": {},
@@ -1263,7 +1270,7 @@
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAABCCAYAAACSCTtfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEZJJREFUeJzt3XlQE+cbB/DvhgQQ5UYqYDWgiHhU6oUGVNTKoHZEDrW2\nVrxGp3iMVK2oqFBxHBE6gx2H6nhji62VQ6tCFRBERB0R0RlvDIJCaTmiVZDr/f2RSdqYDcYGJPH3\nfGaYIe+7++6zG9gn+77vbjjGGAMhhBCiA0FnB0AIIcTwUTIhhBCiM0omhBBCdEbJhBBCiM4omRBC\nCNEZJRNCCCE6o2RCNDp//jwEAgGioqK0XicyMhICgQC5ubkdGBk/Hx8fCAT0J91RBAIBxo8fr1Km\neL9zcnI6KSqiL+g/j7wRx3GdHYLWDClWQ/T68eU4TvlD/r8JOzsAor88PT1x584d2NnZdXYoRE8t\nW7YMs2fPxocfftjZoZBORsmEaNSlSxf069evs8MgeszW1ha2tradHQbRA9TNpeekUqmyr/rp06dY\nsGABHBwcIBQKkZaWplwuOzsb06ZNQ/fu3WFiYgKxWIylS5fijz/+UGuzpKQES5YsgaurK8zMzGBj\nY4MBAwZg4cKFKCsrUy7X1pjJtWvX4OfnB3Nzc1haWmLSpEkoKChocx/mz5/PWz9v3jwIBAI8fvxY\npfzgwYMICgqCi4sLzMzMYGlpCW9vbyQmJmp17N5ELBZDIBCgsbERkZGRcHV1hYmJCcLCwpTLPHjw\nAIsWLULv3r1hamoKe3t7BAYG4vr162rtPX/+HNHR0Rg8eDCsrKxgbm4OFxcXBAUFqY0ppKamYs6c\nOejXrx+6deuGbt26YdiwYYiPj0dra6vGY5STk4OkpCQMGzYMXbt2hZOTE9asWYOmpiYAQHp6OsaM\nGQMLCwvY2NggJCQEtbW1be77+vXrIRaLYWpqCldXV0RHRyvbexNNY2QCgQDOzs54+fIl1qxZg169\neinbj4mJ4W2LMYb4+HgMGDAAXbp0Qc+ePbF8+XLIZDKIxWI4OztrFRPpHHRlYiCqq6shkUhgZWWF\nWbNmobW1VfmJcPv27Vi3bh1sbW0xdepU9OjRAzdu3EBCQgJOnDiBgoICODk5AQAqKiowYsQIPH/+\nHJMnT0ZQUBAaGxtRWlqK5ORkfPHFF2pdFq/3h+fn5+OTTz5BU1MTAgMD4erqihs3bsDHxwcTJkzQ\nuA9t9avz1YWGhmLQoEHw8fGBg4MD/vrrL5w+fRohISG4c+cOtm7dqvXxa4siOUyePBl2dnbKk1ZW\nVhb8/f3R2NiITz/9FK6urigvL0dycjLOnDmDtLQ0+Pr6ApCfCP38/HDp0iV4enpi4cKFMDY2Rnl5\nOfLy8pCZmYlx48Ypt7lu3ToYGRlh9OjRcHJygkwmQ2ZmJsLCwnDlyhX8+OOPvLF+//33+P333xEQ\nEAAfHx+cOHECcXFxqK6uxqRJk7BgwQL4+/tj1KhROHfuHBITE/Hnn3/i9OnTvO0FBwejsLAQwcHB\nEIlESElJwaZNm3Dt2jWkpKTodFybmprg6+uLiooKTJ06FUKhECkpKQgPD0dDQwM2bdqksvzSpUvx\nww8/wNHREYsXL4axsTFOnjyJK1euoLm5GcbGxjrFQzoYI3rt0aNHjOM4xnEcCwkJYS0tLSr1OTk5\njOM4JpFImEwmU6lLTExkHMexoKAgZdnOnTsZx3EsPj5ebVuNjY3s77//Vr7Ozs5mHMexqKgoZVlr\naytzc3NjAoGAJScnq6y/a9cuxnEcEwgELCcnR20f5s+fz7uPISEhjOM4VlpaqlJeUlLCG+PEiROZ\nUChk5eXlKnXjxo1jAoGAdxt8evfuzTiOY0OGDGHV1dUqdXV1dczW1pbZ2dmx27dvq9Tdvn2bmZub\nM0dHR/bq1SvGGGPFxcWM4zgWEBDAu63X2+fbt9bWVuWxKCgoUKlTlNva2rKHDx8qy2UyGevevTsz\nMjJiNjY27PLly8q6xsZGNmjQIMZxHCsqKuLddzc3N1ZXV6csr6+vZyNHjmQcx7GkpCSVdTiOY+PH\nj1cp27x5M+M4TuX9VizLcRybOnUqa2hoUJZXVVUxKysrZmVlxZqampTlubm5jOM41q9fP5V4Ghsb\n2dixYxnHcczZ2VntmBH9Qd1cBsLExASxsbFqU1/j4+MBALt374aFhYVK3Zw5c+Dh4YG0tDS8ePFC\npc7U1FRtGyKRCF27dm0zjvz8fNy7dw8SiQQBAQEqdV999RX69u0L1k4Poubr1hCJRAgNDUVLSwuy\nsrLaZTtbtmyBjY2NStnhw4dRU1ODzZs3o3///ip1/fv3x6JFi1BRUYHMzEyVOr7jCkCtfb594zgO\nK1asAACcPXuWt50VK1bAxcVF+drCwgLTpk1Da2sr/P39MXLkSGWdSCTCzJkzAQDFxcW87W3cuBGW\nlpYq8UdHRwMA9u/fz7uOtjiOw86dO2FiYqIs6969O6ZNmwaZTIZ79+4pyw8dOgRAfsX273hEIhG2\nbdumUxzk3aBuLgMhFot5Z1VdvHgRQqEQx48fx6+//qpW/+rVK7S0tODu3bsYOnQo/P39sWHDBixb\ntgzp6enw9fXF6NGj8dFHH2k1vbOwsBAAVLpsFDiOg5eXFx48ePAf9lDd48ePsX37dmRmZqKsrAz1\n9fUq9U+fPtV5GxzHqZyAFS5evAgAuHHjBiIjI9Xq7969CwC4ffs2Jk+ejIEDB8LDwwNHjx6FVCqF\nv78/vLy8MHz4cN4EU11djR07duD06dMoKSnBy5cvVeqfPHnCG+/HH3+sVtajRw+NdQ4ODgCA8vJy\ntTqO43jfxzFjxgAAioqKeGPQlqWlpUriU1B0o/57LEcxBuXt7a22vKenJ4yMjHSKhXQ8SiYGQnHC\neF11dTVaWlravLGQ4zjllUmvXr1w9epVREVFIT09HampqQCADz74AMuXL0d4eHibN/7JZDLl8nw0\nlb+tkpISjBw5EnV1dRg7diz8/PxgaWkJIyMjPHr0CIcOHcKrV6/aZVt8MVdXVwMA9u3bp3G9fx9X\ngUCArKwsREdH4/jx41i3bh0AwMzMDLNmzUJMTIxyjKuurg4jRoyAVCqFp6cn5s2bBxsbGwiFQtTW\n1iI+Pl7jvv37U7uCUCh8Y52mAXW+fTc1NYWFhYXyvf6vrKyseMsVMbW0tCjLZDIZOI7jjcfIyIhm\njBkASiYGQtNVg6WlJZqbm1FXV6d1W25ubvjpp5/Q2tqKmzdvIisrC7t27UJERARaWlqwceNGjesq\nTlh8s8Q0lSuSU3NzM+86fLF/9913qKmpwcGDBzF37lyVuqSkJGW3SEdR7GdhYSE8PDy0WsfKygqx\nsbGIjY2FVCpFbm4u9u/fjwMHDkAqlSq7xPbu3QupVIrIyEi1QehLly4puy7fhcrKSrUJFw0NDXj2\n7Nk7vb9I0UVbWVkJc3NzlbqWlhZUV1fDzMzsncVD3h6NmRg4iUSCZ8+eaewTb4tAIMCQIUMQFhaG\nM2fOAIDySkWTYcOGAZBPG35da2sr8vLy1Mqtra0BQGXasUJzczOuX7+uliwfPHgAjuMQFBSkts67\neHSHRCIBgP/8WBixWIy5c+ciMzMTPXv2RHZ2Np4/fw4Aym7Azto3BcYY7/YU+8zXbdZRhg4dCsYY\n799PQUGBylUM0U+UTAzc119/DQBYvHgxbz97Q0ODyj9oYWEh75VARUUFALzx059EIoGbmxvy8/OR\nnJysUpeQkICHDx+qJQZzc3O4u7sjLy8Pt27dUpYzxhAVFcWbZJydncEYQ3Z2tkp5RkYG9u7d22aM\n7WH+/PmwtrbGli1beO+fUZz4FN1HUqkUJSUlass9e/YML168gLGxsbJ7RzH4/vq+Xb9+/Z0PNm/Z\nskWlO6u+vh4REREAoPG+oI6guPrctm2byt+n4j4Yov+om8vA+fj4YMeOHVi7di1cXV0xZcoUODs7\no76+Ho8fP0Zubi5cXFyUA+eHDx/G7t274eXlhT59+sDW1halpaVIS0uDUCjEN99888Zt7tu3D5Mm\nTcLMmTMRGBiIvn37ori4GOfOnYOfnx/S09PV1lm7di3mzZsHb29vzJgxA127dsXFixdRXl4OHx8f\ntSud0NBQHDhwADNmzEBwcDAcHBxw69YtZGRkYObMmfj55595Y2uvmWTW1tY4fvw4pk+fDolEggkT\nJmDAgAEQiUQoKyvD5cuXUVZWhrq6OohEIhQVFSEwMBDDhw+Hu7s7HB0dUVtbi99++w21tbVYvXo1\nunTpAkB+4tyxYwdWrlyJ7Oxs9O3bF/fv38epU6cQFBSEo0ePtss+aMPd3R0DBw5EcHAwjIyMkJqa\nikePHmH69On47LPP3lkcY8eOxeLFi7Fnzx4MGjQIgYGBMDExwYkTJ2BtbQ1HR0d6iKeeo2TyHli1\nahW8vb0RHx+PCxcu4OTJk7CwsICjoyO+/PJLzJo1S7ns559/jqamJuTn56OoqAgvXryAk5MT/P39\nERYWhuHDh79xexKJBBcuXMCGDRuUiWPUqFHIyclBeno6MjIy1NZRfPKMjY1FYmIiLCws4Ovri9TU\nVERERKhdzQwePBjZ2dmIiIjAqVOn0NzcDA8PD6SkpMDS0pI3mbztAwfftKyPjw9u3ryJuLg4pKen\nIz8/H0KhEI6OjvDy8oK/v7+yf3/EiBFYv349zp8/j7Nnz6KmpgZ2dnZwd3dHfHy8SpeWg4MDLly4\ngPDwcOTl5SEjIwPu7u5ISEjAxIkTeZNJW/umS90vv/yCyMhIJCUloaKiAj179sS3336L8PDwNo+N\nNu2/7ToJCQno378/du/ejT179sDOzg4BAQHYunUrnJycYG9v/1bbIe8Wx9rroxwhxLine truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x91f32e8>"
"<matplotlib.figure.Figure at 0x8f27470>"
]
},
"metadata": {},
@@ -1306,7 +1313,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x7dbbe10>"
"<matplotlib.figure.Figure at 0x8ec2dd8>"
]
},
"metadata": {},
@@ -1365,7 +1372,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x7d1c208>"
"<matplotlib.figure.Figure at 0x9550710>"
]
},
"metadata": {},
@@ -1426,7 +1433,7 @@
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAABCCAYAAACSCTtfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEghJREFUeJzt3XtUFOX/B/D3LCw3ud8EJF0oVBRNA8HwBoKm6RGBVbMU\nhUw7aKgn+Z70lFKinlDsYMf0mHmjQkFAvGBeADFF1EREO2gqroLJQbmsJCgq8/tjf7M67CwsLAuK\nn9c5HeR5Zmc+Mz0zH+Z5npllWJZlQQghhGhB1NkBEEIIef1RMiGEEKI1SiaEEEK0RsmEEEKI1iiZ\nEEII0RolE0IIIVqjZNIFxcTEQCQS4eTJkxp/RiaTQSQSITw8XIeRdYzZs2dDJBLhzp07Wq3Hz88P\nIhGdIroiEong7+/PK+Pabm5ubidFRdqKzpQ3BJcsmp68TTEM00ER6Q7DMO22H13heLzKmh5f7v8d\nHffXj35nB0A6BndyqjtJnZ2dcfXqVVhYWHRkWDqxZs0aLF26FE5OTp0dCmmlBQsWYPr06Xjrrbc6\nOxTSSpRM3hAtvehAX18fvXv37qBodMvBwQEODg6dHQZpAxsbG9jY2HR2GKQNqJurnb3cnVRRUYGI\niAh0794dpqamGD58OPLy8gAAtbW1WLRoEXr27AkjIyN4eHggNTVVZX0tjX9o0nW1Y8cOuLq6AgBO\nnDgBkUik/O/bb7/lxd10zIQbf8jNzcXevXvh7e2Nbt26wcbGBtOnT8e///4ruM2SkhKEh4fD2dkZ\nhoaGcHBwwLRp03D58mXB+LhY/vrrL4wbNw4WFhawtrbGlClTcPfuXQDAtWvXIJVKYWtrCxMTE4we\nPVpwferGTHbs2IHQ0FC4urrCxMQEFhYWGD58OBITE5s9fpqSSCQQiURoaGhATEwM3NzcYGhoiMWL\nFyuXuXHjBubMmYNevXrByMgI9vb2CAkJwcWLF1XWV1tbi9jYWAwYMACWlpYwMzODq6srQkNDVcYU\n9u3bhxkzZqB3794wNTWFqakpPD09kZCQgMbGRrXHKDc3F0lJSfD09ES3bt3Qo0cPREdH4+nTpwCA\nP/74AyNGjIC5uTmsra0xa9YsVFdXN7vvy5Ytg0QigZGREdzc3BAbG6tcX0vUtXeRSAQXFxfU1dUh\nOjpaed64ubkhLi5OcF0syyIhIQH9+vWDsbExnJ2d8cUXX0Aul0MikcDFxUWjmIhm6M5ER2pqajBs\n2DDY2Nhg5syZKC0txd69ezFmzBicPn0aERERaGhoQEhICORyOZKSkjB16lTk5eXBx8enVdtqqX95\n8ODBWLhwIRISEiCRSDB79mxlnZ+fn0br+umnn7B//34EBQXB398f+fn52LNnDy5duoTCwkIYGBgo\nly0oKEBAQAAePnyIiRMnYsCAAbhx4wbS0tJw4MABZGRkYMyYMSrbOH/+POLi4hAYGIh58+YhPz8f\nqampuHz5MlJSUjBixAh4enoiIiICf//9Nw4fPozAwECUlJSgW7duLe5HZGQkPDw84OfnB0dHRzx4\n8ACZmZmYNWsWrl69ilWrVjV7HDXFJYfx48fD1tZWedHKzs5GUFAQGhoaMHHiRLi5uaGsrAxpaWk4\nfPgwMjIyMHbsWACKC+G4ceNw5swZ+Pj44NNPP4WBgQHKyspw6tQpZGVlYdSoUcptLl26FHp6enj/\n/ffRo0cPyOVyZGVlYfHixTh37hx+++03wVh//PFHHD16FMHBwfDz88P+/fsRHx+PyspKjBkzBhER\nEQgKCsLQoUNx/PhxJCYm4v79+8jMzBRcn1QqRUFBAaRSKcRiMdLT07F8+XJcuHAB6enpWh3Xp0+f\nYuzYsbh37x4mTJgAfX19pKen46uvvsLjx4+xfPly3vLz58/H5s2b4eTkhLlz58LAwAAHDhzAuXPn\n8OzZM16bJe2AJe3q1q1bLMMwLMMw7MKFC3l1q1evZhmGYS0sLFipVMo+ffpUWff777+zDMOwwcHB\nvM+sWLGCZRiGzc3NFdwewzCsv79/i5+RyWSCyzaNOzw8nFc+a9YsZcxXrlzh1X388ccswzBscnKy\nsqyxsZHt168fyzAMu2vXLt7yx48fZ0UiEWtvb8/W1dUpy7dv3648ZmlpabzPjBs3Trn99evX8+rm\nzp3LMgzDJiQkCMZ8+/ZtXnlJSYnKfjc0NLABAQGsvr4+W1ZWxqsbNWoUKxKJVD6jTq9evViGYdh3\n332Xrays5NXV1NSwNjY2rK2tLVtcXMyrKy4uZs3MzFgnJyf2yZMnLMuybFFRkWB74DRdv9C+NTY2\nKo9Ffn4+r44rt7GxYW/evKksl8vlrJ2dHaunp8daW1uzZ8+eVdY1NDSwHh4eLMMwbGFhoeC+9+nT\nh62pqVGW19fXs97e3izDMGxSUhLvM5q2XW5ZhmHYCRMmsI8fP1aWV1RUsJaWlqylpSXvfDp58iTL\nMAzbu3dvXjwNDQ3syJEjWYZhWBcXF5VjRtqOurl0xNTUFKtXr+aVzZw5E4Ci+yI+Ph76+i9uDKdN\nmwZ9fX1cunRJJ/GwWr4cOioqCv379+eVffbZZwAUdxScvLw8FBcXw9vbW7m/nICAAAQHB+P+/fvI\nyMhQ2Yafnx+Cg4N5ZZ988gkAwM7OjtddBAAzZswAAI2PmVC3hlgsRmRkJJ4/f47s7GyN1tOSlStX\nwtramle2a9cuVFVVYcWKFejbty+vrm/fvpgzZw7u3buHrKwsXp2RkZHgNpquX2jfGIZBVFQUAODY\nsWOC64mKilJ2gQKAubk5Jk2ahMbGRgQFBcHb21tZJxaLMXXqVABAUVGR4Pq++eYb3iQOIyMjxMbG\nAgC2bdsm+BlNMQyDDRs2wNDQUFlmZ2eHSZMmQS6X459//lGW79y5E4Diju3leMRiMdasWaNVHEQY\ndXPpiJubG0xMTHhl3KCwpaUlevbsyasTiUSwt7dHWVlZh8XYGl5eXiplzs7OAMDrQy8oKAAAjB49\nWnA9gYGBSEtLw8WLF/HRRx/x6gYPHqyyPHfMBg4cqFLn6OgIABofszt37uD7779HVlYWSktLUV9f\nz6tXN/7TGgzD8C7AnNOnTwNQJL6YmBiV+mvXrgEAiouLMX78ePTv3x+DBg3C7t27IZPJEBQUhGHD\nhsHLy0swwVRWVmLt2rXIzMxESUkJ6urqePXcuFNTzR1zobrmjjnDMLyuN86IESMAAIWFhYIxaMrC\nwoKX+DjczK+X2yE3BjV8+HCV5X18fKCnp6dVLEQVJRMdEZpiy92JqJt+q6+vj2fPnuk0rraytLRU\nKeP25/nz58oyuVwOAGpnU3HlNTU1KnWtPWZcnSaDuyUlJfD29kZNTQ1GjhypHOTX09PDrVu3sHPn\nTjx58qTF9Wiie/fuKmWVlZUAgF9++UXt5xiGwaNHjwAo/rjIzs5GbGwsUlNTsXTpUgCAiYkJpk2b\nhri4OOWsp5qaGgwZMgQymQw+Pj6YPXs2rK2toa+vj+rqaiQkJKjdt/Y+5kL7bmRkBHNzc2XbaCuh\nNvhyTE3bIcMwgvHo6enRjDEdoGTyiuOewBZKMkIX5M7GXYDKy8sF6+/du8dbrqOsX78eVVVV2LFj\nB8LCwnh1SUlJym4RXeH2t6CgAIMGDdLoM5aWlli3bh3WrVsHmUyGkydPYtu2bdi+fTtkMpmyS2zr\n1q2QyWSIiYlRGYQ+c+YMEhIS2ndnmlFeXq7yjMjjx4/x8OFD2Nradlgc5ubmynjMzMx4dc+fP0dl\nZaVKzwHRDo2ZvOKsrKwAQPDVIC+PVbSEu61/+a83XfD09AQAteMP3AWQW66j3LhxAwzDIDQ0VKWu\nI17d4evrCwCtesXNyyQSCcLCwpCVlQVnZ2fk5OSgtrYWgGLfAHTavnFYlhXcHrfPQt1muvLee++B\nZVmcOnVKpS4/P1/n58GbiJLJK27o0KEAFN0jL9+dPHjwANHR0Rqvh0tKpaWl7RtgE76+vnB3dxec\njpqdnY20tDTY2dkhKChIp3E05eLiApZlkZOTwys/cuQItm7dqvPth4eHw8rKCitXrkR+fr5KPXfh\n47qPZDIZSkpKVJZ7+PAhHj16BAMDA2X3Djf43nTfLl682OGDzStXruR1Z9XX1+Prr78GgA597xt3\n97lmzRreHTz3HAxpf9TN9YobMmQI/P39kZOTAy8vLwQEBKCqqgqZmZkIDAxUO6umKVNTU/j6+iIv\nLw+TJk3C4MGDIRaLMWrUKOUAaXvZuXMnAgMDERYWhuTkZHh4eODmzZtITU2FkZERdu3apXaWkq5E\nRkZi+/btmDJlCqRSKRwdHXHlyhUcOXIEU6dOxZ49ewQ/p+0sOI6VlRVSU1MxefJk+Pr6YvTo0ejX\nrx/EYjFKS0tx9uxZlJaWoqamBmKxGIWFhQgJCYGXlxfc3d3h5OSE6upqHDx4ENXV1ViyZAmMjY0B\nKC6ca9euxaJFi5CTk4N33nkH169fx6FDhxAaGordu3e3yz5owt3dHf3794dUKoWenh727duHW7du\nYfLkySoTLnRp5MiRmDt3LrZs2QIPDw+EhITA0NAQ+/fvh5WVFZycnOglnu2MjuYrRN0Dg+np6fj8\n889RUVGBjRs3Ij8/H9HR0Wqf3Fb3orzExERMnjwZZ86cwapVq7BixQqVv2Y1XVdzvLy8cOHCBYSF\nheHChQtYt24dTpw4gZCQEOTn5+ODDz7QehutjXnAgAHIycmBr68vDh06hM2bN+O///5THltN19PS\ndpvj5+eHy5cvIyoqCmVlZdi6dSt+/vlnFBUVYdiwYUhKSlL27w8ZMgTLli2DgYEBjh07hh9++AEH\nDx6Eu7s7UlJSeE99Ozo64s8//8SECRNw6tQpbNy4EaWlpdi0aZPaO5Pm9k2buuTkZLine truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x873a908>"
"<matplotlib.figure.Figure at 0x96a4cf8>"
]
},
"metadata": {},
@@ -1436,7 +1443,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x8e83cc0>"
"<matplotlib.figure.Figure at 0x8e805f8>"
]
},
"metadata": {},
@@ -1446,7 +1453,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x920d2b0>"
"<matplotlib.figure.Figure at 0x95bb940>"
]
},
"metadata": {},
@@ -1456,7 +1463,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x8e895f8>"
"<matplotlib.figure.Figure at 0x9611828>"
]
},
"metadata": {},
@@ -1489,9 +1496,15 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"### SIR Filter Discussion and Summary\n",
"### Types of Particle Filters\n",
"\n",
"The SIR filter was one of the earlier particle filters invented, and it has various strengths and weaknesses. On the plus side it places very few restrictions on the problem. You need to know the behavior of the state model so that the particles can be propagated forward. You need to know the measurement functions so that measurements can be converted into state space. Finally, you need to be able to specify the likelyhood function so that the resulting probability is at least proportional to the "
"The idea behind particle filtering is quite straightforward. As a result the idea has been invented multiple times in different fields using different nomenclature. This gives the field a rather unsystematic organization that can be hard to summarize.\n",
"\n",
"However, we can start with a few basics. The first term to understand is Sequential importance sampling (SIS). This is the particle filter presented above without resampling. As already discussed, it approximates the posterier distribution (the probability distribution after the measurement is incorporated) by drawing a sample of weighted particles via importance sampling. The particles are then recursively updated them based on the measurements. This algorithm quickly generates due to particle degeneracy, but the idea forms the backbone of all particle filters I am aware of.\n",
"\n",
"The next particle filter is the Sampling Importance Resampling, or SIR. This is the particle filter that we implemented. It improves SIS by adding a resampling step that strives to duplicate particles with higher weights, and to kill of particles with lower weights. Though I have not emphasized this point, this can be viewed as an evolutionary algorithm where the fittest particles survive. Some of the literature takes that viewpoint, so if an article is talking about evolutionary MCMC methods you may want to check if they mean a particle filter. \n",
"\n",
"The SIR filter has various strengths and weaknesses. On the plus side it places very few restrictions on the problem. You need to know the behavior of the state model so that the particles can be propagated forward. You need to know the measurement functions so that measurements can be converted into state space. Finally, you need to be able to specify the likelihood function. A major weakness is that it performs resampling without taking the measurements into account. This is very inefficient -"
]
},
{
@@ -1533,7 +1546,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.1"
"version": "3.4.3"
}
},
"nbformat": 4,