Added air drag to kalman filter ball tracking.

This commit is contained in:
Roger Labbe committed 2014-06-02 23:08:47 -07:00
1 parent 12c67ec3e5
commit 70f34843c7
2 files changed
+361 -249

No files matched your search

+278 -249
View File
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:9253d1b89f39ca3b6e9087392e93410a4b889d4de3c48de04660d0c028948c29"
"signature": "sha256:6790e915a872d1db0a6db2a07a08d735d2be341faf2b0c3720abe5b9628ae04e"
},
"nbformat": 3,
"nbformat_minor": 0,
@@ -244,7 +244,7 @@
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x2b3db50>"
"<IPython.core.display.HTML at 0x21b2c90>"
]
}
],
@@ -336,9 +336,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3ab7990>"
"<matplotlib.figure.Figure at 0x312cad0>"
]
}
],
@@ -672,9 +672,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "iVBORw0KGgoAAAANSUhEUgAAAr8AAAFyCAYAAAD8h7IZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VHX2x/H3zCSTnhDSII2E3psgiggoVhAL9sq6Nuy6\nKBasa9nV39qwIotd1sWKYsMFVFCKgHSI9BRID+llMnN/fwQikYAkTDI3M5/X8/CQO/fOvSdwCCcn\n536vJS0tzUBERERExAdYPR2AiIiIiEhrUfErIiIiIj5Dxa+IiIiI+AwVvyIiIiLiM1T8ioiIiIjP\nUPErIiIiIj7jsMXvU089xQknnMD48ePrX/vqq684/fTTOf3001m4cGGLBygiIiIi4i6HLX5PO+00\npk+fXr9dU1PDM888w3/+8x/eeustnnzyyRYPUERERETEXQ5b/A4aNIh27drVb69du5Zu3brRvn17\nOnbsSIcOHdi8eXOLBykiIiIi4g5+TTk4Ly+PmJgYPvjgAyIiIoiJiSE3N5eePXu2VHwiIiIiIm7T\npOJ3v0suuQSA7777DovF4taARERERERaSpOK39jYWPLy8uq393eC/+jXX38lOjr66KMTERERETmM\n0tJSevfufcTHN6n47devH1u2bKGwsJDq6mpycnIaHXmIjo5m8ODBTTm1SKv54osvGqxgImIWyk0x\nM+WnmNWqVauadPxhi99HH32U7777jr179zJq1CgefvhhJk+ezKWXXgrA/fff3/xIRTwkPT3d0yGI\nNEq5KWam/BRvcdji9+GHH+bhhx8+6PWxY8e2WEAiIiIiIi1FT3gTn3PKKad4OgSRRik3xcyUn+It\nVPyKz+nRo4enQxBplHJTzEz5Kd6iWUudHY2ysjKKi4u1RJoXstlsxMbGmv7vdvHixYwYMcLTYYgc\nRLkpZqb8FG/RqsVvQUEBAPHx8aYvkKTpKioqyM3NJS4uztOhiIiIiDSqVcceqquriYqKUuHrpYKD\ng3E6nZ4O40+pcyFmpdwUM1N+irfQzK+IiIiI+AwVv+JzFi9e7OkQRBql3BQzU36Kt1Dx+wf//ve/\n6datG8nJyfz444/1r0+ePJl//etfDY6dMmUKycnJREdH88MPP7R2qCIiIiLSRJa0tDTD3SfNyMho\n9PHGu3fvJj4+3t2XcxuHw0FKSgrfffddk54RPXDgQKZNm8bIkSMP2jd+/HguuugirrzySneGalpm\n/zsWERER77Jq1SqSkpKO+Hh1fg+Qk5NDVVWVW9cy1M19IiIiIuah4nef448/nuOPPx6A1NTU+rGH\nefPmkZycTFxcHE888cQRn+/ZZ58lOTmZJUuWcM8995CcnMyYMWPq9xcVFXHDDTfQs2dPBg0axDvv\nvNPg/TfffDP33XcfV111FcnJyQwYMICysjL3fLI+TnNrYlbKTTEz5ad4i1Z/yIVZLVmyhIyMDAYO\nHMjOnTuxWn//viA9PZ2bb765SV3cv/3tb/ztb3/j7LPP5qKLLuKKK65osH/SpEnExsayZs0a9uzZ\nw7hx4+jfvz8DBw6sP2b27Nm8+uqrvP3222zYsAE/P/11iYiIiBwNVVMHMIzDjz//2f4jfV92djbz\n589n27ZtBAQEkJKSwvjx4/nyyy8bFL8nnngip512GgB9+/Zt1rXlYFqrUsxKuSlmpvwUb2G6sYfA\nf/6TyPbtD/oV+M9/HvHxhzrWU/7YMc7KygLqbpRLTU0lNTWVWbNmkZeX1+C4Ll26tFqMIiIiIr7A\ndJ3fqnvvperee1vs+KNxqLEHu91+yCebHTg+sV9CQgKBgYFs3779sKMUjb1Xjp6eTy9mpdwUM1N+\nirdQddUEhxp76Nq1Kz///HOj+2JjY9m4cWOD1zp06MDw4cN55JFHKC8vx+FwsGzZMjZs2OD2mEVE\nRETkdyp+/+CPndgJEyaQnJzMRx99xIsvvkhycjK33HJLg2OmTp3KF198QVJSEg899FCDfTfffDPf\nf/89ffr04Zxzzql/ffr06eTn5zN06FC6d+/OY489dlD3WMuktQx1LsSslJtiZspP8RZ6yIW4lf6O\nRUREpDXpIRcif0JrVYpZKTfFzJSf4i1U/IqIiIiIz1DxKz5Hc2tiVspNMTPlp3gLFb8iIiIi4jNU\n/IrP0dyamJVyU8xM+SnewnQPuRARERGRZjAMnI5aCh0GuWU1+345yCmr4dRu7ekVG+LpCE1Bxa/4\nHM2tiVkpN8XMlJ/mUFXrIq+shpyymt9/zy8hb+cecipqyQ+PIizIn9hQe/2vTu0CaReokm8//UmI\niIiImIBhGJRUO8mp79rWHNTBrXA4iQmxExviR4fifOI3/Mqw9auI6duNyLGn0H7YAOx+Nk9/Kqam\n4ld8jp5PL2al3BQzU366z66iSrbkV5K7v3NbXkNOaQ255Q7sNgsxIXbiQu3EhtZ1cHvFhhAbWvda\nuyA/rBYLfvPnEzTtaaqvvJKa+16A0FBPf1pthopfaZKoqChWrlxJSkqKp0MRERFpc4oqHdz5xRaG\nJoUTG2qna1QQJ6RE1HVzQ+2E2I+sa1t78smUjhnTwtF6JxW/csQMw2jwe1ulzoWYlXJTzEz56R6f\nb8xnVOd23D4i+U+Pta1fj/2996i66y6M6OiGOy2WForQ+2mps31mzZrFySefTJ8+ffjrX//KpZde\nSq9evdi4cSMul4unnnqKgQMH0rNnT+69915qa2sB2LVrF+eccw6dO3emU6dOXH311ZSUlNSf99tv\nv+XYY48lOTmZoUOHsmDBgvp9AwYM4IcffqjfjoqKYufOnfXbN998M/fddx9XXXUVycnJDBgwgLKy\nMgC++OILhg8fTufOnbn44ovJycmpf8/48ePp3r07Dz30EMOGDePkk0+msrISgKKiIm644QZ69uzJ\noEGDeOeddxpc79Zbb2Xs2LEkJydz66231u+78MIL6dSpEwAjR44kOTmZqVOnuuuPX0RExOtV1bqY\nuymf8/vFHvqgkhLsb75J2MknE3LZZRiRkWBVueZO+tM8QEBAAEuWLOGbb77hmmuu4YorruDTTz/l\npZde4ttvv+Wbb75hxYoVpKWlMX36dABqamqYOHEi69evZ/369RQVFfHUU0/Vn/OOO+7g/vvvJz09\nnU8++YSOHTvW77NYLFj+5Du32bNnc8UVV7Br1y7ef/99/Pz8WLlyJbfffjsvv/wyW7dupX///tx5\n55317xk2bBivvfYaM2bMYN68eQQGBrJ8+XIAJk2ahN1uZ82aNXz66ac89dRTrF69uv6933//PTNm\nzODnn39mzpw5rFq1CoAPP/yQ9PR0ABYtWkR6ejpPPPHEUf6Je4bWqhSzUm6KmSk/j9683wroExdC\nYkRgo/vt779PRP/++P/wA5VTp1Ly669U3XMPRvv2rRypd9PYwwFSU1MJDw+nffv2dO3alT179rBy\n5Uo+//xzHnnkETp06ADANddcw8svv8zNN99Mt27d6NatW/05zj77bD7//PP6bavVyo4dOygpKSEp\nKanJMZ144omcdtppAPTt2xeA9957j0svvZRBgwYBdR3brl27UlNTU/95pKSkEB0dTUREBMnJyeTn\n55Odnc38+fPZtm0bAQEBpKSkMH78eL788ksGDhwIwJlnnklCQgIAvXv3Ztu2bQwePLjJcYuIiMjv\nnC6Dj9flMmVUp0Me4xg9GseKFQePOIhbma74Pe3fv7rlPPOuHdTk9+zvwvr5+WGz2fDz86O2tpas\nrCwmTZqEdd+PHVwuV30hnJeXx7333svSpUupqKjA4XDUF5IAb775Js8//zzTpk2jW7duvPDCC/Tq\n1euIY+rSpctBr2VlZfHzzz8za9as+tcCAgLqRx/2x26z2eq3HQ4Hu3fvBmgQn9PpZMKECfXbERER\n9R/b7Xaqq6uPONa2QnNrYlbKTTEz5efR+WnXXiKD/OnT4dCrMhj7mk/SskxX/DanaG1JhmGQkJDA\nyy+/zJAhQw7a//e//x2bzcayZcsIDQ1l+vTpzJkzp37/sccey6xZs6ipqeHOO+/kySef5N133wXq\nCtb9s8MHzgkfyNrInE9iYiJ33XUXd9xxR5M+l4SEBAIDA9m+ffufjlscSnPfJyIi4qsMw+DDtblc\n3D8OAP+vvsLVvj3O447zcGS+STO/h7F/VYPLL7+cJ598kuzsbAzDYOvWrSxcuBCA8vJyQkNDCQ4O\nZteuXbz11lsN3j979mzKysrqi8bw8PD6/V26dGHlypUADUYl/syll17Km2++ydq1azEMg7y8PD79\n9NOD4v6juLg4hg8fziOPPEJ5eTkOh4Nly5axYcOGP/0zOPAcGzduPOJYzUhza2JWyk0xM+Vn863P\nKae02snxnSKwv/8+wZMnQ0CAp8PyWSp+9/njzWf7ty0WCzfffDPHH388Y8eOJSUlhYkTJ1JQUADA\nlClTWL16NSkpKVxzzTWceeaZ9ecxDIMPP/yQfv360a1bN3JychqskHD33Xcze/ZsTjnlFHJychrt\nqjb22tChQ3n88ce55ZZbSElJYcyYMaxdu7bR2P9o+vTp5OfnM3ToULp3785jjz2G0+k85PX+uP3A\nAw8wZcoU+vTpw+OPP37YP1MRERGBD9fmcEG/WIJfepHAp5+m9IsvcA4y10+6fYklLS3N7Yu2ZmRk\nNHqT1O7du4mPj3f35cRE9HcsIiLyu/S9Vdw1dwsfbfmY0HnfUvrxxxj6f9KtVq1a1aRFBUw38ysi\nIiLiLT5el8s57WsJ/mU5pV99Vbdur3iUxh7E52huTcxKuSlmpvxsusIKB4t27GXcSX0pmztXha9J\nqPMrIiIi0gLmbMxjdJdI2gX5ezoUOYA6v+JztFalmJVyU8xM+dk0lQ4nX20u4Py+MZ4ORfLine truncated
"text": [
"<matplotlib.figure.Figure at 0x3b35190>"
"<matplotlib.figure.Figure at 0x31aa610>"
]
}
],
@@ -751,9 +751,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAr8AAAFtCAYAAAAOBwJXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd0FFUbx/HvbE+nd0LovUV6R3pHiiAIgoAKEUREpChF\npIkiojQRAUWqSpPeXiA0ld6bSAmdBNI2W+f9IxKJmYQkhBDh+Zzj0d2dmb2bPCf+cvPMvcqZM2dU\nhBBCCCGEeA7onvYAhBBCCCGESC8SfoUQQgghxHNDwq8QQgghhHhuSPgVQgghhBDPDQm/QgghhBDi\nuSHhVwghhBBCPDcMT+KiISEhuN3uJ3FpIYQQQggh4rjdbgoUKJDs459I+HW73QQGBj6JS4v/sDVr\n1tCqVaunPQyRwUhdCC1SF0KL1IXQcvDgwRQdL20PIt1cvnz5aQ9BZEBSF0KL1IXQInUh0oKEXyGE\nEEII8dyQ8CvSTcOGDZ/2EEQGJHUhtEhdCC1SFyItSPgV6aZ48eJPewgiA5K6EFqkLoQWqQuRFp7I\nDW9JiYyM5P79+yiKkt5vLZ4wvV5Pjhw5Ev3eBgcHU6tWrXQelcjopC6EFqkLoUXqQqSFdA2/d+/e\nBSBPnjwSfp9B0dHR3Lp1i5w5cz7toQghhBBCaErXtgebzUbWrFkl+D6jPD09cblcib4uv60LLVIX\nQovUhdAidSHSgvT8CiGEEEKI54aEX5FugoODn/YQRAYkdSG0SF0ILVIXIi1I+P2Xb7/9lqJFi+Lv\n78/OnTvjnn/vvff47LPP4h07ZMgQ/P39yZYtGzt27EjvoQohhBBCiBRSzpw5o6b1Ra9cuaK5vfG1\na9fIkydPWr9dmnE4HAQEBLB582ZKlSqV7PMqVKjAtGnTqFOnToLXWrVqxcsvv0y3bt3ScqgZVkb/\nHgshhBDi2XLw4EHy58+f7ONl5vchN2/eJCYmJk3XEZSb+4QQQgghMg4Jv3+rXr061atXB6BgwYJx\nbQ+bNm3C39+fnDlzMm7cuGRfb8qUKfj7+7N3714++OAD/P39adCgQdzrYWFhvPnmm5QoUYKKFSvy\n/fffxzs/KCiIYcOG0b17d/z9/SlfvjyRkZFp82GfEunVElqkLoQWqQuhRepCpIV03+Qio9q7dy9X\nrlyhQoUK/PXXX+h0//xecPnyZYKCglI0izto0CAGDRpE69atefnll3n11Vfjvf7WW2+RI0cOjhw5\nwvXr12nRogXlypWjQoUKcccsW7aMmTNnsmDBAk6cOIHBIN8uIYQQQojHIWnqIaqadPvzo15P7nk3\nbtxg69atXLhwAbPZTEBAAK1atWLt2rXxwm/t2rVp3LgxAGXKlEnVe2cksj6j0CJ1IbRIXQgtUhci\nLWS4tgfLxIlkzpIlwT+WiROTfXxixz4t/54xDgkJAWJvlCtYsCAFCxZk0aJF3L59O95xhQsXTrcx\nCiGEEEI8DzLczG/M0KHEDB36xI5/HIm1PZhMpkR3Nnu4feKBvHnzYrFY+PPPP5NspdA6979M9mQX\nWqQuhBapC6FF6kKkhWcrXT1hibU9FClShD179mi+liNHDk6ePBnvuVy5clGjRg1Gjx5NVFQUDoeD\n/fv3c+LEiTQfsxBCCCGE+IeE33/590xsu3bt8Pf356effuKrr77C39+ft99+O94xI0aMYM2aNeTP\nn5+RI0fGey0oKIj//e9/lC5dmjZt2sQ9P3v2bO7cuUPlypUpVqwYY8eOTTB7/Kwtkya/rQstUhdC\ni9SF0CJ1IdKCbHIh0pR8j4UQQgiRnmSTC5FhyfqMQovUhdAidSG0SF2ItCDhVwghhBBCPDck/Ip0\nI71aQovUhdAidSG0SF2ItCDhVwghhBBCPDck/Ip0I71aQovUhdAidSG0SF2ItCDhVwghhBBCPDck\n/Ip0I71aQovUhdAidSG0SF2ItJBk+J00aRI1a9akVatWcc+tW7eOJk2a0KRJE7Zv3/7EByiEEEII\nIURaSTL8Nm7cmNmzZ8c9ttvtfP755yxevJj58+czfvz4Jz5A8eyQXi2hRepCaJG6EFqkLkRaSDL8\nVqxYkUyZMsU9Pnr0KEWLFiVLlizkzp2bXLlycfr06Sc+SJFxZM2alb/++utpD0MIIYQQIlUMKTn4\n9u3bZM+enSVLluDn50f27Nm5desWJUqUeFLjExmIqqrx/p1S0qsltEhdCC1SF0KL1IVIC6m64a1z\n5840a9YMAEVRNI/p168fEydOZOLEicycOTPD/6li0aJFvPjii5QuXZrXX3+dV155hZIlS3Ly5Enc\nbjeTJk2iQoUKlChRgqFDh+J0OgG4dOkSbdq0oVChQhQoUICePXsSHh4ed92NGzdSpUoV/P39qVy5\nMtu2bYt7rXz58uzYsSPu8b9nVYOCghg2bBjdu3fH39+f8uXLExkZCcCaNWuoUaMGhQoVolOnTty8\neTPunFatWlGsWDFGjhxJ1apVefHFF7FarQCEhYXx5ptvUqJECSpWrMj3338f7/369+9P8+bN8ff3\np3///nGvdezYkQIFCgBQp04d/P39GTFihObXMjg4ON73Wx7LY3ksj+WxPJbH8jitHgcHBzNx4kT6\n9etHv379SCnlzJkzSU7jXb16lb59+7JmzRoOHDjAnDlzmDVrFgDdunVjxIgRCWZ+r1y5QmBgYIJr\nXbt2jTx58qR4kOlh0aJF/PDDDyxdupQSJUrw/fffs3//fgB8fHxYuXIlixYtwtvbm27dutGwYUOC\ngoI4d+4cx44do2nTprhcLrp160bp0qUZN24cACVLlmTChAm0bduWK1euEBkZScmSJQGoUKEC06ZN\no06dOkBs+D1w4AABAQFAbBjdsGEDM2fOpFGjRpw4cYIiRYpw4sQJOnbsyM8//0z58uWZMGECJ06c\nYNGiRQQFBZE7d25q1KhB165dOX36NK+88goffPABdevWpVOnTuTIkYPPPvuM69ev06JFC3788Ucq\nVKhAUFAQO3fuZMOGDaiqSo0aNVi5cmW87+W/x/hvSX2Pg4OD5bd2kYDUhdAidSG0SF08OS4XHD+u\n59AhPZcu6bl3T0FVIVMmlQIFXJQv76JcORcGw9MeaUIHDx4kf/78yT4+RR+hbNmynDt3jtDQUGw2\nGzdv3nymWh4KFiyIr68vWbJkoUiRIly/fp0DBw6wevVqRo8eTa5cuQDo1asX06dPJygoiKJFi1K0\naNG4a7Ru3ZrVq1fHPdbpdFy8eJHw8PAUfWMeqF27No0bNwagTJkyACxcuJBXXnmFihUrArEhuUiR\nItjt9rjPERAQQLZs2fDz88Pf3587d+5w48YNtm7dyoULFzCbzQQEBNCqVSvWrl1LhQoVAGjWrBl5\n8+YFoFSpUly4cEHzFxkhhBBC/PedO6fj22/NrFxpIlMmlUqVnBQq5Mbf3wXAvXs6Dh0y8O23Fm7c\nUGjd2kHv3jZKl3Y95ZGnXpLhd8yYMWzevJl79+5Rt25dRo0axXvvvccrr7wCwPDhw9N8QBty1UiT\n6zS9sSfF5zxo4TAYDOj1egwGA06nk5CQEN566y10utguEbfbHReEb9++zdChQ9m3bx/R0dE4HI64\nIAkwb948pk6dyrRp0yhatChffvll3MxvchQuXDjBcyEhIezZs4dFixbFPWc2m+NaHx6MXa/Xxz12\nOBxcu3YNIN74XC4X7dq1i3vs5+cX998mkwmbzZbssT6K/LYutEhdCC1SF0KL1EXauXVLYcwYDzZv\nNtKjh42NGyMICHAnec7VqwpLlpjp2NGbatWcfPxxNPnype4+oKcpyfA7atQoRo0aleD55s2bP7EB\npSa0PkmqqpI3b16mT59OpUqVErz+8ccfo9fr2b9/P97e3syePZtVq1bFvV6lShUWLVqE3W7n3Xff\nZfz48fzwww9AbGB90Dv8cJ/wwx4E7ofly5ePwYMHM3DgwBR9lrx582KxWPjzzz8T7dV+lNSeJ4QQ\nQoiMYfNmA/37e9Gpk50//riPr2/yzsuXT2Xw4Bj69Yth2jQL9ev7MnlyNG3bOp7sgNOY7PCWhAer\nGnTt2pXx48dz48YNVFXl/PnzcRt8REVF4e3tjaenJ5cuXWL+/Pnxzl+2bBmRkZFxodH3oQorXLgw\nBw4cAIjXKvEor7zyCvPmzePo0aOoqsrt27dZsWJFgnH/W86cOalRowajR48mKioKh8PB/v37OXHi\nxCO/Bg9f4+TJk8ke68MebloX4gGpC6FF6kJokbp4fHPnmnnnHS/mz49kzBhrsoPvwzw9YejQGJYv\nj2TUKA+mTjWn/UCfIAm/f1MUJd6s5oPHiqIQFBRE9erVad68OQEBAbz22mvcvXsXgCFDhnD48GEC\nAgLo1asXzZo1i7uOqqosX76csmXLUrRoUW7evBlvhYT333+fZcuW0bBhQ27evKk5q6r1XOXKlfnk\nk094++23CQgIoEGDBhw9elRz7P82e/Zs7ty5Q+XKlSlWrBhjx47F5XLFOzep9//www8ZMmQIpUuX\n5pNPPknyayqEEEKIjOP770189ZWZ9esjqFbt8Xt2K1RwsWFDBIsXm/nqq/9OAH7kag+p8V9c7UGk\nDfkeCyGEEBnPvn16XnvNm3XrIihcOOne3pS6elWhSRNfvvwyioYNnWl67eRI6WoPMvMrhBBCCPEM\ni46Gfv28mDo1Os2DL8T2As+eHcU773hx/37GvzdIwq9IN9KrJbRIXQgtUhdCi9RF6syYYaF8eRfN\nmj25G9Nq1XLSqJGDzz6zPLH3SCsSfoUQQgghnlFRUTB7tpkPP7Q+8fcaOtTKwoUm7t7N2LO/En5F\nupH1GYUWqQuhRepCaJG6SLmVK01Urux8Iu0O/5Yrl0rTpg6WLjU98fd6HBJ+hRBCCCGeEaLine truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3f866d0>"
"<matplotlib.figure.Figure at 0x35fa750>"
]
},
{
@@ -838,7 +838,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3cdf7d0>"
"<matplotlib.figure.Figure at 0x334e110>"
]
}
],
@@ -903,7 +903,7 @@
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3b6d390>"
"<matplotlib.figure.Figure at 0x3350250>"
]
}
],
@@ -1175,9 +1175,9 @@
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAr8AAAFyCAYAAAD8h7IZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4k1XC9/FfmjRdaZHSyiIVEGSzSBVQEVznYZVFRKU4\nojPijICOC77KgBvvDD6jr/q4jeMCiooC4oDKgDxURBHQcQNFEMRBLHsLFLrQJmma9w+k0qZ0TZqc\n3N/PdXHNdSd30lN+3sPp6S/ntm3dutUnAAAAwAKiQj0AAAAAoKkw+QUAAIBlMPkFAACAZTD5BQAA\ngGUw+QUAAIBlMPkFAACAZdQ4+c3Pz9dVV12lkSNHasSIEVq2bJkkadmyZRo0aJAGDRqkVatWNclA\nAQAAgMay1bTPb1lZmTwej+Li4pSfn6+hQ4dq9erVGjx4sBYuXCiXy6Xx48crOzu7KccMAAAANEiN\nK78Oh0NxcXGSpMLCQjmdTn3zzTfq3LmzWrRoodatW6tVq1basmVLkwwWAAAAaAxHbScUFxdr7Nix\nysnJ0WOPPaYDBw4oNTVV8+fPV3JyslJTU5Wbm6uuXbs2xXgBAACABqv1A28JCQlasmSJFi1apEcf\nfVQul0uSNHbsWA0ZMkSSZLPZgjtKAAAAIABqXfk97owzzlCbNm3Utm1bvf/++xWP5+XlKTU11e/8\n9evXq2XLloEZJQAAAFCNwsJCde/evc7n1zj53b9/v5xOp0455RTl5eXpp59+UocOHbRt2zYdOnRI\nLpdL+/fvr7by0LJlS51zzjn1/w4QckuWLNHw4cNDPQw0EPmZjfzMRXZmIz9zff311/U6v8bJ7969\ne3X//fdXHE+dOlUpKSmaMmWKsrKyJEnTpk1rwDARznJyckI9BDQC+ZmN/MxFdmYjP+uocfLbq1cv\nLVmyxO/xoUOHaujQoUEbFAAAABAM3OENfn7zm9+EeghoBPIzG/mZi+zMRn7WweQXfrp06RLqIaAR\nyM9s5GcusjMb+VlHnXd7CBSfz6fc3Fx5vd6m/tIRyW63Ky0tLaDbza1Zs0b9+/cP2PuhaZGf2cjP\nXGRnNvKzjiaf/Obm5qpZs2aKj49v6i8dkY4eParc3FydeuqpoR4KAABA2LNt3brVF4w33rlzZ7Vb\nne3Zs0dt2rQJxpe0LP5OAQCAVX399ddq165dnc+n8wsAAADLYPILP2vWrAn1ENAI5Gc28jMX2ZmN\n/ALE6z32p4rcIre+zy0OwYD8MfmtYtasWercubPS09O1evXqisenTJmixx57rNK599xzj9LT09Wy\nZUt9/PHHTT1UAACA8OB2yzl3rpLOP1+ODz+seDi3yK1n1u7UxMVbwmbyS+f3BB6PR+3bt1d2dna9\n7hHdq1cvPf3007rooov8nhs+fLiuueYaXX/99YEcaiXh/HcKAAAiW/TixYp78EGVn3GGSu++W2X9\n+im32KMF3+zXR9vzNaRLisZkpKl5XHRQvn59O79NvttDONu/f79KS0sDutdfILcgAwAACDe+li1V\n/Mor8p57rnKL3FqwblfFpHf2mG5Bm/Q2FLWHX1xwwQW64IILJEkdOnSoqD2sWLFC6enpOvXUUzVz\n5sw6v98TTzyh9PR0ffrpp7r33nuVnp6uyy+/vOL5/Px8/fGPf1TXrl2VmZmp1157rdLrJ0+erD//\n+c8aP3680tPTdfbZZ6uoqCgw32wt6D2ZjfzMRn7mIjuzkV/DlQ0YoL1dMirqDXHRUZo9ppsm9G0b\ndhNfiZXfCp9++ql27typXr16aceOHYqK+vXngpycHE2ePLleq7h33XWX7rrrLo0YMULXXHONfvvb\n31Z6/pZbblFaWpq++eYb7d27V8OGDVPPnj3Vq1evinPeeust/eMf/9Crr76qTZs2yeEgLgAA0PRs\neXmKeflllf7pT1JcXMXjuUXuSvWGcFzprYrZ1Al8vprrz7U9X9fX7du3TytXrtR//vMfxcTEqH37\n9ho+fLiWLl1aafI7YMAADRw4UJJ01llnNehrNwR3uDEb+ZmN/MxFdmYjv+rZdu9W7LPPyrlggdyj\nR8tWWipfXJyRk97jwq72EPu3v+mUFi38/sT+7W91Pv9k54ZK1RXj3bt3Szr2QbkOHTqoQ4cOevPN\nN5WXl1fpvDPOOKPJxggAAHBcVE6O4u+4Q0kDBkh2uwrWrlXJY49pf3SCMfWGkwm7ld/SqVNVOnVq\n0M5vjJPVHpxOp7zV7GknqVJ94ri2bdsqNjZW27dvr7FKUd1rmwL3Nzcb+ZmN/MxFdmYjv8qifv5Z\n5ampKvjiC/lSUo6t9K7daeRKb1Vht/Ibzk5We+jUqZPWrVtX7XNpaWnavHlzpcdatWqlfv366aGH\nHlJxcbE8Ho/+/e9/a9OmTQEfMwAAQH2VDRig0unTtT+mmfErvVUx+a2i6krs6NGjlZ6errffflvP\nPPOM0tPTdeutt1Y6Z/r06VqyZInatWunBx54oNJzkydP1kcffaQePXpo5MiRFY+/8MILOnDggPr0\n6aMzzzxTf/nLX/xWj0O1TRo/+ZqN/MxGfuYiO7NZMj+vV9Hvvy9bldqlVPnmFJEy6T2Om1xEAP5O\nAQBAXdkOH5Zz7lzFzJ4tX0qKjj71lLw9ekjy370hmDenCJT63uSClV/4Ya9Ds5Gf2cjPXGRnNivk\nF5WTo/gpU5SUmSn7xo0qfuklFX7wgbw9ekT0Sm9VYfeBNwAAAASerbBQ5WlpKvjsM/lOPVWSmfv0\nNha1hwjA3ykAAKgPE+sNJ1Pf2gMrvwAAABEiavNmxb70kkonTVJ5585+z1txpbcqOr/wY4XeUyQj\nP7ORn7nIzmxG5+f1KnrpUiWOHKlmY8aovHVr+Vq0qHSKlTq9tWHlFwAAwFCOdesUP3GifKeeqtI/\n/lGe4cMlp7PieVZ6/dH5jQD8nQIAYE22ffsUtWePvFXmXJHU6a0NnV8AAIBIU1Ym2e1SlRtg+Vq1\nkrdVq4pjVnprR+e3Gv369Tvp7Yolafjw4Xr99dcb9TX27t2r9PR0tWnTRkOHDm3UewWa0b0nkJ/h\nyM9cZGe2cM3PduiQYp56SknnnCP7xo0nPY9Ob92x8luNmia+0rHbDjf21sOtW7dWTk6O5s2b1+iJ\nNAAAiCz2TZsU8+KLin7vPXmGDlXxa6/J27On33ms9NYfk98Q8/mCUrluFEve3zyCkJ/ZyM9cZGe2\ncMov+p//VPwDD8j1+9+r4PPP5UtN9TuHSW/DUXs4wUMPPaT09HS1bNlSH3/8ccXj+fn5ysrK0umn\nn67x48fL7XZXmrQuWbJE/fr1U8eOHXXttddq//79Fc/ddNNN6tq1q9q1a6dBgwZp8+bNTfo9AQAA\ns3iGDdORDRtUOmWK38SXekPjMfk9wUMPPaScnByddtpplWoNf/nLXxQXF6cff/xR11xzjb744ouK\n57/66ivdfvvt+vvf/64ff/xRPXv21J133lnx2rPPPltr165VTk6O+vXrp0mTJjX591Vf4dp7Qt2Q\nn9nIz1xkZ7awyi82VoquPJll0hs41B7qIDs7Wy+++KKio6N1xRVXqH379hXPzZ07V1lZWcrMzJQk\nTZ48WZ06dZLH41F0dLT+9Kc/VZw7duxYPfvss009fAAAYCjqDYEXdpPfgbPWB+R9VkzIDMj7SNLB\ngwfVsmXLiuPUE34FsXv3bq1bt05vvvlmxWMxMTHav3+/WrdurZkzZ+rdd9/VoUOHVF5eLp/PJ5/P\n1+gPzAVTOPWeUH/kZzbyMxfZmS1U+dk3bFB5y5bynXZapceZ9AZP2E1+AzlpDZSWLVsqLy9PnX+5\nR3ZeXl7Fc6eddpruvvtu3XHHHX6vW7BggZYuXar33ntPbdu21aZNm3TRRRdVmvw6nU55vd6m+UYA\nAEDYcKxbp4Qbb1TxP/6hsl8mv0x6g4/O70mc+IG2QYMG6aWXXpLb7daSJUu0Y8eOiueysrL0yiuv\n6Ntvv5XP51NeXp4WL14sSSouLlZcXJySk5NVWFioJ554wu/rdOrUST/88IMOHjwY9O+prsKq94R6\nIz+zkZ+5yM5sTZ2fY+VKJdxwg4pffFFll19Op7cJMfn9hdfrVbt27ZSenq7du3dr3LhxSk9P1xtv\nvKH77rtPLpdLnTt31ttvv62+fftWvK5Pnz7661//qltvvVXt27fX5Zdfrm+//VaSdO211+q0005T\n9+7ddckll6hPnz5+dYdevXpp7NixOvfcc5Wenq7Dhw836fcNAACaVvSSJUqYOFFFc+dqT+9+THqb\nmG3r1q1B2Wh2586dOqfKfaYlac+ePWrTpk0wvqRl8XcKAIAZ7Js2KXHMGG1/dZ7e9KRU1BvGZKQx\n4W2gr7/+Wu3atavz+WHX+QUAAIhUe9M7acEz7+ijrS4N6RJFpzcEqD3AD701s5Gf2cjPXGRntmDn\nV9HpfWer4pISqTeEECu/AAAAQcLuDeGHzm8E4O8UAIDwUjHp/fGQhnRrSac3iOj8AgAAhMiJK73D\nd23QvB3/lvOGv4d6WDhBk3d+j9/hDIERjL9PemtmIz+zkZ+5yM5sjc2v0j69dmneupd062f/lPOx\nvwVohAiUJl/5TU5O1qFDh5SSktLUXzoiHTp0SMnJyaEeBgAAllSp09shSa+2PaJTn/6bVF6uovnz\npbi4UA8RVTR551eSDh48KJfLFYwvazkxMTH8IAEAQLB4PLLt36+ovXuP/dm3T5K0c9yNlT7INiYj\nTS12/6z4O++Ut1cvldx/v+R0hnjw1mBE55fJGgAACCmfT7b8fEXt3SvbkSMq69fP75SonTuVdO65\n8qWmqrx1a5W3aqW97c7Q3I79tHLxFr/dG8o7dVLRkiVN/Z2gnvjAG/ysWbNG/fv3D/Uw0ELine truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3b57cd0>"
"<matplotlib.figure.Figure at 0x31c6550>"
]
}
],
@@ -1285,12 +1285,13 @@
" self.y = -0.5*9.8*t**2 + self.v0_y*t + self.y0\n",
" \n",
" self.x += randn() * self.noise_scale\n",
" self.y += randn() * self.noise_scale"
" self.y += randn() * self.noise_scale\n",
" return (self.x, self.y)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 43
"prompt_number": 27
},
{
"cell_type": "markdown",
@@ -1324,11 +1325,11 @@
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAFtCAYAAAAakpy2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4lNXd//H3PUv2BQIJCUtAIBCBKCC2KqmCCwGEggsK\nVsFaWivupepTbB/aytPHDautpWpbH1yqCFVR/EGFAi6IK6iAyqIgJAgkrFkns92/P0YSUGRJJjmz\nfF7X1evKmWaSw8c7k2/OfO9zrA0bNtiIiIiIiAgADtMTEBERERGJJCqQRUREREQOoQJZREREROQQ\nKpBFRERERA6hAllERERE5BAqkEVEREREDuFqzW+2fft2gsFga35LEREREYlDwWCQrl27Num5rVog\nB4NBBg4c2JrfUg6xYMECRo8ebXoacUv5m6PszVL+Zil/c5S9WatXr27yc9ViEUe2bdtmegpxTfmb\no+zNUv5mKX9zlH30UoEsIiIiInIIFchx5Pzzzzc9hbim/M1R9mYpf7OUvznKPnpZGzZssFvrm5WW\nlqoHWURERERa3OrVq+nSpUuTnqsV5DiyYsUK01OIa8rfHGVvlvI3S/mbo+yjlwpkEREREZFDqMVC\nRERERGKOWixERERERMJEBXIcUS+UWcrfHGX/bT4fbN5ssXVr46+BXbss3n7bydq1DgKB0GOlpRYr\nVzrZsKHx8/bssfj8cwd79x7f91L+Zil/c5R99GrVk/RERKTlbdnioLYWOncOkpkZKoSffDKRykqL\nyZPrKSgIMn++mylTUklIgH/+s5p+/QLcdlsyr7ySiMtlM2dONT17BrjyyjTWrXORnm4zf34VWVk2\nU6ak8PbbboYO9fHggzUkJcErr7j58EMnl17qY/BgP05naB4eDyQkZJmORETkhKgHWUQkSvn9sGaN\nk507LXr0CNK7d5D333dy6aXpVFVZXHuth6lT67j55lQWLUoAoEuXAM89V80552Tg81kA9OgR4OGH\naxgxIqPhaw8b5uWnP61n3Lj0hsd+85s6unUL8JOfpDU89vTTVVRWWkyZEnrM5bJZurSSmhqLyy5L\np7ra4rbb6rjhBg9+P3z8sYtAAE45JUB2dqv9+hGROKQeZBGRGGfb8OGHTl54wc2qVU4CAXj/fScl\nJelceWU6Y8aks22bxZ//nERVVajwffTRJHbscPDZZ86Gr1NW5sC2ITW1sTjNzAySmRkkPb3xsQED\n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 truncated
"text": [
"<matplotlib.figure.Figure at 0x4243690>"
"<matplotlib.figure.Figure at 0x3bb37d0>"
]
}
],
"prompt_number": 46
"prompt_number": 28
},
{
"cell_type": "markdown",
@@ -1378,13 +1379,13 @@
"cell_type": "code",
"collapsed": false,
"input": [
"def ball_filter(dt):\n",
"def ball_filter(dt,R=1., Q = 0.1):\n",
" f1 = KalmanFilter(dim=5)\n",
" g = 9.8\n",
" g = -9.8\n",
"\n",
" f1.F = np.mat ([[1., dt, 0, 0, 0],\n",
" [0, 1., 0, 0, 0],\n",
" [0, 0, 1., dt, -dt*dt*g],\n",
" [0, 0, 1., dt, dt*dt*g],\n",
" [0, 0, 0, 1., dt],\n",
" [0, 0, 0, 0, 1.]])\n",
"\n",
@@ -1395,10 +1396,11 @@
" [0,0,0,0,0]])\n",
"\n",
"\n",
" f1.R = np.eye(5) * 1.\n",
" f1.R = np.mat(np.eye(5)) * R \n",
" \n",
" f1.Q = np.zeros((5,5))\n",
" f1.Q[4,4] = 0.1\n",
" f1.x = np.mat([0, 21.2 , 0, 20.7, -9.8]).T\n",
" f1.Q[4,4] = Q\n",
" f1.x = np.mat([0, 0 , 0, 0, 0]).T\n",
" f1.P = np.eye(5) * 5.\n",
" f1.B = 0.\n",
" f1.u = 0\n",
@@ -1408,277 +1410,304 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 170
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def plot_ball_filter (traj):\n",
" xs, ys = [],[]\n",
" pxs, pys = [],[]\n",
" \n",
" for z in zs:\n",
" m = np.mat([z[0], 0, z[1], 0, 0]).T\n",
"\n",
" f1.predict ()\n",
" f1.update (m)\n",
"\n",
" xs.append (f1.x[0,0])\n",
" ys.append (f1.x[2,0])\n",
" pxs.append (z[0])\n",
" pys.append(z[1])\n",
" \n",
" if z[1] < 0:\n",
" break;\n",
"\n",
" p1, = plt.plot (xs, ys, 'r--')\n",
" p2, = plt.plot (pxs, pys)\n",
" plt.legend([p1,p2], ['filter', 'measurement'], 2)\n",
" plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 41
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dt = 0.1\n",
"f1 = ball_filter(dt)\n",
"# initialize storage and other variables for the run\n",
"count = 30\n",
"xs, ys = [],[]\n",
"pxs, pys = [],[]\n",
"f1 = ball_filter(dt,R=0.1, Q=0.1)\n",
"\n",
"traj = BallTrajectory2D (30., angle_degrees=45., noise_scale=0.3)\n",
"traj.update(0)\n",
"x,y= (traj.x,traj.y)\n",
"traj.update(dt)\n",
"print (f1.x)\n",
"print (traj.x - x, traj.y - y)\n",
"log = True\n",
"#print (f1.F*f1.x)\n",
"for t in np.arange(dt,5,dt):\n",
" traj.update(t)\n",
" z = np.mat([traj.x, 0, traj.y, 0,0]).T\n",
" if log: print (traj.x, traj.y)\n",
"traj = BallTrajectory2D (20., angle_degrees=45., noise_scale=0.0)\n",
"zs = [traj.update(t) for t in np.arange(dt,100,dt)]\n",
"\n",
" f1.predict ()\n",
" if log: print (f1.x.T)\n",
" \n",
" #f1.x[4]=-9.8\n",
" \n",
" f1.update (z)\n",
" if log: print (f1.x.T)\n",
"\n",
"\n",
" xs.append (f1.x[0,0])\n",
" ys.append (f1.x[2,0])\n",
" pxs.append (traj.x)\n",
" pys.append(traj.y)\n",
"\n",
"p1, = plt.plot (xs, ys, 'r--')\n",
"p2, = plt.plot (pxs, pys)\n",
"plt.legend([p1,p2], ['filter', 'measurement'], 2)\n",
"plt.show()"
"plot_ball_filter (zs)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"[[ 0. ]\n",
" [ 21.2]\n",
" [ 0. ]\n",
" [ 20.7]\n",
" [ -9.8]]\n",
"2.26334154798 2.2701914807\n",
"2.7486356737 1.99227097822\n",
"[[ 2.12 21.2 3.0304 19.72 -9.8 ]]\n",
"[[ 2.64472895 21.25195336 2.16251132 19.6432216 -9.71658223]]\n",
"4.00471898834 3.77548778907\n",
"[[ 4.76992429 21.25195336 5.07905854 18.67156338 -9.71658223]]\n",
"[[ 4.40728351 21.01906479 4.44234009 18.35760646 -9.36803761]]\n",
"6.67939142944 5.71113377806\n",
"[[ 6.50918999 21.01906479 7.19616842 17.4208027 -9.36803761]]\n",
"[[ 6.57184657 21.10323034 6.60307241 16.91399233 -8.79487404]]\n",
"8.7006186025 7.65399749306\n",
"[[ 8.6821696 21.10323034 9.1563693 16.03450493 -8.79487404]]\n",
"[[ 8.68840872 21.11463517 8.5903118 15.46920598 -8.16329089]]\n",
"10.7741338917 9.0855524088\n",
"[[ 10.79987223 21.11463517 10.93723491 14.6528769 -8.16329089]]\n",
"[[ 10.79129279 21.09747628 10.25646109 13.95990014 -7.44098872]]\n",
"12.5014218437 10.9726682202\n",
"[[ 12.90104042 21.09747628 12.381668 13.21580126 -7.44098872]]\n",
"[[ 12.76815754 20.83559032 11.87913651 12.70112583 -6.98521569]]\n",
"14.7386837611 12.3742790314\n",
"[[ 14.85171657 20.83559032 13.83380023 12.00260426 -6.98521569]]\n",
"[[ 14.81461232 20.76678774 13.33419469 11.46474553 -6.63369164]]\n",
"17.3062844439 13.911438362\n",
"[[ 16.8912911 20.76678774 15.13077103 10.80137637 -6.63369164]]\n",
"[[ 17.02389252 20.99392907 14.73222341 10.32239088 -6.4478821 ]]\n",
"18.5595673308 15.3828782525\n",
"[[ 19.12328543 20.99392907 16.39635494 9.67760267 -6.4478821 ]]\n",
"[[ 18.94991144 20.7210924 16.07943823 9.23089798 -6.38486712]]\n",
"22.0627856661 16.4447654453\n",
"[[ 21.02202068 20.7210924 17.628245 8.59241127 -6.38486712]]\n",
"[[ 21.32785126 21.16337047 17.2713798 7.98750161 -6.41802682]]\n",
"23.6303586575 17.1945292524\n",
"[[ 23.4441883 21.16337047 18.69909659 7.34569893 -6.41802682]]\n",
"[[ 23.49623645 21.23273566 18.2562726 6.44318999 -6.59337121]]\n",
"25.5961104482 18.1753812749\n",
"[[ 25.61951002 21.23273566 19.54674198 5.78385287 -6.59337121]]\n",
"[[ 25.6132985 21.22507762 19.14723094 4.82358101 -6.8688087 ]]\n",
"27.4769545972 19.4389444698\n",
"[[ 27.73580626 21.22507762 20.3027323 4.13670014 -6.8688087 ]]\n",
"[[ 27.67059765 21.15039996 20.05032567 3.44265248 -7.10848858]]\n",
"30.0724069863 20.348544138\n",
"[[ 29.78563765 21.15039996 21.0912228 2.73180362 -7.10848858]]\n",
"[[ 29.85422175 21.22365422 20.87132005 2.06340731 -7.36298674]]\n",
"31.9311062718 20.6213988152\n",
"[[ 31.97658718 21.22365422 21.79923348 1.32710864 -7.36298674]]\n",
"[[ 31.96625061 21.21331765 21.44381692 0.17156454 -7.82639727]]\n",
"33.5827618634 21.4409160537\n",
"[[ 34.08758237 21.21331765 22.2279603 -0.61107519 -7.82639727]]\n",
"[[ 33.97841219 21.11074164 21.98563339 -1.43037209 -8.16354081]]\n",
"35.7254947678 21.7649117661\n",
"[[ 36.08948635 21.11074164 22.64262318 -2.24672617 -8.16354081]]\n",
"[[ 36.01447654 21.04430138 22.36752568 -3.19257556 -8.55671087]]\n",
"38.3247380297 22.8875572193\n",
"[[ 38.11890668 21.04430138 22.88682579 -4.04824665 -8.55671087]]\n",
"[[ 38.15938964 21.07820678 22.88705811 -4.04744762 -8.5563786 ]]\n",
"40.2030744561 22.9801889478\n",
"[[ 40.26721032 21.07820678 23.32083845 -4.90308548 -8.5563786 ]]\n",
"[[ 40.25515225 21.06863132 23.21176316 -5.27407846 -8.70978083]]\n",
"42.565696679 22.3666619174\n",
"[[ 42.36201538 21.06863132 23.53791383 -6.14505654 -8.70978083]]\n",
"[[ 42.39867745 21.09630619 23.16178094 -7.40098292 -9.22422372]]\n",
"44.557567354 22.7491277508\n",
"[[ 44.50830807 21.09630619 23.32565657 -8.32340529 -9.22422372]]\n",
"[[ 44.51680959 21.10242071 23.14078376 -8.9268641 -9.46854847]]\n",
"46.3895725412 22.6008802881\n",
"[[ 46.62705166 21.10242071 23.1760151 -9.87371895 -9.46854847]]"
"<matplotlib.figure.Figure at 0x31d73d0>"
]
},
}
],
"prompt_number": 42
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here, we can see that the filter tracks the trajectory quite closely, but not perfectly. Let's look at the effect of a slower and faster initial velocity."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dt = 0.1\n",
"f1 = ball_filter(dt,R=.1, Q=.1)\n",
"traj = BallTrajectory2D (10., angle_degrees=60., noise_scale=0.0)\n",
"zs = [traj.update(t) for t in np.arange(dt,100,dt)]\n",
"plot_ball_filter (zs)\n",
"\n",
"f1 = ball_filter(dt, R=0.1, Q=0.1)\n",
"traj = BallTrajectory2D (60., angle_degrees=60., noise_scale=0.0)\n",
"zs = [traj.update(t) for t in np.arange(dt,100,dt)]\n",
"plot_ball_filter (zs)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"\n",
"[[ 46.58769608 21.07539374 22.99249509 -10.45821097 -9.70218804]]\n",
"48.5150711204 22.4991528062\n",
"[[ 48.69523545 21.07539374 22.89748842 -11.42842978 -9.70218804]]\n",
"[[ 48.66652608 21.05653143 22.77132118 -11.82039523 -9.85681741]]\n",
"50.4225553907 22.1793888942\n",
"[[ 50.77217922 21.05653143 22.55524976 -12.80607697 -9.85681741]]\n",
"[[ 50.71853752 21.02275275 22.43726881 -13.1639266 -9.99616068]]\n",
"53.0049706805 21.9264343895\n",
"[[ 52.82081279 21.02275275 22.10049989 -14.16354267 -9.99616068]]\n",
"[[ 52.84805125 21.03922 22.04639838 -14.32401306 -10.05787085]]\n",
"55.3693229502 21.9337473372\n",
"[[ 54.95197325 21.03922 21.59966842 -15.32980014 -10.05787085]]\n",
"[[ 55.01155298 21.07385474 21.70245549 -15.03103525 -9.94431145]]\n",
"57.2711570098 21.6375507947\n",
"[[ 57.11893845 21.07385474 21.17389448 -16.0254664 -9.94431145]]\n",
"[[ 57.13993562 21.08560851 21.31513333 -15.62222811 -9.79266891]]\n",
"59.3879641402 20.4827885565\n",
"[[ 59.24849647 21.08560851 20.71259207 -16.601495 -9.79266891]]\n",
"[[ 59.26710549 21.09565301 20.64324943 -16.7964186 -9.86527425]]\n",
"61.9960949307 20.0575782531\n",
"[[ 61.37667079 21.09565301 19.93040445 -17.78294603 -9.86527425]]\n",
"[[ 61.45669717 21.13735641 19.9684444 -17.67741615 -9.82629618]]\n",
"63.5711123555 19.0689011007\n",
"[[ 63.57043281 21.13735641 19.16367981 -18.66004576 -9.82629618]]\n",
"[[ 63.5705179 21.13739927 19.13555285 -18.73722166 -9.85459428]]\n",
"65.7040430825 18.6137402341\n",
"[[ 65.68425783 21.13739927 18.22758093 -19.72268109 -9.85459428]]\n",
"[[ 65.68666108 21.13857067 18.34138222 -19.41322872 -9.74183131]]\n",
"67.5859739926 17.4765687036\n",
"[[ 67.80051815 21.13857067 17.35475882 -20.38741185 -9.74183131]]\n",
"[[ 67.77521645 21.1266246 17.39043969 -20.29108832 -9.70691464]]\n",
"69.5389299383 16.3783689115\n",
"[[ 69.88787891 21.1266246 16.31260849 -21.26177978 -9.70691464]]\n",
"[[ 69.84789143 21.10831866 16.33177222 -21.21034186 -9.68834947]]\n",
"72.2665778502 15.6194793153\n",
"[[ 71.95872329 21.10831866 15.16019628 -22.17917681 -9.68834947]]\n",
"[[ 71.99302951 21.12356026 15.29346336 -21.8230672 -9.56027753]]\n",
"74.1856915683 14.2784001999\n",
"[[ 74.10538554 21.12356026 14.04806383 -22.77909495 -9.56027753]]\n",
"[[ 74.11409437 21.12731848 14.11466207 -22.6017439 -9.49667835]]\n",
"76.5446235912 12.5919197503\n",
"[[ 76.22682622 21.12731848 12.78516216 -23.55141174 -9.49667835]]\n",
"[[ 76.2603884 21.1413981 12.72944965 -23.69939013 -9.54962162]]\n",
"78.5970476152 11.276271207\n",
"[[ 78.37452821 21.1413981 11.29537355 -24.65435229 -9.54962162]]\n",
"[[ 78.39742873 21.1507444 11.28987891 -24.66891852 -9.55482349]]\n",
"80.3472304738 9.96696884346\n",
"[[ 80.51250317 21.1507444 9.75935976 -25.62440087 -9.55482349]]\n",
"[[ 80.49591755 21.14415423 9.81896924 -25.4666009 -9.498552 ]]\n",
"82.9481878783 7.97042938381\n",
"[[ 82.61033297 21.14415423 8.20316724 -26.4164561 -9.498552 ]]\n",
"[[ 82.64341386 21.15696026 8.13643603 -26.59292723 -9.56141 ]]\n",
"84.4092218333 6.54262320406\n",
"[[ 84.75910988 21.15696026 6.41416149 -27.54906823 -9.56141 ]]\n",
"[[ 84.72566395 21.14433794 6.45095511 -27.4518391 -9.52680824]]\n",
"86.9369836228 4.51215660702\n",
"[[ 86.84009774 21.14433794 4.63939841 -28.40451993 -9.52680824]]\n",
"[[ 86.84914427 21.14766843 4.60298341 -28.50069798 -9.56101245]]\n",
"89.3875714341 2.59503736107\n",
"[[ 88.96391111 21.14766843 2.68989284 -29.45679923 -9.56101245]]\n",
"[[ 89.00257238 21.16156129 2.66276255 -29.52842828 -9.58647271]]\n",
"91.0603671621 0.628987906576\n",
"[[ 91.11872851 21.16156129 0.64939404 -30.48707555 -9.58647271]]\n",
"[[ 91.11352088 21.15973365 0.64356008 -30.5024743 -9.59194392]]\n",
"93.7179498709 -1.8622424642\n",
"[[ 93.22949425 21.15973365 -1.46667685 -31.46166869 -9.59194392]]\n",
"[[ 93.27213323 21.17435647 -1.57973069 -31.76001977 -9.69791578]]\n",
"95.1363823279 -3.574796398\n",
"[[ 95.38956887 21.17435647 -3.80533692 -32.72981135 -9.69791578]]\n",
"[[ 95.36793716 21.16710355 -3.73946247 -32.55598981 -9.63619034]]\n",
"97.3626491592 -6.38476888704\n",
"[[ 97.48464751 21.16710355 -6.05071479 -33.51960884 -9.63619034]]\n",
"[[ 97.47444125 21.16375619 -6.14615215 -33.77141458 -9.72559263]]"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"99.4524189899 -8.50390011399\n",
"[[ 99.59081687 21.16375619 -8.57018553 -34.74397384 -9.72559263]]\n",
"[[ 99.57947486 21.16011583 -8.55125022 -34.6940174 -9.70785825]]\n",
"101.738199663 -11.1574484491\n",
"[[ 101.69548644 21.16011583 -11.06928186 -35.66480323 -9.70785825]]\n",
"[[ 101.69891688 21.16119384 -11.09446593 -35.73124252 -9.73144158]]\n",
"104.193513897 -13.8491569534\n",
"[[ 103.81503627 21.16119384 -13.7139089 -36.70438668 -9.73144158]]\n",
"[[ 103.84483694 21.17036668 -13.75253945 -36.80629632 -9.7676127 ]]\n"
"<matplotlib.figure.Figure at 0x31c99d0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x46b2a50>"
"<matplotlib.figure.Figure at 0x31c9c10>"
]
}
],
"prompt_number": 177
"prompt_number": 43
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"cell_type": "markdown",
"metadata": {},
"outputs": [],
"prompt_number": 46
"source": [
"Can you explain what is happening here?\n",
"\n",
"When the initial velocity is low, the change in velocity per time period is large compared to the velocity. In the physical world the ball's velocity is changing continuously, but we are imposing a step function on it because we are stepping by $0.1s$. This means our model of the ball does not exactly match the true behavior of the ball, and so the Kalman filter will not exactly predict the ball's behavior. A slow initial velcocity exaberates that \n",
"\n",
"**author's note** complete this"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So we seem to be doing a good job of tracking the ball. What happens if we inject noise?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%run?"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 166
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"math.cos(math.pi/2.)"
"dt = 0.1\n",
"f1 = ball_filter(dt, R=.16, Q=0.0)\n",
"\n",
"traj = BallTrajectory2D (40., angle_degrees=45., noise_scale=0.4)\n",
"zs = [traj.update(t) for t in np.arange(dt,100,dt)]\n",
"plot_ball_filter (zs)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 21,
"output_type": "display_data",
"png": "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 truncated
"text": [
"6.123233995736766e-17"
"<matplotlib.figure.Figure at 0x31d7d10>"
]
}
],
"prompt_number": 21
"prompt_number": 44
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can see that the filter follows an almost perfect parabola despite the noise in the signal. Because I know the noise characteristic of my filter, $\\sigma=0.4$, I was able to specify the variance as $\\mathbf{R} = \\sigma^2=0.16$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's make this more realistic. We don't have much call to track balls thrown on airless planets. On Earth, balls are subject to the effects of the atmosphere. \n",
"\n",
"blah blah\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import baseball\n",
"dt = 0.01\n",
"f1 = ball_filter(dt, R=1.16, Q=5.5)\n",
"\n",
"x,y = baseball.compute_trajectory(v_0_mph = 90., theta=65., dt=dt)\n",
"zs = zip (x,y)\n",
"plot_ball_filter (zs)\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3bee8d0>"
]
}
],
"prompt_number": 61
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def ball_filter6(dt,R=1., Q = 0.1):\n",
" f1 = KalmanFilter(dim=6)\n",
" g = -9.8\n",
" g=1\n",
"\n",
" f1.F = np.mat ([[1., dt, dt**2, 0, 0, 0],\n",
" [0, 1., dt, 0, 0, 0],\n",
" [0, 0, 1., 0, 0, 0],\n",
" [0, 0, 0., 1., dt, dt*dt*g],\n",
" [0, 0, 0, 0, 1., dt],\n",
" [0, 0, 0, 0, 0., 1.]])\n",
"\n",
" f1.H = np.mat([[1,0,0,0,0,0],\n",
" [0,0,0,0,0,0],\n",
" [0,0,0,0,0,0],\n",
" [0,0,0,1,0,0],\n",
" [0,0,0,0,0,0],\n",
" [0,0,0,0,0,0]])\n",
"\n",
"\n",
" f1.R = np.mat(np.eye(6)) * R \n",
" \n",
" f1.Q = np.zeros((6,6))\n",
" f1.Q[4,4] = Q\n",
" f1.x = np.mat([0, 0 , 0, 0, 0, 0]).T\n",
" f1.P = np.eye(6) * 5.\n",
" f1.B = 0.\n",
" f1.u = 0\n",
" \n",
" return f1"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 67
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def plot_ball_filter6 (zs):\n",
" xs, ys = [],[]\n",
" pxs, pys = [],[]\n",
" \n",
" for i,z in enumerate(zs):\n",
" m = np.mat([z[0], 0, 0, z[1], 0, 0]).T\n",
"\n",
" f1.predict ()\n",
" f1.update (m)\n",
"\n",
" xs.append (f1.x[0,0])\n",
" ys.append (f1.x[3,0])\n",
" pxs.append (z[0])\n",
" pys.append(z[1])\n",
" \n",
" if i > 0 and z[1] < 0:\n",
" break;\n",
"\n",
" p1, = plt.plot (xs, ys, 'r--')\n",
" p2, = plt.plot (pxs, pys)\n",
" plt.legend([p1,p2], ['filter', 'measurement'], 2)\n",
" plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 85
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dt = 0.1\n",
"noise = 0.3\n",
"f1 = ball_filter6(dt, R=.16, Q=0.1)\n",
"\n",
"x,y = baseball.compute_trajectory(v_0_mph = 90., theta=65., dt=dt)\n",
"zs = zip (x,y)\n",
"znoise = [(i+randn()*noise,j+randn()*noise) for (i,j) in zs]\n",
"plot_ball_filter6 (znoise)\n",
"print (zs[0:5])\n",
"print (znoise[0:5])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x3e35190>"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[(0.0, 0.0), (1.700193266982834, 3.646076227248443), (3.363396716383785, 7.114827534704153), (4.989282707845675, 10.407750130907692), (6.577522827472383, 13.526428179417952)]\n",
"[(0.0077428794280200615, -0.24993790836595048), (1.6319949358597867, 3.906624591863025), (2.927767750429539, 7.282837525906626), (4.889897158515106, 10.321582956313172), (6.55031695691016, 13.756792084374545)]\n"
]
}
],
"prompt_number": 88
}
],
"metadata": {}
+83
View File
@@ -0,0 +1,83 @@
# -*- coding: utf-8 -*-
"""
Spyder Editor
This temporary script file is located here:
/home/rlabbe/.spyder2/.temp.py
"""
"""
Computes the trajectory of a stitched baseball with air drag.
Takes altitude into account (higher altitude means further travel) and the
stitching on the baseball influencing drag.
This is based on the book Computational Physics by N. Giordano.
The takeaway point is that the drag coefficient on a stitched baseball is
LOWER the higher its velocity, which is somewhat counterintuitive.
"""
import math
import matplotlib.pyplot as plt
def a_drag (vel, altitude):
""" returns the drag coefficient of a baseball at a given velocity (m/s)
and altitude (m).
"""
v_d = 35
delta = 5
y_0 = 1.0e4
val = 0.0039 + 0.0058 / (1 + math.exp((vel - v_d)/delta))
val *= math.exp(-altitude / y_0)
return val
def compute_trajectory(v_0_mph, theta, v_wind_mph=0, alt_ft = 0.0, dt = 0.01):
### comput
theta = math.radians(theta)
v_0 = v_0_mph * 0.447 # mph to m/s
v_x = v_0 * math.cos(theta)
v_y = v_0 * math.sin(theta)
v_wind = v_wind_mph * 0.447 # mph to m/s
altitude = alt_ft / 3.28 # to m/s
ground_level = altitude
x = [0.0]
y = [altitude]
i = 0
while y[i] >= ground_level:
g = 9.8
v = math.sqrt((v_x - v_wind) **2+ v_y**2)
x.append(x[i] + v_x * dt)
y.append(y[i] + v_y * dt)
v_x = v_x - a_drag(v, altitude) * v * (v_x - v_wind) * dt
v_y = v_y - a_drag(v, altitude) * v * v_y * dt - g * dt
i += 1
return (x,y)
if __name__ == "__main__":
x,y = compute_trajectory(v_0_mph = 110., theta=35., v_wind_mph = 0., alt_ft=5000.)
plt.plot (x, y)
plt.show()