Expansion of UKF chapter.

Wrote several examples. Still more to do.
This commit is contained in:
Roger Labbe committed 2014-11-30 15:34:06 -08:00
1 parent dd3177cd02
commit f73719970d
2 files changed
+602 -92

No files matched your search

@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:71b2584db8f7c39febb9622c86c64ba03269b1ec3d1ac8ede348a51a7357cf44"
"signature": "sha256:f640d994c2b3f8b0eec29fa6a65a1916071a1487707aefd49319c2a0b63486fc"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -261,7 +261,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x7f47fa1db4e0>"
"<IPython.core.display.HTML at 0x7fa311bd04e0>"
]
}
],
@@ -307,9 +307,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAFwCAYAAABdOnYEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtYlHX6P/D3HGFmODmIUmAmUh6wEjTJDSXyS5mh9bP8\nxtZqnhLjMg+Rkng+hJFLHmotPBRqurSWpZma6PYNqVZz1Vp1M1EzMAl1RJlhhjn+/hjnkYHhKKdh\n3q/r8hJmnnnmM/PMDPfcz/25P6LTp0/bQERERETkgcStPQAiIiIiotbCYJiIiIiIPBaDYSIiIiLy\nWAyGiYiIiMhjMRgmIiIiIo/FYJiIiIiIPJa0ue+gsLCwue+CiIiIiAgA0KVLlwZt3+zBMAD06tWr\nJe6GmlhgYCC2b9+O2NjY1h4KNRCPnXvj8XNvPH7ui8fOvQUGBiI/P7/Bt2OZBBERERF5LAbDRERE\nROSxGAxTrVji4r547Nwbj5974/FzXzx2nofBMNWKHwrui8fOvfH4uTceP/fFY+d5GAwTERERkcdq\nkW4SRERE5BlMJhOuXbsGkUjU2kNpsGvXrgEAzGZzK4+EXLHZbOjQoQNkMlmT7pfBMBERETUJk8mE\nq1evolOnThCLefKZmpbVakVJSQkCAwObNCCu85VqMBgwf/58REdH48EHH8SiRYsA2F/waWlpiIqK\nQlxcHPbs2dNkgyIiIiL3c+3aNQbC1GzEYjE6deokZPCbSp2Z4fT0dBQWFuLLL79EYGAgzp49CwDI\nzs5GQUEB8vLycOrUKSQlJSEyMhLBwcFNOkAiIiJyDyKRiIEwNSuxWNzkJTi1vmINBgN27NiBuXPn\nomPHjhCJRAgPDwcA7N27F6NHj4aPjw8GDBiAyMhI5ObmNungiIiIiIiaU63B8K+//gqRSIT9+/fj\n4YcfxpNPPon9+/cL13Xr1g2vvfYadu/eje7du+P8+fMtMmgiIiIioqZQa5mEVquFyWRCUVERvv76\naxw7dgyTJ0/Gvn37oNfroVQqcebMGfTp0wcqlQrFxcUu9xMYGNgsg6fm5ShO5/FzPzx27o3Hz715\n8vFr6lpOIlekUqnL91djJ9XVGgx7e3vDYrFg3LhxkMvliI6ORrdu3fDjjz9CoVBAr9djx44dAICl\nS5dCpVK53M+SJUuEnwcPHozY2NhGDZaIiIiI3E90dDSee+45vPrqq02632+++QZ5eXkAAIlEgsGD\nBzd4H7UGw126dHFZpGyz2XD33Xfj7NmziIiIAACcPXsWQ4YMcbmf5ORkp9+vXr3a4IFSy3N86+Lx\ncj88du6Nx8+9efLxY39eqklTTnozm83C+6tPnz7o06cPAPt7Lz8/v8H7q7Vm2N/fHw8++CCys7Nh\nNpvxww8/4Pz58+jbty+eeOIJbN68GWVlZTh06BCOHz+O+Pj4RjwkIiIiImc6nRRFRd64dq1pF1io\nyXfffYeoqCiMHz8evXr1QnZ2NuLj43H//ffj4MGDAIAbN25g1qxZeOCBB9CrVy/8+c9/xpkzZ4R9\nFBQUYNy4cYiMjERYWBhiY2OxdetWp/sxmUyYP38++vXrh+7duyMmJgZr164Vri8sLERoaCguXrwo\nXJaZmYmHHnrIaT8ff/wxQkNDceLECSQkJKB79+4YMGAATp48CQAwGo1YunQp+vXrh3vuuQcjRozA\nkSNHhNtHR0fjlVdeQUREBCZNmoQlS5bg3nvvRVpaWrX7iY2NRffu3fHII4/g73//u9P1oaGh2LJl\nC55++mmEh4cjISEBBQUFTvcTGhqKoqIivP322wgNDUVoaChWrFhR7+ekudWrtdrs2bPx4IMPonPn\nzli+fDmCgoIwduxYnDt3DrGxsfD390d6ejo6d+7cEmMmIiIiNyUSiWCxiCCR2GCz2Vxuo9HIsGyZ\nL7Zu9UKfPhasX38DXboYmn1sly9fxuTJk9G1a1fMmzcP27Ztw/79+7F27VoMGjQIo0ePhkwmw8aN\nG+Hv749169YhMTERBw8ehFKphEajQWRkJKZPn47AwEDk5eUhNTUVISEhQonohx9+iE8++QRr165F\nt27d8Ouvv6KwsLDOsdWUWZ0zZw5eeeUV9OrVC//5z3+EutkZM2bg9OnT+Nvf/oY777wT27dvx5//\n/GccPHgQwcHBEIlE6NChAzZu3Ij/9//+H8aNG4ecnBw8/fTTSElJQWBgID766COkp6dj2bJl6Nev\nH3788UfMmDEDHTp0wNChQ4UxrF+/Hm+++Sb8/PyQnJyMRYsWYfPmzQCAPXv2wGKxYNiwYXjqqacw\nefJkAIBSqRRu39jnpKnUGQyHhoYKD8jphlIp0tPTkZ6e3iwDIyIiovZFp5Pgiy9U+Mc/vDFsWAWe\nfVaHgIDqpRU//yzH1q3eAIATJ6Q4cECOsWNdB8PXr8tw6ZIUvr5WhIRU3Nb4AgMDMWDAAGi1Wnz2\n2Wd46KGHoNfrceDAARw8eBBHjx7F0aNHERQUBMA+J+qTTz7B/v37MWLECAwYMAADBgwQ9vf8889j\n8+bNOHDggBAMFxYWonPnzoiJiQEAhISE1GtsNX1xmDJlinBm/q677gIAnDt3Djt27MCXX36JBx54\nAAAwffp0fPbZZ9i+fbtQvvroo4+if//+CAwMxKOPPoqoqCgEBgaiqKgIgYGBWLFiBaZOnYqnnnoK\ngD0mzMvLw5YtW5yC4XHjxiE6OhoAkJiYiHfeeUe4Tq1WA7DX86pUKnTs2LHaY2jsc9JUuBwzERER\ntYgTJ7yRkuIDADh0SIrwcAseeURbbTuZzDnwq2F+PjQaGebN88Pnn3shIMCKTz65gV69yhs9Pm9v\nb+F/x89eXl4wGAw4ceIEbDYbHn74YafbGAwG/PbbbwAAvV6PlStXIjc3F3/88QdMJhMMBoMwvwoA\nnnnmGXz66acYNGgQ/vSnPyE6OhoJCQmQy+WNGrMjCK3sxIkTAIBRo0ZVG+uFCxfq9XivXLmCP/74\nA8uXL8fbb78t3MZkMqFLly5O+w0LCxN+DggIQGlpaYMeQ1M/Jw3FYJiIiIhaRFmZ86n+69ddn/rv\n3bsCS5bosH69N/70JxMGDXKdFT5/XobPP/cCAJSWivHxx15YtEhfYxa1sRz78/Pzw549e6pdHxAQ\nAMCeKc7Pz8e8efMQFhYGiUSCSZMmwWq1Ctv27dsXhw8fRn5+Pr7//nvMnTsXW7duxSeffALAdTlE\n5dtX5efnV+N1n3/+ebVOX76+vrU8UrvKz9/ixYuFjK2DVCqt9feGqus5aW4MhomIiKhF9O5tQlSU\nCUePyhAebkZkpMnldiqVBWPH3sCzz5ZDobBAJnMdDKpUNkgkNlgs9gDyrrusTR4IO0RERODGjRsw\nmUzCarxVHT58GOPHjxfKFvR6PYqKioRuBw4+Pj4YOnQohg4din79+iE5ORmlpaUICAgQglut9lbG\nvKioqEHdGByZ6D/++ANxcXENepwOHTt2RHBwMC5cuIAXXnihUfuoTCaTwWRyfbyB2p+T5sZgmIiI\niFrEnXdWIDv7Oq5ckUCttiAoyFjjtmKxDX5+NQdPAHDPPQZs3lyG997zRmSkGU8+qW/qIQsGDRqE\nqKgoJCUlYcGCBejatSsuXLiAL774AsnJyejWrRvCwsKwc+dODBw4EBaLBStWrIDFYnHaz7p16xAY\nGIj7778fNpsNO3bsQEhIiBD0+fn5oVu3bvj000+RlpaGkydPYt++fQ0KCrt3747hw4cjNTUVixYt\nQu/evVFcXIzdu3dj2LBhLksrXJk6dSoWLVqEzp0745FHHoFOp8O3334LhUKBsWPH1ns8gL2UIi8v\nD6NHj0aHDh0gk8kgkUjq9Zw0NwbDRERE1GICA41oqsX5JBIbYmO1GDy4HGJxzd0p6qty9rXqzyKR\nCB999BGWLVuG6dOno7S0FEFBQRg8eDA6dOgAAFi4cCFmzZqF4cOHw8/PDy+99BLKysqc7sPX1xdr\n167F+fPnIZFI0LdvX2zcuNFpm7feeguzZs1CTk4OoqKiMHLkSPzzn/+sdbxVrVq1CpmZmVi4cCFK\nSkqgVqvx0EMPNWhy2pgxY+Dt7Y21a9fijTfegFKpxH333YcpU6bUejtX43r99deRmpqKwYMHQ6/X\nIyUlBTNmzABQv+ekOYlOnz7dPOcTbiosLESvXr2a8y6omXhy43h3x2Pn3nj83JsnH7/Lly8LnRaI\nmktNrzPHohtVJ/jVpdZFN4iIiIiI2jMGw0RERETksRgMExEREZHHYjBMRERERB6LwTAREREReSwG\nw0RERETksRgMExEREZHHYjBMRERERB6LwTARERG1Sd7l5a09BPIADIaJiIioRcnrEeSKRCLI//lP\nSKssZ1zTtkSNxWCYiIiIWoxIJIKssBAim63W7WRXrkA5fz5kRUV17tNbo2FATI3GYJiIiIhajOzK\nFfhMnAj5pUu1bie9cAHiP/6A7OTJuve5fz9kxcVNNUTyMAyGiYiIqMVIf/sNknPnIL1wQbhMotc7\n/zMYIDt8GADglZ0NuU5XbRuRxQIAkF2/DsWKFZD+9tttjeu7775DVFQUxo8fj169eiE7Oxvx8fG4\n//77cfDgQQDAjRs3MGvWLDzwwAPo1asX/vznP+PMmTPCPgoKCjBu3DhERkYiLCwMsbGx2Lp1q9P9\nPPvss1i6dCleeeUV3HvvvRg4cCC++uqr2xo73R5paw+AiIiIPINIJBKCXPlXX6H8T3+CzWaD/No1\neH/wAWR5ecK2koICAID02DF0GDECNokEAGANCUH5woXQh4bar//tN0guXID84EHoBwyArY7yi9pc\nvnwZkydPRteuXTFv3jxs27YN+/fvx9q1azFo0CCMHj0aMpkMGzduhL+/P9atW4fExEQcPHLine truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47ddd36160>"
"<matplotlib.figure.Figure at 0x7fa2f575f2e8>"
]
}
],
@@ -345,9 +345,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47ddd198d0>"
"<matplotlib.figure.Figure at 0x7fa2f57440b8>"
]
}
],
@@ -392,9 +392,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xlc0+fhB/BPTpKQEM5wH6KIgKh4FkXxAtRW7dau670e\nW9d7XY+t27qr7bqtXdffuh472p3ttnZd23XtKmi1ijeeKJeAIsh9JOHIQY7v7w8r01qoIsk3x+f9\nevkCyZPkE4XwyTfP93kkdXV1AoiIiIiIfJRU7ABERERERGNhYSUiIiIin8bCSkREREQ+jYWViIiI\niHwaCysRERER+TQWViIiIiLyafKxLmxpafFWDiIiIiIKcsnJyZ/59TELKwBkZWVNeBgiIiIiorPV\n1NSMehmnBBARERGRT2NhJSIiIiKfxsJKRERERD6NhZWIiIiIfBoLKxERERH5NBZWIiIiIvJpLKxE\nRERE5NNYWImIiIjIp7GwEhEREZFPY2ElIiIiIp/GwkpEREREPo2FlYiIiIh8GgsrEREREfk0FlYi\nIiIi8mksrERERETk01hYiYiIiMinsbASERERkU9jYSUiIiIin8bCSkREREQ+jYWViIiIiHwaCysR\nERER+TQWViIiIiLyaSysREREROTTWFiJiIiIyKexsBIRERGRT2NhJSIiIiKfxsJKRERERD6NhZWI\niIiIfBoLKxERERH5NBZWIiIiIvJpLKxERERE5NNYWImIiIjIp7GwEhEREZFPY2ElIiIiIp/GwkpE\nREREPo2FlYiIiIh8GgsrEREREfk0FlYiIiIi8mksrERERETk01hYiYiIiMinsbASERERkU9jYSUi\nIiIin8bCSkREREQ+jYWViIiIiHwaCysRERER+TQWViIiIiLyaSysREREROTTWFiJiIiIyKfJxQ5A\nRERE3uV2u2G322G32+FyuSCRSCCTyT7zD5EvYGElIiIKQFarFSaTCf0DAxiy2GCx2TFktcFis8Hu\ncEIqV0IiV0AqlQECIAguCG43BPfpjxBOf65WhSA6XI+YSD30YWEICwuDWq0W++FRkGFhJSIi8nMu\nlwv9/f0wm83o7O1DR48RdqcAqVoLhUoLRYgKilA9QsKV0IYooVAoL/i27TYbhoYG0dM9CGdLL1zW\nIcglbkSFhyE2KgIJ8XEICwvz4KMjYmElIiLyS/39/Whr70Bbdy96TQOAUgW5Sgu1LgyRk5MRolJN\n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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd81OXhB/DP7ZG7XOZlDwIhJCFAmAYCYSaAArZa66SO\n1jqqtY5qW7vU2lZrba2j7a+2tdW2WqvWaiVhCWEmzEAGJIGQkD0ul3EjN76/P5CUiImM3H1vfN6v\nF6+Eu+fuPqfk8rnvPd/nkQiCIICIiIiIyEdJxQ5ARERERDQWFlYiIiIi8mksrERERETk01hYiYiI\niMinsbASERERkU9jYSUiIiIinyYf68rNmzd7KwcRERERBblly5Z95uVjFlYAyMzMHPcwRERERETn\nqq6uHvU6TgkgIiIiIp/GwkpEREREPo2FlYiIiIh8GgsrEREREfk0FlYiIiIi8mksrERERETk01hY\niYiIiMinsbASERERkU9jYSUiIiIin8bCSkREREQ+jYWViIiIiHwaCysRERER+TQWViIiIiLyaSys\nREREROTTWFiJiIiIyKexsBIRERGRT2NhJSIiIiKfxsJKRERERD6NhZWIiIiIfBoLKxERERH5NBZW\nIiIiIvJpLKxERERE5NNYWImIiIjIp7GwEhEREZFPY2ElIiIiIp/GwkpEREREPo2FlYiIiIh8Ggsr\nEREREfk0FlYiIiIi8mksrERERETk01hYiYiIiMinsbASERERkU9jYSUiIiIin8bCSkREREQ+jYWV\niIiIiHwaCysRERER+TQWViIiIiLyaSysREREROTTWFiJiIiIyKexsBIRERGRT2NhJSIiIiKfxsJK\nRERERD6NhZWIiIiIfBoLKxERERH5NBZWIiIiIvJpLKxERERE5NNYWImIiIjIp7GwEhEREZFPk4sd\ngIiIiLzL7XbDbrfDbrfD5XJBIpFAJpN95h8iX8DCSkREFICsVit6e3vR19+PQYsNFpsdg1YbLDYb\n7A4npHIlJHIFpFIZIACC4ILgdkNwn/kK4cz3GrUKUWEGREcYYAgNRWhoKDQajdhPj4IMCysREZGf\nc7lc6Ovrg9lsRnt3D9q6TLA7BUg1OijUOihUaihCDFCFKaFTKaFQKC/4vu02GwYHB9DVOQBnUzdc\n1kHIJW5EhoUiJjIc8XGxCA0N9eCzI2JhJSIi8kt9fX1oaW1DS2c3unv7AaUacrUOGn0oIiYmQaVW\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47fa1e0d68>"
"<matplotlib.figure.Figure at 0x7fa311bd54a8>"
]
}
],
@@ -492,16 +492,16 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47dd7c8fd0>"
"<matplotlib.figure.Figure at 0x7fa2f52ff080>"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Difference in mean x=-0.037, y=42.097\n"
"Difference in mean x=-0.091, y=44.968\n"
]
}
],
@@ -536,9 +536,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47dda213c8>"
"<matplotlib.figure.Figure at 0x7fa2f5306a58>"
]
}
],
@@ -576,9 +576,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Vd7G2eCLeqFnEgiM+cgiSKVc3CWs910255x257ZM/uZ\n8+xz1f9h/49zs6dnxt7d0w7sdpYlWVbOEkmJEnMGAwACBJFDnQtKsqINkiC/Amq9l/Kj9oIbhVr1\n1RdUd+7ckUBEREREJFNq0QGIiIiIiH4NCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoL\nKxERERHJmvbX/uH4+Ph65SAiIiIihaupqXnin/9qYQWA1tbWnIchIiIiInpQb2/vU/8ZpwQQERER\nkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGR\nrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGs\nsbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayx\nsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGw\nEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbAS\nERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIR\nERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhER\nEZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERER\nkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkaxpRQcgecpk\nMgiFQpifn8f8/DwSiQRSqRSSqTQAQKtRQ6vVQqvVwmazwW63w2q1QqvlV4qUIZPJIBgMYn5+HoFA\n4P41kkpnAPxyjej1+oeuEbWa4wSkDKlU6qFrJJVKPXSN6LSa+9eI3W6H3W5HSUkJVCqV4OQkR2wX\n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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3ed3W+eBNfqN3kiiEGDvTaJI9V5cJdtxC504iWN7St46\n977rzv+Q/2G+3Ltm3bkzmXfsyUwch4m7LMmyepcoipTYO0ASAAEWdODcD5RkdQMkyOcAZ/8+Wkvx\nhoODs89znqKSJEkCEREREZFMqUUHICIiIiJ6FhZWIiIiIpI1FlYiIiIikjUWViIiIiKSNRZWIiIi\nIpI1FlYiIiIikjXts/7w2LFj65WDiIiIiBTu8OHDT/znzyysANDa2pr1MERERERED+rt7X3qn3FK\nABERERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsr\nEREREckaCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsrEREREckaCysR\nERERyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxER\nERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsrERER\nEckaCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsrEREREckaCysRERER\nyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJ\nGgsrEREREckaCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsrEREREcka\nCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoL\nKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJGgsrEREREckaCysRERERyRoLKxERERHJmlZ0\nAJKnVCqFhYUFzM3NYW5uDrFYDIlEAvFEEgCg1aih1Wqh1Wphs9lgt9thtVqh1fIrRcqQSqUQDAYx\nNzeHQCBw/xpJJFMAfrhG9Hr9Q9eIWs1xAlKGRCLx0DWSSCQeukZ0Ws39a8Rut8Nut6OoqAgqlUpw\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47d4278cc0>"
"<matplotlib.figure.Figure at 0x7fa2f51cfb38>"
]
}
],
@@ -625,9 +625,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAF2CAYAAABj4yAyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3WuMJOd93/tv3avvPffZ2QsvG90cHlNSrAgwafJQEgg5\ndo4TQ8AxHDhyABkQrBdJHCSIAkRIrBwZQeLkRRjAcHQAAUoMBZEVB5Idh5GOQ1pWYFuRIskWTUuk\nyF3u7sxO90zfqrvudV40d0WKu+SS07vdXf37CNTszDS7n+ZWP/Xrp//1f4ynn366QERERESkxMx5\nD0BERERE5HZT6BURERGR0lPoFREREZHSU+gVERERkdJT6BURERGR0lPoFREREZHSU+gVERERkdI7\ncegNw5CPfexjvPvd7+Zd73oX//Sf/tNZjEtEREREZGbsk97BJz7xCS5evMhv//Zvs7GxwXe/+91Z\njEtEREREZGaMk+zIFoYh7373u/nc5z7H+fPnZzkuEREREZGZOVF5w3PPPYdhGHzxi1/kgQce4Cd+\n4if44he/OKuxiYiIiIjMxInKG0ajEUmS8MILL/B7v/d7fP3rX+fDH/4wjz/+OFtbW7Mao4iIiIjI\niZwo9Pq+T5Zl/K2/9bdwXZd3v/vd3HPPPXzjG9/gfe973/XbXbx48cQDFRERERF5LWfPnr3hz08U\nes+ePYthGLd027e97W0neaiFtLGxwec+9zkefvjheQ9FloCOF7lVOlbk9dDxIrdqFY6Vp5566qa/\nO1FNb6vV4l3vehef+tSnSNOUr371q3zve9/j/vvvP8ndioiIiIjM1Exaln30ox/lXe96Fzs7O/yL\nf/EvVM8rIiIiIgvlxKH3zJkzfPrTn57FWJZSGcs25PbR8SK3SseKvB46XuRWrfKxom2IT2iVDx55\n/XS8yK3SsSKvh44XuVWrfKwo9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkp9IqIiIhI6Sn0ioiIiEjp\nKfSKiIiISOkp9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkp9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkp\n9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkp9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkp9IqIiIhI6Sn0\nioiIiEjpKfSKiIiISOkp9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkp9IqIiIhI6Sn0ioiIiEjpKfSK\niIiISOkp9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkp9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkp9IqI\niIhI6Sn0ioiIiEjpKfSKiIiISOkp9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkp9IqIiIhI6Sn0ioiI\niEjpKfSKiIiISOkp9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOnNLPR+9atf5a1vfSv/6T/9p1ndpYiI\niIjITMwk9KZpyr/8l/+S8+fPYxjGLO5SRERERGRmZhJ6//2///c88sgjrK+vz+LuRERWWpZlZFk2\n72GIiJSKfdI7ODw85HOf+xyf/exn+fKXvzyLMYmIrKQLF3y+9jWHL3xhOjX/5E82eOc7E86dC2f6\nOEVRUBSQv/i1oCDPCwqAAgwDbMvEtnTZh4iUx4lD7z//5/+cD3/4w7iu+6q329jYOOlDLRzHcYBy\nPjeZPR0vcjNFUfD7v5/ygQ9UGQy+HzT/6391aTZzPvvZMT/2Y/arlo/leUEYp0RJRpJlxElGnOak\naUacZmR58fKwS0FR5NdDb0E+/T1gGia2YWGaFrZlYJsm1osh2DKN64HYdSwqro3vvvrY5PbS3CK3\natWPlROF3v/1v/4XL7zwAn/lr/yV6z8riuKGt/34xz9+/c8PPfQQDz/88EkeWkSkNJ566pWB95rB\nwOQDH6jyP/7HmB/6IYc8LxhHCUGYMIkS4iQjSjKiNCXJYuIsIckT0jwhzdOX/JNxLd7CdDXXMAxM\nA3jpnzHIi4IsKyhyMDCxTAvbtDANaxqITQvLsHAsF9/28CyPijcNv1XfoeLaVD0HSyvFInKbPfHE\nEzz55JPXv3/kkUduetsThd4/+ZM/4X//7//NW9/61us/++M//mO++93v8tGPfvRlt/3FX/zFl33f\n7XZP8tAL4do7pTI8F7n9dLzIzfzP/9m4YeAFwMgYjGN+5/8bMMx6jMOEMAsJ05Aoi0nyadDNyXBs\nA8c2cSwD2zaxTQPXMahaBqZpYACm+dIV2RsvUrxUlmVkRUyeFWT59J84gSwrSNKcKMnJMnAtD9d0\n8S0P137xz46D71rUfIdG1aXinvjDRbkBzS1yq8p4rNx3333cd999179/6qmnbnrbE81AH/zgB/ng\nBz94/fuf+7mf46d+6qf4wAc+cJK7FRFZGaZp8oUveC9+V4CVgBlPv1oxWBE4E37r94bs3HdAlEY4\n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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAF2CAYAAABj4yAyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3WmMZOd93/vv2U/Vqa3X6elZSA4tUrRo0XYSIBAlUpQM\nWgFkRwHsSEhiRwiEyHBeeMsLx0GAJMKNjQBXfhEjkAHZkAFHsIHAdmJeR6HDa5HUkusISrSRtiRu\nQ85M93RVd+119nNfFGdEijPkkF0zVXXq9xGonu4uVv2Lc+o5v3rqf57HKIqiQERERESkxMx5FyAi\nIiIicrMp9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkp9IqIiIhI6Sn0ioiIiEjpKfSKiIiISOkdO/RO\nJhM+/vGPs7GxwdraGv/sn/2zWdQlIiIiIjIz9nHv4Jd+6Zd49tlneeqpp9je3uapp56aRV0iIiIi\nIjNjHGdHtslkwsbGBl/96ld5+9vfPsu6RERERERm5ljtDd/+9rcxDIM//uM/Zmdnh3e84x38yZ/8\nyaxqExERERGZiWO1N/T7feI45rnnnuP8+fN86Utf4id+4if4zne+w87OzqxqFBERERE5lmOF3mq1\nSpZl/Mqv/Aqu6/Le976Xu+66i//5P/8nH/rQh67e7rHHHjt2oSIiIiIib+T973//NX9+rNB77tw5\nDMO4odvec889x3mohbSxscEf/dEf8eCDD867FFkCOl7kRulYkTdDx4vcqFU4Vp5++unr/u5YPb1r\na2s8+OCDfPKTnyRNU5588km+/e1v87f/9t8+zt2KiIiIiMzUsZcs+93f/V0++tGP0mq1OH36NL//\n+7+vfl4RERERWSjHDr233347n//852dQynIqY9uG3Dw6XuRG6ViRN0PHi9yoVT5WtA3xMa3ywSNv\nno4XuVE6VuTN0PEiN2qVjxWFXhEREREpPYVeERERESk9hV4RERERKT2FXhEREREpPYVeERERESk9\nhV4RERERKT2FXhEREREpPYVeERERESk9hV4RERERKT2FXhEREREpPYVeERERESk9hV4RERERKT2F\nXhEREREpPYVeERERESk9hV4RERERKT2FXhEREREpPYVeERERESk9hV4RERERKT2FXhEREREpPYVe\nERERESk9hV4RERERKT2FXhEREREpPYVeERERESk9hV4RERERKT2FXhEREREpPYVeERERESk9hV4R\nERERKT2FXhEREREpPYVeERERESk9hV4RERERKT2FXhEREREpPYVeERERESk9hV4RERERKT2FXhER\nEREpPYVeERERESk9hV4RERERKT2FXhEREREpPYVeERERESk9hV4RERERKT2FXhEREREpPYVeERER\nESk9hV4RERERKT2FXhEREREpPYVeERERESk9hV4RERERKb2Zhd4nn3wS0zT5nd/5nVndpYiIiIjI\nTMwk9KZpyq/+6q9yzz33YBjGLO5SRERERGRmZhJ6/8N/+A988IMfZHt7exZ3JyKy0rIsI8uyeZch\nIlIq9nHvYG9vj8985jP85V/+JY8++ugsahIRWUnnz/t89asOjzwyHZo/+ME6P/qjCWfPhjN9nKIo\nKArIX/5aUJDnBQVAAYYBtmViW7rsQ0TK49ih95//83/Ov/yX/xLP8173dhsbG8d9qIXjOA5Qzucm\ns6fjRa6nKAqefDLlp36qSr//vaD53/6bS6OR85//85j3vMd+3faxPC8I45QoyUiyjDjJiNOcNM2I\n04wsL14ddikoivxq6C3Ip78HTMPENixM08K2DGzTxHo5BFumcTUQu45FxbXx3devTW4ujS1yo1b9\nWDlW6P3iF7/Ic889x9//+3//6s+KorjmbT/xiU9c/fMDDzzAgw8+eJyHFhEpjaeffm3gvaLfN/mp\nn6ry+c+P+cEfdMjzgnGUMAoTJlFCnGRESUaUpiRZTJwlJHlCmiekefqKfzKuxFuYzuYahoFpAK/8\nMwZ5UZBlBUUOBiaWaWGbFqZhTQOxaWEZFo7l4tsenuVR8abht+o7VFybqudgaaZYRG6yxx9/nCee\neOLq9w899NB1b3us0PuVr3yFL3/5y5jm9wa2xx9/nG9961t88pOffNVtf/7nf/5V33c6neM89EK4\n8k6pDM9Fbj4dL3I9X/5y/ZqBFwAjoz+O+bP/t88g6zIOE8IsJExDoiwmyadBNyfDsQ0c28SxDGzb\nxDYNXMegahmYpoEBmOYrZ2SvPUnxSlmWkRUxeVaQ5dN/4gSyrCBJc6IkJ8vAtTxc08W3PFz75T87\nDr5rEfgO9apLxT32h4tyDRpb5EaV8Vi59957uffee69+//TTT1/3tscagX7hF36BX/iFX7j6/UMP\nPcTP/MzP8E/+yT85zt2KiKwM0zR55JEr7WEFWAmY8fSrFYMVgTPhT/5iwIl794nSCMc28D0T3zep\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47d4245208>"
"<matplotlib.figure.Figure at 0x7fa2f51c0550>"
]
}
],
@@ -695,9 +695,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAtIAAAF2CAYAAABDD3/PAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xdc1WX/x/HXYS9BRVw4cCSiGCKOcqFWklrdadqw0LIc\nd3an3s5s3mrLNHNkjjRblg0rs6X9FMyFham5QHEhuEDmYXPO7w/uKG5xcdQv4/18PHrE+S7ewOXh\nw/d8znWZYmJirIiIiIiIyFWxMzqAiIiIiEhFpEJaRERERKQMVEiLiIiIiJSBCmkRERERkTJQIS0i\nIiIiUgYqpEVEREREykCFtIiIiIhIGdhcSJ8+fZrw8HDatm3LgAEDOHTo0GXP2b59O3fffTchISHc\neuutTJ48GbPZXLw/KiqKsLAwgoODGT16NJmZmbbGFBERERG5pmwupJ9//nn8/f3ZsWMHffr0Ydy4\ncZc9p1mzZrz77rtER0fz888/k5SUxJIlSwDIzs5mzJgxPP3002zbtg2TycTs2bNtjSkiIiIick3Z\nVEhnZmaydetWhg8fjpOTE0OHDiUhIYHY2NhLnufj40OdOnUAKCgowGq14u7uDhTdjfb09KRfv364\nuLgwbNgwvv/+e1tiioiIiIhcczYV0sePH8fJyQk3NzcGDx7MyZMnadSoEUeOHLnsuYmJiYSEhNCp\nUyc8PT0ZMWIEAEePHqVp06ZER0fz+OOP07hxY9LS0khJSbElqoiIiIjINWVTIZ2dnY27uztms5m4\nuDjS09Nxd3cnOzv7sufWr1+f6Oho1q9fz7Fjx/jkk08AyMrKws3NjaSkJOLi4nBycireLiIiIiJS\nXjjYcrKrqytms5m6desSFRUFgNlsxs3N7Yqv0bBhQ0aMGMGyZct46KGHcHNzIysri7CwMMLCwkhL\nSwO44Jrx8fG2RBcRERERuWINGza8YJtNhXTjxo3Jzc3lzJkz1KlTh7y8PE6cOEGTJk2u6joWiwWr\n1QqAn59f8d1pgMOHD+Pl5UWNGjUuOC8gIMCW+JWCt7c3q1evJjQ01OgoUo5oXEhpNC6kNBoXUhqN\ni5IOHDhQ6nabWjs8PDzo2rUrS5YsITc3lxUrVuDr60uLFi2KjwkPD2fWrFklzvvuu++IiYnBYrGQ\nmJjI8uXL6d69OwC33HILGRkZrF27lqysLJYvX07fvn1tiSkiIiIics3ZPP3dtGnTiI2NpWPHjvz4\n44/MmTOnxP6EhASSk5NLbEtNTeXpp58mJCSEBx54gPbt2/Pkk08CRe0ic+fOZf78+XTu3BmA8ePH\n2xpTREREROSaMsXExFiNDlEW8fHxau2g6KWXAwcOULt2baOjSDmicSGl0biQ0mhcSGk0Lko6cOBA\nqT3SWiK8EtAfFFIajQspjcaFlEbjQkqjcXF5KqRFRERERMrAplk7RERERCqi/Px8UlJSMJlMRkcp\nl/5cCK+goMDgJNeX1WqlRo0aODo6lul8FdIiIiJSpeTn55OcnEzt2rWxs9OL81WZxWLh7NmzeHt7\nl6mY1ugRERGRKiUlJUVFtABgZ2dH7dq1i+/AX/X51ziPiIiISLlmMplUREsxOzu7Mrf4aBSJiIiI\niJSBCmkRERERkTJQIS0iIiIiUgYqpEVEREREykDT34mIiIhcpfz8fD777DPWrFlDTk4O1apVY8iQ\nIdxxxx2am7oKUSEtIiIi8jfx8fEsWbKE1NRUWrduzZAhQ3Bzcyven5mZycMPP8yuXbtKLFiyfft2\nevToweLFi7G3tzcierm1cuVKPvnkE+Li4jCZTLRu3ZpJkybRvn17o6PZRK0dIiIiIkBhYSFPPfUU\nd999N8uXL2f16tXMmDGDO+64g08++aT4uHHjxvHbb79dsOpfdnY269ev5/XXXy+xbfbs2dx9993c\ndttt3H333cyePZvs7Owy58zIyGDy5Mk0a9aMnJycMl/nRoqKiuL+++/nyy+/5JtvvsHHx4fBgwdz\n9OhRo6PZRHekRURERIBnnnmGb7/9tkSBbLVaOXbsGK+99hoNGjSgdevW7Nq166LXKCgoYMOGDUye\nPJmsrCweeughfv/99xLH7Ny5k4iICFauXEm1atWuOme1atW4/fbbOXfuHC4uLld9vhHmzp1b4vEr\nr7zCN998Q0REBE2aNDEole10R1pERESqvLS0NDZt2nTBXeY/JSUl8fbbbxMdHU1iYuIlr3X27FlO\nnz7NxIkTLyii/7Rz504mT55c5rwbN24kLCyszOdfS6tXr6ZFixYX/a80aWlpAHh5ed3IqNec7kiL\niIhIlff9998THx9/yWOOHj2KyWTCZDJhtVovepzJZCI7O5vdu3df8nq7du0iMzMTDw+Pq867efNm\nJk6cSFRUFLt372batGls376d+vXrM3fuXLy9vbFYLPz2228MHDiQHj16kJ6ezqeffsr27dt58MEH\n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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47d424b710>"
"<matplotlib.figure.Figure at 0x7fa2f51e9a90>"
]
}
],
@@ -1146,13 +1146,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAt0AAAGJCAYAAABWwI+OAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVXX+x/HXZb9wERQUTFEQXBBE0cRKA/dSs0WzHMul\nmWlstGkm22Yax2ZGf07NVLNVM81U45I1LVqWIoYt4r6luKDIZXEFNNxAQLjc8/vDX/c3jktX5XK5\n8H4+Hj0e8D33nvO5fgPe99zvYsrNzTUQERERERGX8XJ3ASIiIiIiTZ1Ct4iIiIiIiyl0i4iIiIi4\nmEK3iIiIiIiLKXSLiIiIiLiYQreIiIiIiIspdIuIiIiIuFiDhu7q6mpmzZpFv3796Nu3L7/5zW8A\nqK2t5dlnn6V3794MGjSIFStWXPC8BQsW0L9/f1JSUnj55ZcbsmQRERERkevm05AXmzt3LocOHWL5\n8uWEhYWRn58PwLx587BarWRlZZGTk8PUqVNJTk4mMjKS7OxsXn31Vd555x0sFgsTJkwgPj6eESNG\nNGTpIiIiIiLXrMHudFdXV7N06VJmzpxJeHg4JpOJuLg4ADIyMpg4cSIWi4WUlBSSk5PJzMx0HBs+\nfDixsbFEREQwbtw40tPTG6psEREREZHr1mChu6ioCJPJxKpVq+jfvz+jRo1i1apVjmMxMTE8+eST\npKenExsbS2Fh4QXH5s+fzwsvvEBcXJzjmIiIiIiIJ2iw0F1RUUFtbS2HDx/myy+/ZNasWTz11FMc\nP36cqqoqAgMDycvL49ixYwQFBVFZWQngOHbo0CEOHDhwwTEREREREU/QYGO6AwICqKur46GHHsLP\nz49+/foRExNDdnY2ZrOZqqoqli5dCsCcOXMICgoCwGw2U1lZycyZMwHIzMwkMDDwktc4dOhQw7wY\nEREREWnWoqKirurxDRa6o6KiMJlMF7UbhkF0dDT5+fkkJCQAkJ+fz5AhQwCIjo6moKDA8Xir1Uqn\nTp0ue534+Ph6rlxcLSwsjCVLlpCWlubuUuQaqP88l/rOs6n/PJv6z3OFhYWxdu3aq35egw0vCQkJ\noW/fvsybNw+bzcaWLVsoLCykV69ejBgxgoULF1JeXs6mTZvYsWMHw4YNA2DEiBFkZmZitVopLS1l\n8eLFWrlERERERDxKgy8Z+Itf/IK+ffsSERHBH/7wB1q3bs2UKVMoKCggLS2NkJAQ5s6dS0REBABJ\nSUlMnz6dSZMmYbPZGD9+vEK3iIiIiHgUU25uruHuIurLoUOHNLzEA4WFhbF3717atGnj7lLkGqj/\nPJf6zrOp/zyb+s9zfTu85GrHdGsbeGkU9GbJs6n/PJf6zrOp/zyb+q95UegWEREREXExhW4RERER\nERdT6BYRERERcTGFbhERERERF1PoFhERERFxMYVuEREREREXU+gWEREREXExhW4RERERERdT6BYR\nERERcTGFbhERERERF1PoFhERERFxMYVuEREREREXU+gWEREREXExhW4RERERERdT6BYRERERcTGF\nbhERERERF1PoFhERERFxMYVuEREREREXU+gWEREREXExhW4RERERERdT6BYRERERcTGFbhERERER\nF1PoFhERERFxMYVuEREREREXU+gWEREREXExhW4RERERERdT6BYRERERcTGFbhERERERF1PoFhER\nERFxMYVuEREREREXU+gWEREREfkOh46XY6uzX/PzFbpFRERERK7gRHk1Y2Z/yveeT+dEedU1nUOh\nW0RERETkMux2g5/+7SuOlp2l6lwdlgC/azqPQreIiIiIyGW88ukOvsg+RKjFn9cfG4Kfr/c1ncen\nnusSEREREfE4hmGQe/gkX+08zObcEnYXlXGiopqqczYA/vrjQbQLt1zz+RW6RURERKTZqq6x8ebK\n3byflYf16KmLjgf4evPUuBsZ3Cvquq6j0C0iIiIizVLW7iM8+6+1FJacAaClxZ9hvTtyc3xb+nRu\nQ2TLIAL9fTCZTNd9LYVuEREREWl2lm0qYOpfPgegS7tQfvm9fqT1aI+vj2umPCp0i4iIiEizkl98\niif+kQXAo6N78sS9ffDzubYJks5S6BYRERGRZqPqnI0f/WkVFdW1jO7XiZ/f37deho98F4VuERER\nEWkWTpRX84M/fsa+wyeJbRvCiw/f2iCBGxS6RURERKQZ2HfoBD/4YyZFpWeIbBnEm48Pw2K+to1u\nroVCt4iIiIg0WYePl/PHj77m/aw87IZBYnQY8564jbatghq0DoVuEREREWlSbHV2Fq+18sGa/Wzc\nV4xhgLeXiYmD4/nVhH4EBfg2eE0K3SIiIiLSZKzbc5RZC9az7/BJAPx9vRmVEsPjY3rTKTLEbXU1\neOieOHEi2dnZeHufX5Zl+PDhvPDCC9TW1vLcc8+RkZFBSEgITz/9NCNGjHA8b8GCBbz++uvU1tYy\n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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47d408a320>"
"<matplotlib.figure.Figure at 0x7fa2f541ff60>"
]
}
],
"prompt_number": 37
"prompt_number": 15
},
{
"cell_type": "markdown",
@@ -1165,7 +1165,9 @@
"cell_type": "code",
"collapsed": false,
"input": [
"plt.ylabel('target X position')\n",
"book_format.equal_axis()\n",
"\n",
"plt.xlabel('target X position')\n",
"plt.ylabel('target Y position')\n",
"plt.plot(xs[:,0], xs[:,2])\n",
"plt.show()"
@@ -1176,13 +1178,13 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47d4154da0>"
"<matplotlib.figure.Figure at 0x7fa2f51e9080>"
]
}
],
"prompt_number": 38
"prompt_number": 16
},
{
"cell_type": "markdown",
@@ -1225,54 +1227,36 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47dd779f28>"
"<matplotlib.figure.Figure at 0x7fa2f5322fd0>"
]
}
],
"prompt_number": 21
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can compute the bearing between a sensor and the target as follows:"
"We can compute the bearing between a sensor and the target as follows:\n",
"\n",
" def bearing(sensor, target):\n",
" return math.atan2(target[1] - sensor[1], target[0] - sensor[0])"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def bearing(sensor, target_pos):\n",
" return math.atan2(target_pos[1] - sensor[1], target_pos[0] - sensor[0])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 79
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So our filter will need to receive a vector of 2 measurements during each update, one for each sensor. We can implement that as:"
"So our filter will need to receive a vector of 2 measurements during each update, one for each sensor. We can implement that as:\n",
"\n",
" def measurement(A_pos, B_pos, pos):\n",
" angle_a = bearing(A_pos, pos)\n",
" angle_b = bearing(B_pos, pos)\n",
" return [angle_a, angle_b]"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def measurement(A_pos, B_pos, pos):\n",
" angle_a = bearing(A_pos, pos)\n",
" angle_b = bearing(B_pos, pos)\n",
" return [angle_a, angle_b]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 80
},
{
"cell_type": "markdown",
"metadata": {},
@@ -1306,53 +1290,435 @@
" pos = (x[0], x[2])\n",
" return measurement(sa_pos, sb_pos, pos)\n",
"\n",
"def normalize(a):\n",
" if a > math.pi:\n",
" a -= math.pi*2\n",
"\n",
" if a < -math.pi:\n",
" a += math.pi*2\n",
" return a\n",
"def moving_target_filter(std_noise):\n",
" f = UKF(dim_x=4, dim_z=2, dt=0.1, hx=hx, fx=fx, kappa=2.)\n",
" f.x = np.array([target_pos[0], 1., target_pos[1], 1.])\n",
"\n",
" Q = Q_discrete_white_noise(2, dt, 1.1)\n",
" f.Q[0:2,0:2] = Q\n",
" f.Q[2:4, 2:4] = Q\n",
"\n",
" f.R *= std_noise**2\n",
" f.P *= 1000\n",
" \n",
" return f\n",
"\n",
"\n",
"def plot_straight_line_target(f, std_noise):\n",
" xs = []\n",
" txs = []\n",
"\n",
" for i in range(300):\n",
" target_pos[0] += 1 + randn()*0.0001\n",
" target_pos[1] += 1 + randn()*0.0001\n",
" txs.append(target_pos.copy())\n",
"\n",
" z = measurement(sa_pos, sb_pos, target_pos)\n",
" z[0] += randn() * std_noise\n",
" z[1] += randn() * std_noise\n",
"\n",
" f.predict()\n",
" f.update(z)\n",
" xs.append(f.x)\n",
"\n",
" xs = np.asarray(xs)\n",
" txs = np.asarray(txs)\n",
"\n",
" plt.plot(xs[:,0], xs[:,2])\n",
" plt.plot(txs[:,0], txs[:,1])\n",
" plt.show()\n",
" \n",
" \n",
"np.random.seed(123)\n",
"\n",
"sa_pos = [-40, 0]\n",
"sb_pos = [40, 0]\n",
"\n",
"dt = .1\n",
"target_pos = [40, 20]\n",
"\n",
"std_noise = math.radians(1.)\n",
"f = moving_target_filter(std_noise)\n",
"plot_straight_line_target(f, std_noise)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fa2f53a0a20>"
]
}
],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This looks quite good to me. There is a very large error at the beginning of the track, but the filter is able to settle down and start producing good data.\n",
"\n",
"f = UKF(dim_x=4, dim_z=2, dt=dt, hx=hx, fx=fx, kappa=2.)\n",
"f.x = np.array([target_pos[0], 1., target_pos[1], 1.])\n",
"Let's revisit the nonlinearity of the angles. I will position the target between the two sensors with the same y-coordinate. This will cause a nonlinearity in the computation of the sigma means and the residuals."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.random.seed(12330)\n",
"target_pos = [0, 0]\n",
"f = moving_target_filter(std_noise)\n",
"plot_straight_line_target(f, std_noise)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nKIWGhqp+/foaPny4lixZIklas2aN/P399cADD8jT01Pjxo3T0qVLJUlZWVn64YcfNGHCBLm7u+up\np55ScnKy4uPjr3VOAADgQPYePac7nluh975PkKuzkyYOaKelk+5UgK+H0dEqxWXvNf6+vFksFn35\n5ZeqVauWGjVqpKlTp+ruu++WJB04cEDh4eGaNWuWTpw4oa5du+rjjz+WJO3fv18hISHatGmTXnzx\nRS1atEjp6elKS0tTcnKyPDw85O3trW7duumdd95Rs2bNlJSUpLCwsP/JFBhofw37z7i6ukpibkfB\n3MztCJibuStaUXGpZn4ap6mLNqqk1KqQxoF67+/36NYWdSvtPS/l17kr02UXut9f/TFgwACNHj1a\nNWrU0BdffKEHHnhAu3btUosWLZSbmysfHx8lJCQoOTlZffv2VU5OjiSVr506dUqJiYlyd3eXJOXk\n5JSvZWdnKzExURkZGfL19VVubu5FM02dOrX81+Hh4YqIiLjibwAAALAP38Yd0rh5q3T4lwxJ0qh+\nbfTysO7ydK/8QvV769at0/r16yVJzs7OCg8Pr9T3u+odupCQkPJfR0ZGqnv37lq5cqVatGghb29v\n5eTkaNasWZKkFStWyMfHR5LK16KiohQVFaWMjLJvuo+PT/law4YNde7cOUlSdnZ2+Wt/b9SoURd8\nnJaWdrnjmNKv/0dj73P+HnMztyNgbuZ2BJU593++3aspH26VJDWv76+pgzop/KaGysvJUl5Ohb/d\nJYWFhZUfXQwMDNTGjRsr9f2ueofuzwQFBSkpKan844SEhPICGBQUpLlz516wFhAQoMDAQLm6uio/\nP1+pqalq0KCBioqKdPjwYQUHB1/2ewMAAMeRmVuoqR/HafHa/ZKkf9zfVo/ddbNcXS55mYBdueS0\nVqtVBQUFKikpUWlpqQoLC1VSUqIVK1bo/Pnzslqt+vrrr7Vu3Tr16dNHkhQdHa3ly5crISFBqamp\nWrBgQfnVqj179lRmZqYWL16s3NxcTZ8+vXzNz89Pffr00bRp01RQUKCZM2eqSZMmFz1/DgAAOLb1\ne1PUY/wyLV67X24uTpr5aITG9L/V4cqcdBk7dAsXLtTQoUPLP/7www81efJkJSQkaMiQISotLVWL\nFi20dOlSBQUFSZLat2+vyZMnq0ePHiouLtbIkSMVHR0tSfLy8lJsbKxGjBih4cOHq3fv3pLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7fa2f0e09240>"
]
}
],
"prompt_number": 19
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we seed the random number generator just right we can get the filter to eventually lock onto the signal and converge to a solution, but of course this is untenable behavior for a real world filter. I will deal with this nonlinearity later; I bring it up now in case you are experimenting with the code above and you start to see this sort of behavior."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Exercise: Track a target moving in a circle\n",
"\n",
"Q = Q_discrete_white_noise(2, dt, 1.1)\n",
"f.Q[0:2,0:2] = Q\n",
"f.Q[2:4, 2:4] = Q\n",
"Change the simulated target movement to move in a circle. Avoid angular nonlinearities by putting the sensors well outside the movement range of the target, and avoid the angles $0^\\circ$ and $180^\\circ$."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# your solution here"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 20
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Solution\n",
"\n",
"f.R *= std_noise**2\n",
"f.P *= 1000\n",
"We have a few choices here. First, if we know the movement of the target we can design our filter's state transition function so that it correctly predicts the circular movement. For example, suppose we were tracking a boat race optically - we would want to take track shape into account with our filter. However, in this chapter we have not been talking about such constrained behavior, so I will not build knowledge of the movement into the filter. So my implementation looks like this."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def plot_circular_target(f, std_noise, target_pos):\n",
" xs = []\n",
" txs = []\n",
" radius = 100\n",
" for i in range(300):\n",
" target_pos[0] = math.cos(i/10)*radius + randn()*0.0001\n",
" target_pos[1] = math.sin(i/10)*radius + randn()*0.0001\n",
" txs.append(target_pos.copy())\n",
"\n",
"xs = []\n",
"txs = []\n",
" z = measurement(sa_pos, sb_pos, target_pos)\n",
" z[0] += randn() * std_noise\n",
" z[1] += randn() * std_noise\n",
"\n",
"for i in range(300):\n",
" target_pos[0] += 1 + randn()*0.0001\n",
" target_pos[1] += 1 + randn()*0.0001\n",
" txs.append(target_pos.copy())\n",
" f.predict()\n",
" f.update(z)\n",
" xs.append(f.x)\n",
"\n",
" xs = np.asarray(xs)\n",
" txs = np.asarray(txs)\n",
"\n",
" plt.plot(xs[:,0], xs[:,2])\n",
" plt.plot(txs[:,0], txs[:,1], linestyle='-.')\n",
" plt.axis('equal')\n",
" plt.show()\n",
"\n",
"sa_pos = [-240, 200]\n",
"sb_pos = [240, 200]\n",
"\n",
"np.random.seed(12283)\n",
"std_noise = math.radians(0.5)\n",
"target_pos = [0, 0]\n",
"f = moving_target_filter(std_noise)\n",
"plot_circular_target(f, std_noise, target_pos)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAmUAAAJVCAYAAACf9YKKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYFNf+x/H37LL03gWUJihi773H3o2axBQ1zfR2U72J\n6TE9MfndG1NMbkyxJybGFrto7F0UQYoICtLrAlt+f6CrK3YWWPD7ep48Mmd3Zw4ns8tnz5w5RzEa\njUaEEEIIIUSdUtV1BYQQQgghhIQyIYQQQgirIKFMCCGEEMIKSCgTQgghhLACEsqEEEIIIayAhDIh\nhBBCCCsgoUwIIYQQwgpUK5QtW7aMbt26YW9vz9SpU03lr7/+OhqNBhcXF1xcXAgLCzN73ezZs/H3\n98fT05NXXnmlOlUQQgghhGgQqhXK3N3deeGFF7j//vvNyhVF4c4776SwsJDCwkISExNNj+3YsYM3\n3niDDRs2cPjwYebPn8+iRYuqUw0hhBBCiHqvWqGsT58+jB07Fk9PT7Nyo9HIlRYKWLx4MePHjycq\nKoqAgAAeeOAB5s+fX51qCCGEEELUexYZU3ZpAFMUhT///BNvb2/atWvH8uXLTY8dP36cZs2a8fnn\nn/Ovf/2LFi1aEBcXZ4lqCCGEEELUWxYJZYqimG1PmjSJxMREMjIyeO2117jjjjuIj48HoLi4GGdn\nZxITE0lISMDFxYWioiJLVEMIIYQQot6yscROLu0pa968uennsWPH0rdvX1atWkVERAROTk4UFRXx\n+eefA/Dbb7/h7Ox82f2uW7fOEtUTQgghhKgVAwYMuOnXWiSUXdpTdjWRkZEcO3bMtB0bG2sW4i4V\nFRVVrbqJ6+fl5cXSpUvp06dPXVflliFtXvukzWuftHntkzavfV5eXsTExFRrH9W6fGkwGNBqteh0\nOvR6PWVlZeh0On777Tfy8vIwGAz89ddfbNq0icGDBwMwYcIEli5dSmxsLGlpacydO5dJkyZV65cQ\nQgghhKjvqtVT9uOPPzJt2jTT9k8//cTMmTOJjY1l6tSp6PV6IiIiWLBgAZGRkQB07tyZmTNn0q9f\nPyoqKpg+fToTJkyo3m8hhBBCCFHPVSuUTZkyhSlTptzw65588kmefPLJ6hxa1BC5XFz7pM1rn7R5\n7ZM2r33S5vWPLLMkzMibuPZJm9c+afPaJ21e+6TN6x8JZUIIIYQQVkBCmRBCCCGEFZBQJoQQQghh\nBSSUCSGEEEJYAQllQgghhBBWQEKZEEIIIYQVkFAmhBBCCGEFJJQJIYQQQlgBCWVCCCGEEFZAQpkQ\nQgghhBWQUCaEEEIIYQUklAkhhBBCWAEJZUIIIYQQVkBCmRBCCCGEFZBQJoQQQghhBSSUCSGEEEJY\nAQllQgghhBBWQEKZEEIIIYQVkFAmhBBCCGEFJJQJIYQQQlgBCWVCCCGEEFZAQpkQQgghhBWQUCaE\nEEIIYQUklAkhhBBCWAEJZUIIIYQQVkBCmRBCCCGEFZBQJoQQQghhBSSUCSGEEEJYAQllQgghhBBW\nQEKZEEIIIYQVkFAmhBBCCGEFJJQJIYQQQlgBCWVCCCGEEFZAQpkQQgghhBWQUCaEEEIIYQUklAkh\nhBBCWAEJZUIIIYQQVkBCmRBCCCGEFZBQJoQQQghhBSSUCSGEEEJYAQllQgghhBBWQEKZEEIIIYQV\nkFAmhBBCCGEFJJQJIYQQQlgBCWVCCCGEEFZAQpkQQgghhBWQUCaEEEIIYQUklAkhhBBCWAEJZUII\nIYQQVkBCmRBCCCGEFZBQJoQQQghhBSSUCSGEEEJYAQllQgghhBBWQEKZEEIIIYQVkFAmhBBCCGEF\nJJQJIYQQQlgBm7qugBBCiMszGo1oy/XkFmnJLy4nv7iMvOIy8ovLyC2q/FenN9DYx4UQfzdC/VwJ\n8HJCrZLv20LURxLKhBCihlXoDKZAdT5U5RVd+DevpJy8i4NXURn5JZX/lusMN3QsjVpFE18XQvxc\nTUEt5Nx/Qd4uaGwksAlhrSSUCSFENZWW60g6k09Ceh4nTudzIj2PxDP5nM0vJb+4nGJtxU3v206j\nxt3JDldHWxztbfB1d8TNyQ73c/8pCqSeLSQ5o4DkjALO5JZU1uF0PpBqti+1SqnsVbsoqIX4uRLq\n70ZjHxfsNOpqtoQQojoklAkhxHUwGo3nAk8eCen5JJ6uDGAJ6XmkZRdhNFb/GDZqBRu1Co1aVfmv\njQq9wUh+cRkZeSUAuDraEubvRlgjN9wcbQn1d6N/28aE+rnh4mhLibaClMxCkjPySc4oIOlcWEs+\nU0B6TpEpvF1KUSDQy5ng80HNFNrcCPFzxcFO/lwIUdPkXSaEEBe5XK/XidP5xJ3KpaxCX6PH1umN\n6PR6tFz5OAUl5exPPMv+xLPXtc9mQR50ivSjX+sg3JzsKKvQU1JWQbFWR26RlpRzIS31bBGnsir/\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fa2f52d3048>"
]
}
],
"prompt_number": 21
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Discussion\n",
"\n",
"The filter tracks the movement of the target, but never really converges on the track. This is because the filter is modeling a constant velocity target, but the target is anything but constant velocity. As mentioned above we could model the circular behavior by defining the `fx()` function, but then we would have problems when the target is not moving in a circle. Instead, let's tell the filter we are fare less sure about our process model by making $\\mathbf{Q}$ much larger."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def circular_target_filter(std_noise):\n",
" f = UKF(dim_x=4, dim_z=2, dt=0.1, hx=hx, fx=fx, kappa=2.)\n",
" f.x = np.array([target_pos[0], 1., target_pos[1], 1.])\n",
"\n",
" Q = Q_discrete_white_noise(2, dt, 10.1)\n",
" f.Q[0:2,0:2] = Q\n",
" f.Q[2:4, 2:4] = Q\n",
"\n",
" f.R *= std_noise**2\n",
" f.P *= 1000\n",
" \n",
" z = measurement(sa_pos, sb_pos, target_pos)\n",
" z[0] += randn() * std_noise\n",
" z[1] += randn() * std_noise\n",
" return f\n",
"\n",
" f.predict()\n",
" f.update(z)\n",
" xs.append(f.x)\n",
"std_noise = math.radians(0.5)\n",
"cf = circular_target_filter(std_noise)\n",
"target_pos = [0, 0]\n",
"plot_circular_target(cf, std_noise, target_pos)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAmUAAAJVCAYAAACf9YKKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd0VMXbwPHv7mbTeyFAEhIIhBREeu9NUBQRAREQEFH0\nhwW76EsRRUQsYG/YsFAEURCkl9CRThqEQAqQRnrf3fv+EVxYsqGETVjC8zmH496ZuZPZ683m2Zm5\nMypFURSEEEIIIcRNpb7ZDRBCCCGEEBKUCSGEEEJYBQnKhBBCCCGsgARlQgghhBBWQIIyIYQQQggr\nIEGZEEIIIYQVkKBMCCGEEMIK3FBQtmLFCjp27Ii9vT3jxo0zpk+fPh2tVouLiwsuLi40atTI5Lz5\n8+dTt25dPD09mTJlyo00QQghhBCiVrihoMzd3Z2XX36Z8ePHm6SrVCpGjBhBXl4eeXl5nDx50pi3\ne/duZsyYwaZNmzh69Ci//fYbS5YsuZFmCCGEEELc8m4oKOvevTuDBw/G09PTJF1RFCrbKGDp0qUM\nGTKEsLAw6tevz2OPPcZvv/12I80QQgghhLjlWWRO2eUBmEql4q+//sLb25uWLVuycuVKY15cXBxN\nmzZl3rx5vPjii4SHhxMbG2uJZgghhBBC3LIsEpSpVCqT4+HDh3Py5ElSU1OZOnUqDz30EMePHweg\noKAAZ2dnTp48yYkTJ3BxcSE/P98SzRBCCCGEuGXZWKKSy3vKQkNDja8HDx5Mjx49WLNmDU2aNMHJ\nyYn8/HzmzZsHwPLly3F2djZb74YNGyzRPCGEEEKIGtG7d+8qn2uRoOzynrIrCQkJISYmxngcFRVl\nEsRdLiws7IbaJq6dl5cXy5Yto3v37je7KbcNueY1T655zZNrXvPkmtc8Ly8vIiMjb6iOGxq+NBgM\nFBcXo9Pp0Ov1lJSUoNPpWL58OdnZ2RgMBlatWsWWLVu46667ABg6dCjLli0jKiqKlJQUFixYwPDh\nw2/oTQghhBBC3OpuqKfsxx9/5NFHHzUeL1y4kGnTphEVFcW4cePQ6/U0adKERYsWERISAkC7du2Y\nNm0aPXv2pKysjIkTJzJ06NAbexdCCCGEELe4GwrKxo4dy9ixY6/7vGeeeYZnnnnmRn60qCYyXFzz\n5JrXPLnmNU+uec2Ta37rkW2WhAn5Ja55cs1rnlzzmifXvObJNb/1SFAmhBBCCGEFJCgTQgghhLAC\nEpQJIYQQQlgBCcqEEEIIIayABGVCCCGEEFZAgjIhhBBCCCsgQZkQQgghhBWQoEwIIYQQwgpIUCaE\nEEIIYQUkKBNCCCGEsAISlAkhhBBCWAEJyoQQQgghrIAEZUIIIYQQVkCCMiGEEEIIKyBBmRBCCCGE\nFZCgTAghhBDCCkhQJoQQQghhBSQoE0IIIYSwAhKUCSGEEEJYAQnKhBBCCCGsgARlQgghhBBWQIIy\nIYQQQggrIEGZEEIIIYQVkKBMCCGEEMIKSFAmhBBCCGEFJCgTQgghhLACEpQJIYQQQlgBCcqEEEII\nIayABGVCCCGEEFZAgjIhhBBCCCsgQZkQQgghhBWQoEwIIYQQwgpIUCaEEEIIYQUkKBNCCCGEsAIS\nlAkhhBBCWAEJyoQQQgghrIAEZUIIIYQQVkCCMiGEEEIIKyBBmRBCCCGEFZCgTAghhBDCCkhQJoQQ\nQghhBSQoE0IIIYSwAhKUCSGEEEJYAQnKhBBCCCGsgARlQgghhBBWQIIyIYQQQggrIEGZEEIIIYQV\nkKBMCCGEEMIKSFAmhBBCCGEFJCgTQgghhLACEpQJIYQQQlgBCcqEEEIIIayABGVCCCGEEFZAgjIh\nhBBCCCsgQZkQQgghhBWQoEwIIYQQwgpIUCaEEEIIYQUkKBNCCCGEsAISlAkhhBBCWAEJyoQQQggh\nrIAEZUIIIYQQVkCCMiGEEEIIKyBBmRBCCCGEFZCgTAghhBDCCkhQJoQQQghhBSQoE0IIIYSwAhKU\nCSGEEEJYAQnKhBBCCCGsgARlQgghhBBWQIIyIYQQQggrIEGZEEIIIYQVkKBMCCGEEMIKSFAmhBBC\nCGEFJCgTQgghhLACEpQJIYQQQlgBCcqEEEIIIayABGVCCHEFBoNCdkEJBoNys5sihKjlbG52A4QQ\ntYOiKBQUl5FTUEp2QQk5BSXG//6Xlp3/3/HFtDKdAbUa1CoVarWq/L//vb7kWKNWoVKpjGUvHqvQ\nXHKuSgUatRpbrRo3Jzvcnexwc7LF3ckeNydbAurl4eliT0F+HqU6PUUlOtJzikjPKSItu7D8X04R\n6dlFpOcUkp5ThN6g4GBnQ4ifO039PWnq70FogAdN/T2p6+GISqW62ZdfCFELSFAmhDDLYFA4cSab\nhHM55QHVhUAq55LgKruglJzCi4GWTl97e5OKSnQcOpnBoZMZZvMd7WxoFuTFHQ19uLddQ1o38UWt\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fa2f525a6d8>"
]
}
],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The convergence is not perfect, but it is far better. \n",
"\n",
"xs = np.asarray(xs)\n",
"txs = np.asarray(txs)\n",
"###### Problem: Sensor Position Effects\n",
"\n",
"plt.plot(xs[:,0], xs[:,2])\n",
"plt.plot(txs[:,0], txs[:,1])\n",
"Is the behavior of the filter invariant for any sensor position? Find a sensor position that produces bad filter behavior."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# your answer here"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Solution\n",
"\n",
"We have already discussed the problem of angles being modal, so causing that problem by putting the sensors at `y=0` would be a trivial solution. However, let's be more subtle than that. We want to create a situation where there are an infinite number of solutions for the sensor readings. We can achieve that whenever the target lies on the straight line between the two sensors. In that case there is no triangulation possible and there is no unique solution. My solution is as follows."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"std_noise = math.radians(0.5)\n",
"sa_pos = [-200,200]\n",
"sb_pos = [200,-200]\n",
"plt.scatter(*sa_pos, s=200)\n",
"plt.scatter(*sb_pos, s=200)\n",
"cf = circular_target_filter(std_noise)\n",
"target_pos = [0, 0]\n",
"plot_circular_target(cf, std_noise, target_pos)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAmYAAAJVCAYAAAB0wjmJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4VNXBP/DvnX0yM9nJHpKQHcKOIMoqKoIoUASqxd1W\ni0Xl19b2pbXqa/u+al1eqK+tfSu2aK0Kglq1iIJsFpAdITskIfu+TiaZ7f7+mGSSSSYsmczkJvl+\nnseHu5x7c3LN8s05554jiKIogoiIiIgGnWywK0BEREREDgxmRERERBLBYEZEREQkEQxmRERERBLB\nYEZEREQkEQxmRERERBLBYEZEREQkER4HszVr1iAyMhIBAQGYOHEiPvnkEwCAxWLBgw8+CH9/f8TF\nxWHr1q0u123atAkREREIDg7Ghg0bPK0GERER0ZAneDrB7JkzZ5Camgq1Wo0vv/wSS5YsQV1dHf73\nf/8X27dvx65du3Dy5EksWbIEWVlZiImJwZEjR7B48WIcPHgQAQEBmDVrFl544QWsXLlyoD4vIiIi\noiHH4xazCRMmQK1WQxRFmM1m6PV6CIKArVu34rHHHoO/vz/mzp2LmTNnYseOHQCAbdu2YcWKFUhP\nT0dUVBQeeughvPfeex5/MkRERERDmWIgbrJ27Vps3rwZWq0Wn332Gfz8/JCbm4vU1FSsWbMGt912\nG8aOHYucnBwAQG5uLubMmYONGzeiuLgYs2bNwrvvvjsQVSEiIiIasgZk8P/rr7+OlpYW/Pa3v8Wa\nNWvQ1tYGo9EIvV6Ps2fPoqysDAaDAS0tLQDgPHfhwgXk5+e7nCMiIiIaqQakxQwAFAoFHn30Ubz2\n2mvYvXs3dDodjEYjTp06BQB4/PHHYTAYAAA6nQ4tLS3YuHEjAGDHjh3Q6/W97rl79+6Bqh4RERGR\n1y1YsMCj6wcsmHUSRRGiKCIlJQVZWVmYMmUKACAzMxNLly4FAKSkpCA7O9t5TWZmJtLS0tzeLz09\nfaCrSH0ICQnB9u3bMXfu3MGuyojBZ+57fOa+x2fue3zmvhcSEoKDBw96fB+PujIrKyvx5ptvoqmp\nCVarFW+88Qaqqqpw3XXXYdWqVdi0aRMaGxuxd+9eHD58GMuXLwcArFy5Etu3b0dmZiZKS0uxefNm\nrF692uNPhoiIiGgo86jFTC6X491338Uvf/lLmM1mjB07Fp988gmCg4Oxfv16ZGdnIzY2FkFBQdi8\neTOio6MBANOnT8fTTz+N+fPnw2Kx4JFHHuFUGURERDTieTyPmTft3r2bXZk+FBISgqysLISFhQ12\nVUYMPnPf4zP3PT5z3+Mz973OrkxPx5hxSSZywSDse3zmvsdn7nt85r7HZz40MZgRERERSQSDGRER\nEZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSD\nGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERER\nSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgR\nERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFE\nMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGRER\nEZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSD\nGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERER\nSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgR\nERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFE\nMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGREREZFEMJgRERERSQSDGRER\nEZFEMJgRERERSYRisCtA0iAIAlpbbc5tURQHuUZEREQjD4PZCNfUpERenhIffaTB6dOOL4dJkwKx\ndGk7kpMt8Pe3DHINiYiIRg4GsxEsN1eLdesMOHvW9cvg+HEF3nxTi4wMK/7wh2akpJgGqYZEREQj\ni0djzKxWK+655x5ERUUhMDAQN9xwAzIzMwEAFosFDz74IPz9/REXF4etW7e6XLtp0yZEREQgODgY\nGzZs8KQa1A+5uVosWxbQK5R1d/asAsuWBSA3V+vDmhEREY1cHgUzm82G5ORkHDt2DA0NDbj99tux\nbNkyAMCrr76Kc+fOoaSkBFu2bMEDDzyAkpISAMCRI0fw7LPP4uuvv8bZs2fx3nvv9Qpu5D1NTUqs\nW2dAY+Pl//c3Nsqwbp0BTU1KH9SMiIhoZPMomKnVajz11FOIiooCANx3333Iz89HTU0Ntm7disce\newz+/v6YO3cuZs6ciR07dgAAtm3bhhUrViA9PR1RUVF46KGH8N5773n+2dAVyctTXrKlrKezZxXI\ny2MwIyIi8rYBnS7j0KFDiI6ORkhICHJzc5Gamoo1a9bg/fffx9ixY5GTkwMAznMbN27Ez372M5dz\n5F2CIOCjjzRXfd3HH6shCIIXakRERESdBmzwf2NjI5544gm88sorEAQBRqMRer0eZ8+exdSpU2Ew\nGFBcXAwAznOZmZkoKirCokWL0NLS4va+ISEhA1VFAtDaanO+fXk1Tp1SQqMJgJ+f3Au1GrmUSkdL\nJL/OfYfP3Pf4zH2Pz9z3Op+5pwYkmLW3t2P58uX4/ve/j5UrVwIAdDodjEYjTp06BQB4/PHHYTAY\nnOdaWlqwceNGAMCOHTug1+vd3vu5555zbs+ZMwdz584diCoTEREReWTfvn3Yv38/AEAul2POnDke\n39PjYGaz2XDnnXciJSUFzz77rPN4SkoKsrKyMGXKFABAZmYmli5d6jyXnZ3tLJuZmYm0tDS391+7\ndq3Lfm1tradVHtEEQcDEiUE4fvzq/tdPmmRBW1sjTCZOPDuQOv+a5de17/CZ+x6fue/xmftGRkYG\nMjIyADie+cGDBz2+p8djzB5++GHIZDK8/vrrLsdXrVqFTZs2obGxEXv37sXhw4exfPlyAMDKlSux\nfft2ZGZmorS0FJs3b8bq1as9rQpdAVEUsWxZ21Vft3RpO1cDICIi8jKPWsyKioqwefNm+Pn5ISAg\nwHl8586dWL9+PbKzsxEbG4ugoCBs3rwZ0dHRAIDp06fj6aefxvz582GxWPDII484u0DJ+5KTLcjI\nsF7xm5kZGVYkJ3MFACIiIm8TRAk3g+zevRvp6emDXY1hqXOC2cvNZRYYaMeOHY2c/d9L2N3ge3zm\nvsdn7nt85r7X2ZW5YMECj+4zoNNl0NCRkmLCxx83IiPD2meZjAwrQxkREZEPca3MESw52YStW63I\ny1Pi44/VOHXK8arvpEkWLFvWjqQkLmJORETkSwxmI5y/vwVTp1owbZoJGo1jnGBbWyMH+hMREQ0C\nBjMC4Hhbs3PyWE6JQURENDg4xoyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjM\niIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhI\nIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyI\niIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSC\nwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiI\niCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjM\niIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhI\nIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyI\niIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSC\nwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiI\niCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIhjMiIiIiCSCwYyIiIhIIjwKZh9//DFmzpwJjUaD+++/\n33ncYrHgwQcfhL+/P+Li4rB161aX6zZt2oSIiAgEBwdjw4YNnlSBiIYpURTRaGxHbkk9sovrUN3Y\nCqvN7pWPU1LdjF3Hi/C//zyFv+/JxuGsctQ0miCK4oB/PCKiS1F4cnFgYCCefPJJfPXVV2htbXUe\nf/XVV3Hu3DmUlJTg5MmTWLJkCWbOnImYmBgcOXIEzz77LA4ePIiAgADMmjULkydPxsqVKz3+ZIho\ncLWZrSioaEKbxYp2sw1mqw3tFsd/Zqsd7RYr2i12mK02NLea8V1hDTKLHKHLbB340OWpAD8VEqMC\nkRQViMTIACR1bI8OM0ClkA929YhoGPIomM2dOxcAcOLECZdgtnXrVqxfvx7+/v6YO3cuZsLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7fa2f5340780>"
]
}
],
"prompt_number": 24
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I put the sensors at the upper left hand side and lower right hand side of the target's movement. We can see how the filter diverges when the target enters the region directly between the two sensors. The state transition always predicts that the target is moving in a straight line. When the target is between the two sensors this straight line movement is well described the bearing measurements from the two sensors so the filter estimate starts to approximate a straight line. \n",
"\n",
"\n",
"###### Exercise: Compute Position Errors\n",
"\n",
"The position errors of the filter vary depending on how far away the target is from a sensor. Write a function that computes the distance error due to a bearing error. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# your solution here"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 25
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Solution\n",
"\n",
"Basic trigonometry gives us this answer."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def distance_error(target_distance, angle_error):\n",
" x = 1-math.cos(angle_error)\n",
" y = math.sin(angle_error)\n",
" return target_distance*(x**2 + y**2)**.5\n",
"\n",
"d = distance_error(100, math.radians(1.))\n",
"print('\\n\\nError of 1 degree at 100km is {:.3}km'.format(d))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"\n",
"Error of 1 degree at 100km is 1.75km\n"
]
}
],
"prompt_number": 26
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Discussion\n",
"\n",
"This is an inherent physical limitation that is extremely difficult to deal with when designing filters. We can see that a very small angular error translates into a very large distance error. What is worse, this behavior is nonlinear - the error in the *x-axis* vs the *y-axis* will vary depending on the actual bearing. For example, here is a scatter plot that shows the error distibution for a $1^\\circ$ standard deviation in bearing for a $30^\\circ$ bearing."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"d = 100\n",
"xs = []\n",
"ys = []\n",
"\n",
"for i in range (3000):\n",
" a = math.radians(30) + randn() * math.radians(1)\n",
" \n",
" xs.append(d*math.cos(a))\n",
" ys.append(d*math.sin(a))\n",
" \n",
"plt.scatter(xs, ys)\n",
"plt.show() "
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nP3/rrbd0+PBhff/73//Gn4OWc/SokzlVAAC0sAYHqgULFqhdu3YaN26c9uzZIykesmbNmqVly5YR\nplLA1q1uTZiQz0R1AABaWIO2/B588EENHDhQkUhE99xzjyZMmKBdu3bp0Ucf1aBBg9S/f/9v3e5r\n06ZNkxWcTWw2m6SGrd+uXUHNmuWqvf9v+XKHOneOymo1adAgqywWS7PWmorOZ/1QH+vXeKxdYli/\nxLB+jXd67RqjQYFqyJAhtT++9957tWbNGu3atUtLlixRZWWlpG/eEpSke+65p/bHpaWlGjNmTGPr\nRQMUFYV1yy0B/ehH8S5VeblPEyYoK0MVAADf5rXXXtOWLVskxf+cLC0tbdT3McXOc68uFoupoKBA\nmzZt0mWXXVbv+YUXXqi333679utXX31VJSUljSou253+28WXX37ZoJ+/datbs2a5dPfdfi1alFvb\nrerYMapnnjmpgoKwPJ5gs9Wbas53/VAX69d4rF1iWL/EsH6N16ZNG23dulWXX375ef/ac56hOnHi\nhF588UUFAgEFAgEtXrxYHTp00MiRIxWNRmv/c+edd2rixIl1whRaVnyi+gmVlITrPdu926qxYz36\n29/yklAZAACZ7ZyBKhQK6fbbb1fbtm3VqVMnVVZWatOmTWwfpaguXQwVFvpVXu6rvf/vgQd8Wro0\nR1VVZk2dmqddu3KTXSYAABnlnGeo2rZt26Cu05133tkkBaFplJZ69bvfRfTFF2bdd1+ODh4883/1\noUNWdexoz6rtPwAAmhNXz2SwXr38slpjKisL1Xar/uu//LLbYzIMOowAADQVLkfOcN/5jk8uV67u\nvjumo0dNats2qtmz4+eo1q416+KLfUmuEACA9EegygJ9+/rVrp1dXq9VV1/dqvbtvylT3Hr++aic\nzgjbfwAAJIAtvyzh8QTldtd/+++3v83R2LEe/f3vriRUBQBAZiBQZRGPJ6i1a72156nmzze0caND\nVVVmTZniVnW1PdklAgCQltjyyzIXX+zT5s0hGYZF11/vVnU1mRoAgETxp2kW8niC6tLF0NKlZ2ZV\nrV3r5RwVAACNRIcqi53uVkmqE6aOHnVKig8JBQAA50aHKst5PME6YWrrVrcmTMjXhAn52rbNrePH\nOVcFAMC5EKhQ6+hRp2bNcqmqyqyqKrNmznTp//wfl954g/v/AAD4NgQqfKvevSPassWmvXu5/w8A\ngG9CoEKtLl0MrVx55qD6/ff79Pjj8S2/kyfNOnGC7T8AAM6GQIU6Ro3yatOmE/rNb7xas8aha64J\nq6LCoZtvztOuXQ7OVAEAcBYEKtTTubOh9u1DGj48omXLcmrPVP3Xfzm1bVuO3n+fqeoAAHwVgQpn\n5fEE9f3vB7/ydVRTpgS0aFGurr/ercpKdxKrAwAgtRCo8I0GDPDp4Ydr1LFjVNdfH9DSpc7abtX0\n6S794x90qgAAkAhUOIdLL63R5s3V+o//qD9F3TBMOnSIt/8AACBQ4Zw8nqDatQtp/nyjzsXKf/ub\nVddc00pbt7L9BwDIblw9gwYpKAiqTx+rysriGdzhiGnt2vgVNTt2WNWlS6569fIns0QAAJKGQIUG\nu/BCv7p3D+v4cav+1/+KT09fsOCUli3LUUWFQytXWjRqlDfJVQIA0PIIVDgvp+/+W7zYoh07rLVj\nFSTpzjud+tWvIjKbRbcKAJBVOEOFRhk1yqtrrgnUfu3xRDVz5in98Y927dpl1Xvv8QYgACB7EKjQ\naL16+Wuvqpky5ZTCYZOee86uXbssMgyT3nuPNwABANmBQIWEjBrl1fPPn9D3vhfUww87NHlysPaq\nmupqiw4dcia7RAAAmh2BCgnr0sVQbm5M48eH6lxVM2eOSzU1Zu3YwVgFAEBmI1ChSXTqZOiKK0L1\nPvf7TbrlFpf272f7DwCQuQhUaDKDBtXUnqnq2DGq5ct9+sUvciRJn31m0dtvc1AdAJCZGJuAJjVq\nlFf/8z8RBYMm3Xtvjj75xKq5c0/pzjudGj8+pJ49Q/J46l9jAwBAOiNQocn17OnX8eN2DRhgV48e\nQS1ZkiO7PdlVAQDQfAhUaBYFBUF997s2TZnilt0uzZ9vqE+feHfqww/j56l69GD4JwAgMxCo0Gwu\nvtinzZtDMgyLXK6ICgqC2rLFrcWL49t/Y8eadeGFNckuEwCAhBGo0Ky+el7qww9ztXixU5MnB7Vu\nXXwP0GzO06BBhCoAQHrjLT+0qPHjQ1q3zl47APSmm/JUWcmcKgBAeqNDhRbTo4dfY8fGM/xXL1We\nPt2lzZsDvP0HAEhbdKjQoi68sOasA0ADAYuOHnWquprXAQEA6YdAhRY3aFCN1qw5MwD04YdrtH27\nXRMm5GvsWI/eeCMv2SUCAHBe2PJDUgwb5tXmzQEZhkX/8z8OPfbYmS3AadPytHFjTAMG+JLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7fa2f5204c50>"
]
}
],
"prompt_number": 27
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Exercise: Explain Filter Performance\n",
"\n",
"We can see that for even very small angular errors the (x, y) positional errors are very large. Explain how we got such relatively good performance out of the UKF in the target tracking problems above. Answer this for the one sensor problem as well as the multiple sensor problem. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### Solution\n",
"\n",
"> This is **very** important to understand. Try very hard to answer this before reading the answer below. If you cannot answer this you really need to revisit some of the earlier Kalman filter material in the Multidimensional Kalman filter chapter.\n",
"\n",
"There are several factors contributing to our success. First, let's consider the case of having only one sensor. Any single measurement has an extreme range of possible psoitions. But, our target is moving, and the UKF is taking that into account. Let's plot the results of several measurements taken in a row for a moving target to form an intuition."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pos = [5, 5]\n",
"for i in range(5):\n",
" pos[0] += 0.5\n",
" pos[1] += 1 \n",
" \n",
" actual_angle = math.atan2(pos[1], pos[0])\n",
" d = math.sqrt(pos[0]**2 + pos[1]**2)\n",
"\n",
" xs = []\n",
" ys = []\n",
"\n",
" for i in range (100):\n",
" a = actual_angle + randn() * math.radians(1)\n",
" xs.append(d*math.cos(a))\n",
" ys.append(d*math.sin(a))\n",
" plt.scatter(xs, ys)\n",
"\n",
"plt.axis('equal')\n",
"plt.plot([5.5, pos[0]], [6, pos[1]], c='g', linestyle='--')\n",
"plt.show()"
],
"language": "python",
@@ -1361,13 +1727,149 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAs4AAAF2CAYAAAB+nR6pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VPW9//HXTNbJvkA2tmwsgRCJQADFhEXQiAuiVIqS\n0haLEm/1AvWq5afei5daf9WfrZe2dAVUrlYRQaDBgMoW9iUIuJCEAAECJED2deb8/kgTRAIEAjlZ\n3s+/yEzm5DPfB9JXTs98j+Wbb74xEBERERGRK7KaPYCIiIiISFugcBYRERERaQKFs4iIiIhIEyic\nRURERESaQOEsIiIiItIECmcRERERkSZQOIuIiIiINMFVw3n27NkMHz6cgQMHcv/997Nu3ToA3nrr\nLfr160d8fDzx8fGMHj36otctXryY22+/nYSEBN54442bM72IiIiISAtxvto3TJs2jXnz5uHq6srm\nzZuZPn0627dvB2DcuHG89tprl7wmMzOT+fPns2TJEry8vJg8eTIxMTEkJyff+HcgIiIiItICrnrG\nuU+fPri6umIYBjU1NXh6emKxWAAwjMZvOpiWlsbYsWOJiooiODiYiRMnsnr16hs7uYiIiIhIC7rq\nGWeAl19+maVLl+Lu7s6CBQuw2WxYLBY+//xzhgwZQmhoKE8//TQjR44EIDc3l8GDB7No0SLy8/MZ\nOHAgK1euvKlvRERERETkZmrShwNffvll9uzZwzPPPMMvfvELqqqqSE5OZu3atWRkZJCamsrMmTPJ\nzc0FoKKiAg8PD44dO8aRI0fw9PSkvLz8Zr4PEREREZGbqklnnAGcnZ159NFHeeedd9iyZQsjRoxo\neG7MmDEkJCSwceNGwsPDsdlslJeXM2fOHADS09Px8PC45JjHjh1r/jsQEREREWmCbt26Nev1TQ7n\nepe7rvm7wsPDycnJafg6KyuLyMjIRr83JibmWkeQGyAwMJCPPvqIpKQks0fpkLT+5tHam0vrby6t\nv3m09uYKDAxk06ZNzT7OFS/VKCgo4IMPPqC0tJTa2lree+89zp49y4ABA0hPT6e4uBiHw8EXX3zB\n9u3bGT58OADJycmkp6eTlZXFqVOnWLp0qXbUEBEREZE27YpnnK1WKytXruT111+npqaG6Ohofv/7\n3+Pn58eqVat4/vnnsdvthIeH8+abbxIREQFAXFwcqamppKSkUFtby6RJkxTOIiIiItKmXTGcAwIC\n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 truncated
"png": "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\nXl6tLrywQXa7lJMT1IMP1umRRxzcRQeYiMAEADFoxAiPFi2qUWGhX1VVlhZ30ZWWpujGG9NVXs5Z\ndEC0HDMwvf766xo5cqRSU1N14403Nn+9vr5ekydPVkZGhvLy8vTKK69EvFAA6GyGDavRddfVaejQ\nBl1ySb3GjatvvouuqsqqO+90qrLSqd272dcERNoxxwpkZWVp+vTp+tvf/qba2kO3tM6fP1+ffvqp\nduzYoXXr1umKK67QyJEjddppp0W8YADoTE491SdJcjoduvRSqbQ0pcXzW7cmadeuZF1wgVVOp8Gx\nKkCEHLPDNGbMGF155ZVyu90tvv7KK6/orrvuUkZGhsaMGaORI0fqtddei2ihANCZZWb65HI1triL\n7rHHvHrlFZv69w/q+utduvLKDK1cyTIdEAnHNbjSMIwWjz///HP1799f119/vcaPH68zzjhDGzdu\njEiBAIAmPXv6lJHh0JIlHm3dmqSFC1P0s5/V6bbb0puHXd5zj1N//GOjevem0wSE03EFJovF0uKx\n1+tVenq61q9fr3POOUcul0tfffVVm9+bnZ3d8SrbYLPZIvr+aI1rHn1c8+iL9WuenS317WsoL69B\np51Wp6oqS6vXLFuWopEjk3TZZZbm308si/Vrnoi45ieuXR0mp9Mpr9erjz76SJJ09913y+Vquw08\na9as5l+PHj1aY8aMaW+tAAA1/RDbvbtNp57aqHXr/Jo3z6t773VKkqZNq9Nzz9klSdnZAXXr1qg+\nfeyyWrkpGjjSO++8o5UrVzY/Hjt27FFf264OU79+/VRZWamzzz5bkrRhwwZ9//vfb/N7p06d2uLx\n3r17j+cjQzqYisP1fgiNax59XPPoi7drfvrphmZV3qUfPTFcwYopeu45l2699dABvk895dW//+1X\n//6xu0QXb9c8EXDNmwwePFiDBw9uflxZWXnU1x7zR45gMKi6ujo1NDSosbFRfr9fDQ0N+tGPfqSn\nnnpK+/fv1z/+8Q+tXr1aV155Zfh+BwCA41K+u1xv7VymF7bN1jnneTV+fMvRA3fd5dQbb6Ro1So2\ngwMdccwO0+LFi3XTTTc1P16yZIl+8YtfaObMmfrss8/UvXt3denSRYsWLVJubm7EiwUAHGIYhub9\nc54k6dZhU3R+v1R17xZoNXogGJTeey9ZJ53kVNeu9crKCphRLhDXLMaRG5TC6O2339bAgQMj8t60\nE6OPax59XPPoi6dr/v6u9/Wj//mRslKytKpwlTLsGZKkVatcuuOOpj1NM2f61NAgPfZY03DLRx+t\nVY8ejRo40Gta3UeKp2ueKLjmbausrNTFF1/c5nPHtYcJABBbDu8uTRk8pTksSdLIkR4tXRrUN99Y\ntXZtkn7/+9TmsQMzZ6apsNCvb7+16vzzPabUDsQjbpsAgDjkqffIH/QrKyVLNw2+qdXz/ft75XAY\n6t072Oq5mhpL87EqAI4PgQkA4lCGPUN/nvBnvfmDN1t0lw53zjk1GjWqrsV08GnT6rRsWdPYgb/8\nxc5mcOA4sSQHAHHKYrGoR0aPY74mKyug888P6NVXG3XggFX33JMmu71pXtPs2alavtymhQuDysgI\nNp9bB6A1AhMAdAKnn16rmhq7nnnG0F/+Ytfs2amSpKIiv667rqnL9NRTyRo1in1NQFtYkgOATiI9\nPaCBA7264IIG2e3SxIl+zZnjaDGz6bPP2NcEtIUOEwDECcMwVFNfI5e9Y/uORo70aPHioLZtS2r1\n3J//bNe+fVYNGOBnXhNwGDpMABAnyneX69yl5+q5T57r8HsNGuRtc0P44sUp+vnPHXr//VR9+ind\nJuAgOkwAEAcOzl3y1HtU11AXlvc8uCH8v/4rqD//ueW+pnnzUjVuXL2CQWnIkNgZcgmYhcAEAHGg\nfHe5VletPurcpY4YMMCr/fstKi1NUWGhX8XFKZo8OaCSEnvzawhN6OwITAAQ44411Ttchg+vUVlZ\nQN98Y5MklZTYNXlyQHPnpqq0NEXPPGNVr14NOvlkRg+gcyIwAUCMi2R36XBud0Bud0DjxjU9njv3\n0JEqd9zh1IIFXm3blq7hw2siVgMQqwhMABDjslOz9d0e39VZXc+KSHfpSAeX30pLU1p8fdWqZJ1x\nRqO++CJNXbo0cBcdOhXukgOAGDfAPUC/v/T3uvusu6P2mUOGeLVwYcs76JYvt2nDhiTdfHO61q9P\n0YYNaVGrBzAbgQkA4oTFYonq540Y4dHixR4VFvpVUmJXUZFff/6zTZMnB3T33U7dcEOG1qxJj2pN\ngFlYkgMAHNWgQV6dckq9rroqWTffnK6xYxta7G2aOjVdZWVNe5+AREaHCQBwTG53QD171mr27Fql\npxutnvf5Wk8MBxINHSYAiEEbqzcq3Z6u3PRcs0tpdt55NcrMTNO55zZo2rSmKeAzZ/qUntLine truncated
"text": [
"<matplotlib.figure.Figure at 0x7f47d4127630>"
"<matplotlib.figure.Figure at 0x7fa2f0cf3e10>"
]
}
],
"prompt_number": 98
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that each individual measurement has a very large position error. However, when we plot successive measurements we suddenly have a clear trend - the target is obviously moving towards the upper right. When the Kalman filter (whether a linear KF, an EKF, or UKF) computes the Kalman gain it takes the distribution of errors into account by using the measurement function. In this example the error lies on an approximately $45^\\circ$ degree line, so the filter will discount errors in that direction. On the other hand, there is almost no error in measurement orthogonal to that, and again the Kalman gain will be taking that into account. The end result is the track can be computed even with this sort of noise distribution. Of course, this graph makes it look easy because we have computed 100 possible measurements for each position update and plotted them all. This makes it easy for us to see where the target is moving. In contrast, the Kalman filter only gets 1 measurement per update. Therefore the filter will not be able to generate as good a fit as the dotted green line implies. \n",
"\n",
"The next interaction we must think about is the fact that the bearing gives us no distance information. Suppose in the example above we told the filter that the initial position of the target was 1000km away from the sensor (vs the actual distance of 7.07 km), and that we were highly confident in that guess by setting $\\mathbf{P}$ very small. At that distance a $1^\\circ$ error translates into a positional error of 17.5 km. The KF would never be able to converge onto the actual target position because the filter is incorrectly very certain about its position estimates and because there is no distance information provided in the measurements."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's consider the effect of adding a second sensor. Again, I will start by plotting the measurements so we can form an intuition about the problem."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from math import sin, cos, atan2, pi\n",
"\n",
"def isct(pa, pb, alpha, beta):\n",
" \"\"\" Returns the (x, y) intersections of points pa and pb\n",
" given the bearing ba for point pa and bearing bb for\n",
" point pb.\n",
" \"\"\"\n",
" \n",
" B = [pb[0] - pa[0], pb[1]- pa[1]]\n",
"\n",
" AB = math.sqrt((pa[0]-pb[0])**2 + (pa[1] - pb[1])**2) \n",
" \n",
" ab = atan2(B[1], B[0])\n",
" a = alpha - ab \n",
" b = pi - beta - ab\n",
" p = pi - b - a\n",
" \n",
" AP = (sin(b) / sin(p)) * AB\n",
" \n",
" x = cos(alpha) * AP + pa[0]\n",
" y = sin(alpha) * AP + pa[1]\n",
" return x, y\n",
"\n",
"\n",
"def plot_iscts(N=4):\n",
" for i in range(N):\n",
" pos[0] += 0.5\n",
" pos[1] += 1 \n",
"\n",
" actual_angle_a = math.atan2(pos[1]-sa[1], pos[0] - sa[0])\n",
" actual_angle_b = math.atan2(pos[1]-sb[1], pos[0] - sb[0])\n",
"\n",
" da = math.sqrt((sa[0]-pos[0])**2 + (sa[1]-pos[1])**2)\n",
" db = math.sqrt((sb[0]-pos[0])**2 + (sb[1]-pos[1])**2)\n",
"\n",
" xs, ys, xs_a, xs_b, ys_a, ys_b = [], [], [], [], [], []\n",
"\n",
" for i in range (300):\n",
" a_a = actual_angle_a + randn() * math.radians(1)\n",
" a_b = actual_angle_b + randn() * math.radians(1)\n",
"\n",
" x,y = isct(sa, sb, a_a, a_b)\n",
" xs.append(x)\n",
" ys.append(y)\n",
"\n",
" xs_a.append(da*math.cos(a_a)+sa[0])\n",
" ys_a.append(da*math.sin(a_a)+sa[1])\n",
"\n",
" xs_b.append(db*math.cos(a_b)+sb[0])\n",
" ys_b.append(db*math.sin(a_b)+sb[1])\n",
"\n",
" plt.scatter(xs, ys, c='r', marker='.')\n",
" plt.scatter(xs_a, ys_a)\n",
" plt.scatter(xs_b, ys_b)\n",
"\n",
" #plt.plot([5.5, pos[0]], [6, pos[1]], c='g', linestyle='--')\n",
" plt.axis('equal')\n",
" plt.show()\n",
"\n",
"pos = [4, 4]\n",
"sa = [0, 2]\n",
"sb = [8, 2]\n",
"\n",
"plt.scatter(*sa, s=100)\n",
"plt.scatter(*sb, s=100)\n",
"plot_iscts(N=4)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAJVCAYAAAAsvaqQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VPW9//H3ObNlssKEJYTNgArK4kZVShVQsbRVUaia\ne22tSm+jaKSRtoj+7CKtlFqIGLHSK7Vyvb2hXFz6sC2KCsJVtKKIrKKIIISIECHJZDLLOef3x5Bh\n5yAQsr2ej0cfZGbOzJzTIzze+Xw/3+/XcBzHEQAAAI7IbOoTAAAAaO4ITAAAAC4ITAAAAC4ITAAA\nAC4ITAAAAC4ITAAAAC4ITAAAAC6OGpheeOEFDR48WGlpabr11ltTz8fjcY0dO1bZ2dnq2bOn5s2b\n1+gnCgAA0FS8R3uxXbt2+tnPfqZXXnlFdXV1qedLS0u1Zs0abd26VStWrNBVV12lwYMHq1u3bo1+\nwgAAAKfaUStMQ4cO1XXXXadQKHTA8/PmzdPdd9+t7OxsDR06VIMHD9Zzzz3XqCcKAADQVI5aYWpw\n8O4pGzZsUJ8+ffS9731PV199tc4++2x9+OGHjXKCAAAATe2Ymr4NwzjgcTgcVmZmplavXq2Kigpl\nZWWptra2UU4QAACgqR1XhSkjI0PhcFjvv/++JGn8+PHKyso65H2vvvrqSThFAACAU+Pyyy8/7PPH\nFJgOrjCdeeaZWrdunc4//3xJ0tq1azVq1KjDvvess876KufZYuTm5urZZ5/V0KFDm/pUcBy4fy0X\n965l4/61bK39/q1bt+6Irx11SM62bdXX1yuRSMiyLEWjUSUSCd1www169NFHtWfPHi1evFhvvfWW\nrrvuupN+4gAAAM3BUStMc+bM0W233ZZ6/Mwzz+iXv/yl7rvvPq1fv17du3dX+/bt9ac//Uldu3Zt\n9JMFAABoCkcNTLfccotuueWWw742e/ZszZ49uzHOqcVorcONbQX3r+Xi3rVs3L+Wra3eP7ZGOQFt\n9T+a1oL713Jx71o27l/L1lbvH4EJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJ\nAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADA\nBYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJ\nAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADA\nBYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJ\nAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADA\nBYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJ\nAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADA\nBYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJAADABYEJANDsmPG4zHi8qU8DSCEwAQCa\nFTMeV05pqXJKSwlNaDYITACAk+5YK0RUktBSeJv6BAAArUtDhUiSqouL5Xi9sn2+ox63p6QkdYzt\n82lPSUnqZ6A5oMIEAGgUdn6+ssvKlDV3rjyRyAGvmfG4jETiyO/1+QhLaFaoMAEAjlvDcNr+4aah\nQmQkEsqcP1+eTZuUXVam6uJiWXV1kpSqLNWMGyfH4zmmcHS47wJOFSpMAIDjcrTmbNvnk+P1Knzt\ntXICgVS1yZw8WXZ9feq4jOefTz7v0sdEIziaGhUmAMBJd3AfkyRll5UlX0tL056SEpnRqDKef77J\nzhH4KghMAIBjVlXllySFQjFJR2/qbuB4valjM9LTU0MbDWGpurjYdZiNRnA0NQITAOCYLF+eoYkT\nMzRyZFzf/pZXX3/rUZlVVakgs7/9+5jMaFRZjz+efD4/X8b27TLvuEPm5s3H9L30LqE5oIcJAOCq\nqsqviRMzNHZsTOXlAd38g2y91Ocu2aHQUd+XOX++gosWSfG4lEhIsZgUix11htz+6F1Cc0FgAgAc\nk5Ej45o2LU2VlaZiMWnpW0H965K7j1j5MRIJWQUF8q1YITs/X/GhQyXDUOKCCxRYs0Z2ly6y8/NP\n8VUAx4chOQCAq1Aopm9/26fy8oBCIVuTJtVr9uxkP9PIkaYGDKg94HgzHk81eVsFBTK3b1dtYaHS\nzj9fjmXJXLlSZmWl5PXK8XoPGHbb/2d6l9BcEJgAAMekX7+wZs40tXSpV7Nn+zV2bCwVmmw7U+ec\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fa2f0dffac8>"
]
}
],
"prompt_number": 29
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I placed the sensors nearly orthogonal to the target's initial position so we get theese lovely 'x' shape intersections. I then computed the (x, y) coordinate corresponding to the two noisy bearing measurements and plotted them with red dots to show the distribution of the noisy measurements in x and y. We can see how the errors in x and y change as the target moves by the shape the scattered red dots make - as the target gets further away from the sensors, but nearer the y coordinate of sensor B the shape becomes strongly elliptical.\n",
"\n",
"Next I will alter the starting positions and rerun the simulation. Here the shape of the errors in x and y changes radically as the target position changes relative to the two sensors. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sa = [3, 4]\n",
"sb = [3, 9]\n",
"pos= [4, 4]\n",
"\n",
"plt.scatter(*sa, s=100)\n",
"plt.scatter(*sb, s=100)\n",
"plot_iscts(N=5)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x7fa2f5302358>"
]
}
],
"prompt_number": 30
},
{
"cell_type": "markdown",
+9 -1
View File
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from IPython.core.display import HTML
import matplotlib.pylab as pylab
import matplotlib.pyplot as plt
def load_style(name='../styles/custom2.css'):
styles = open(name, 'r').read()
@@ -30,7 +31,7 @@ pylab.rcParams['xtick.minor.pad'] = 6
pylab.rcParams['xtick.color'] = '555555'
pylab.rcParams['ytick.direction'] = 'in'
pylab.rcParams['legend.fancybox'] = True
pylab.rcParams['figure.facecolor'] = '0.85'
pylab.rcParams['figure.facecolor'] = '1.0'
pylab.rcParams['figure.edgecolor'] = '0.50'
pylab.rcParams['figure.subplot.hspace'] = 0.5
pylab.rcParams['figure.figsize'] = 12,6
@@ -39,3 +40,10 @@ pylab.rcParams['grid.linestyle'] = 'solid'
pylab.rcParams['grid.linewidth'] = 1.5
def equal_axis():
pylab.rcParams['figure.figsize'] = 10,10
plt.axis('equal')
def reset_axis():
pylab.rcParams['figure.figsize'] = 12, 6