Added animation of dog tracking.
I animate the dog update->predict cycle with both the estimate and variance being shown.
This commit is contained in:
1 parent
0952f14c75
commit
1fca111567
4 files changed
+60
-136
No files matched your search
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:ce50ae76601ee29b27998c3d04ed65d7a05c21cf63a83e520527e96fff2359e3"
|
||||
"signature": "sha256:6bbf3b69472f466f37cf43314d0391a512ece3f8f9592b3b02ec292d425f2c17"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -1227,6 +1227,31 @@
|
||||
"> Before I go on, I want to emphasize that this code fully implements a 1D Kalman filter. If you have tried to read the literature, you are perhaps surprised, because this looks nothing like the complex, endless pages of math in those books. To be fair, the math gets a bit more complicated in multiple dimensions, but not by much. So long as we worry about *using* the equations rather than *deriving* them we can create Kalman filters without a lot of effort. Moreover, I hope you'll agree that you have a decent intuitive grasp of what is happening. We represent our beliefs with Gaussians, and our beliefs get better over time because more measurement means more data to work with. \"Measure twice, cut once!\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 3,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Animating the Tracking"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"If you are reading this in IPython Notebook you will be able to see an animation of the filter tracking the dog directly below this sentence.\n",
|
||||
"<img src='dog_track.gif'>\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The top plot shows the output of the filter in green, and the measurements with a dashed red line. The bottom plot shows the Gaussian at each step. \n",
|
||||
"\n",
|
||||
"When the track first starts you can see that the measurements varies quite a bit from the initial prediction. At this point the Gaussian probability is small (the curve is low and wide) so the filter does not trust its prediction. As a result, the filter adjusts its estimate a large amount. As the filter innovates you can see that as the Gaussian becomes taller, indicating greater certainty in the estimate, the filter's output becomes very close to a straight line. At `x=15` and greater you can see that there is a large amount of noise in the measurement, but the filter does not react much to it compared to how much it changed for the firs noisy measurement."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:e4bf6588bd5504bdeff5802ced00bcc98d4cad46767b3d4f649b0fe63a2976cf"
|
||||
"signature": "sha256:93eea406145c65de7a62ec1f5ec3c4d26d16c2116b86fa6bd9e80589122ce2c7"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -241,13 +241,13 @@
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 2,
|
||||
"prompt_number": 64,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7fc962c0a470>"
|
||||
"<IPython.core.display.HTML at 0x7fc93575a438>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 2
|
||||
"prompt_number": 64
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -274,7 +274,7 @@
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 3
|
||||
"prompt_number": 65
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -341,7 +341,7 @@
|
||||
" plt.tight_layout()\n",
|
||||
" \n",
|
||||
"N=12\n",
|
||||
"animate('volt_animate.gif', volt_animate, N*3, 500)"
|
||||
"animate('volt_animate.gif', volt_animate, N*3, 350)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
@@ -349,13 +349,13 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fc95db75be0>"
|
||||
"<matplotlib.figure.Figure at 0x7fc93575a240>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 38
|
||||
"prompt_number": 69
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -368,164 +368,63 @@
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"class DogSensor(object):\n",
|
||||
" \n",
|
||||
" def __init__(self, x0=0, velocity=1, noise=0.0):\n",
|
||||
" \"\"\" x0 - initial position\n",
|
||||
" velocity - (+=right, -=left)\n",
|
||||
" noise - scaling factor for noise, 0== no noise\n",
|
||||
" \"\"\"\n",
|
||||
" self.x = x0\n",
|
||||
" self.velocity = velocity\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",
|
||||
" \n",
|
||||
" \n",
|
||||
"# assume dog is always moving 1m to the right\n",
|
||||
"movement = 1\n",
|
||||
"movement_error = .2\n",
|
||||
"movement_error = .05\n",
|
||||
"sensor_error = 4.5\n",
|
||||
"pos = (0, 100) # gaussian N(0,50)\n",
|
||||
"\n",
|
||||
"dog = DogSensor(pos[0], velocity=movement, noise=sensor_error)\n",
|
||||
"pos = (0, 100) # gaussian N(0,100)\n",
|
||||
"\n",
|
||||
"# this is the recorded output of a run of the dog sensor with an initial\n",
|
||||
"# seed of 200\n",
|
||||
"ZS = [-2.07, 6.05, 4.51, 3.47, 5.76, 5.93, 6.53, 9.01, 7.53, 11.68, \n",
|
||||
" 11.15, 14.76, 13.45, 16.15, 19.05, 14.87, 20.90, 15.75, \n",
|
||||
" 17.16, 20.50]\n",
|
||||
"zs = []\n",
|
||||
"ps = []\n",
|
||||
"vs = []\n",
|
||||
"\n",
|
||||
"N=20\n",
|
||||
"\n",
|
||||
"def dog_animate(frame):\n",
|
||||
" global pos, zs, ps, vs\n",
|
||||
" global pos, zs, ps, N, ZS\n",
|
||||
" pos = predict(pos[0], pos[1], movement, movement_error) \n",
|
||||
" Z = dog.sense()\n",
|
||||
" Z = ZS[frame]\n",
|
||||
" zs.append(Z)\n",
|
||||
" vs.append(pos[1])\n",
|
||||
" print(pos[1])\n",
|
||||
" \n",
|
||||
" pos = update(pos[0], pos[1], Z, sensor_error)\n",
|
||||
" ps.append(pos[0])\n",
|
||||
"\n",
|
||||
"\n",
|
||||
" plt.subplot(211)\n",
|
||||
" plt.scatter (frame, Z)\n",
|
||||
" plt.plot(zs,c='r', linestyle='dashed')\n",
|
||||
"\n",
|
||||
" plt.xlim([0,N*1.2])\n",
|
||||
" plt.ylim([0,N*1.2])\n",
|
||||
"\n",
|
||||
" if len(ps) > 1:\n",
|
||||
" plt.plot(ps, c='#8EBA42')\n",
|
||||
" \n",
|
||||
" plt.subplot(212)\n",
|
||||
" plt.cla()\n",
|
||||
" stats.plot_gaussian(pos[0], pos[1], xlim=[0,32])\n",
|
||||
" stats.plot_gaussian(pos[0], pos[1], xlim=[0,N*1.2])\n",
|
||||
" plt.ylim([0,1])\n",
|
||||
" plt.tight_layout()\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"N=12\n",
|
||||
"animate('dog_track.gif', dog_animate, N, 200)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"100.2\n",
|
||||
"4.506590257879656"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n",
|
||||
"2.451646358922152"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n",
|
||||
"1.7870209797122434"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n",
|
||||
"1.4790786661369082"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n",
|
||||
"1.3131905715360732"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n",
|
||||
"1.2165428948514319"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n",
|
||||
"1.1576492519214656"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n",
|
||||
"1.1207749370248357"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n",
|
||||
"1.0972939271041793"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n",
|
||||
"1.0821803421932217"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n",
|
||||
"1.072385204587669"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fc93cdca0b8>"
|
||||
"<matplotlib.figure.Figure at 0x7fc93cd99278>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 49
|
||||
"prompt_number": 73
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 238 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 481 KiB After Width: | Height: | Size: 465 KiB |
Reference in new issue
Block a user