Skip to content

Instantly share code, notes, and snippets.

@ChadFulton
Created March 16, 2017 02:13
Show Gist options
  • Save ChadFulton/a59de98f7661c05a42d9a4393dae03f6 to your computer and use it in GitHub Desktop.
Save ChadFulton/a59de98f7661c05a42d9a4393dae03f6 to your computer and use it in GitHub Desktop.
motion_kalman.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from __future__ import division\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import statsmodels.api as sm\n",
"import matplotlib.pyplot as plt\n",
"\n",
"np.set_printoptions(suppress=True)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"class KinematicKalman(sm.tsa.statespace.MLEModel):\n",
" def __init__(self, endog):\n",
" super(KinematicKalman, self).__init__(endog, k_states=3)\n",
" \n",
" self['design'] = [1, 0, 0]\n",
" self['transition'] = np.eye(3)\n",
" self['selection'] = np.eye(3)\n",
" self['state_cov'] = np.eye(3) * 0.005\n",
" \n",
" def update(self, params, **kwargs):\n",
" params = super(KinematicKalman, self).update(params, **kwargs)\n",
" \n",
" Ts, m = params\n",
" \n",
" self['transition', 0, 1] = Ts\n",
" self['transition', 0, 2] = Ts**2 / (2 * m)\n",
" self['transition', 1, 2] = Ts / (2 * m)"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Construct an example dataset\n",
"endog = np.r_[[0]*10, np.arange(1, 21)]\n",
"\n",
"# Construct the state space model object\n",
"mod = KinematicKalman(endog)\n",
"mod.initialize_approximate_diffuse(1e10)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nJncEiUoAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10efd18d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Kalman filter, applied to a relatively small object\n",
"res = mod.smooth([1, 0.01])\n",
"\n",
"fig, axes = plt.subplots(3, figsize=(13, 5))\n",
"\n",
"axes[0].plot(res.smoothed_state[0])\n",
"axes[0].set(title='Position')\n",
"axes[1].plot(res.smoothed_state[1])\n",
"axes[1].set(title='Velocity')\n",
"axes[2].plot(res.smoothed_state[2])\n",
"axes[2].set(title='Force')\n",
"\n",
"fig.tight_layout();"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nnDu/yX0VEREREV8wYN6rcGLhTT92re4aobU5nC4G3IWKF1RL1RqlSp1Std5aVq1TqtRZaNR7ZdPF\nst+mTslvv7jfWvfZblQoYEQWw2kwQCRorQE25Jct1jfqvLJQMEAoYISC5i/97UBgZdnidqMuQDBg\nhIPN+9myuqU2QX/fQACC5m0vfgLm7RsMmF4zJPvKPUOomQWB3wWeAkaAt8zsO865y03NngWG/M+j\nwO/5SxERERHZY4IBa9yTul2qtTrl2vLw6oXUil9XqTkq1cX1OuWqX+avL5Y315VrdSrVeuMY5apr\ntKnU6hRKVco117Jfte6o1haXjlrdUanXcZuXkzfMbFlINSPgB9yAv90aYPHDrRFcFnDNvPqAeUE3\nEGjeplG/1Hap3vyl9/2sPNbidmCprfn9N7w6mspa6v3jG4vLpe/0/gz8/tHUdtnxrVHv70NjpXnR\nCPVL2yv3WZ77V92HZY222AP9bQz1t2/rd26F9ZxZHgGuOOeGAczsj4HngOYQ+hzwTeecA143s04z\nO+ycu73pPRYRERGRfSfkX4FMRHa6J3dXqzuq9TrVmmsEVS+gOmo1L6h6dXdpU/eCcXObWt1Rc17b\net3f9stqflm17qi7pvKat6w3tfM+UF92rOZ96877boej7rzgX3feuvOXi9t1v33dOVxTea3uVrR1\nbuk7mts27+/w2nnLnf6b3Lv++ece4MsHJIRmgI+atkdYeZVztTYZQCFURERERPYF70pikG28QLxv\nuaZwuhRU/WXzelM9fvli8F0MtC3r/n54zRvfBSvD71K7NfZZ1naxZLFv2y2d3MW/pdmAbf0nZGYv\nAC8ADA4ObudXi4iIiIjILmFN02yD2zylVXZeYB1tssDRpu0Bv2yjbXDO/b5z7mHn3MO9vb0b7auI\niIiIiIjscebuMSnbzELAB8CTeMHyLeCXnXOXmtr8DPAlvKfjPgr8Z+fcI/c47jhw42P1fuv1ABM7\n3QnZEzRWZL00VmQjNF5kvTRWZL00VmQjNjpejjnn7nm18Z7TcZ1zVTP7EvC/8V7R8g3n3CUz+3W/\n/mvAn+EF0Ct4r2j5tXUcd9dfCjWzv3HOPbzT/ZDdT2NF1ktjRTZC40XWS2NF1ktjRTZiq8bLuu4J\ndc79GV7QbC77WtO6A35jc7smIiIiIiIi+8167gkVERERERER2RQKoWv7/Z3ugOwZGiuyXhorshEa\nL7JeGiuyXhorshFbMl7u+WAiERERERERkc2iK6EiIiIiIiKybRRCV2Fmz5jZ+2Z2xcz+xU73R3Y3\nM7tuZhfM7B0z+5ud7o/sHmb2DTMbM7OLTWVpM/uemX3oL7t2so+yO9xlrHzFzLL+ueUdM/v8TvZR\ndgczO2pmf2lml83skpl92S/XuUVWWGO86PwiLcwsZmZvmtnf+mPl3/jlW3Ju0XTcZcwsiPde1KeA\nEbz3oj7vnLu8ox2TXcvMrgMPO+f0zi1pYWY/CeSBbzrnzvhl/x6YdM591f8lV5dz7jd3sp+y8+4y\nVr4C5J1z/2En+ya7i5kdBg47586bWTvwQ+ALwK+ic4sss8Z4+SV0fpEmZmZA0jmXN7Mw8CrwZeAX\n2IJzi66ErvQIcMU5N+ycKwN/DDy3w30SkT3IOfd9YHJZ8XPAH/rrf4j3w4AccHcZKyIrOOduO+fO\n++tzwHtABp1bZBVrjBeRFs6T9zfD/sexRecWhdCVMsBHTdsj6B+rrM0BL5vZD83shZ3ujOx6/c65\n2/76HaB/Jzsju96XzOxdf7qupldKCzO7D/g08AY6t8g9LBsvoPOLLGNmQTN7BxgDvuec27Jzi0Ko\nyMd3zjn3GeBZ4Df8aXUi9+S8+yF0T4Tcze8BJ4BPAbeB/7iz3ZHdxMzagBeBf+acm22u07lFlltl\nvOj8Iis452rOuU8BA8AjZnZmWf2mnVsUQlfKAkebtgf8MpFVOeey/nIM+BbelG6Ruxn179FZvFdn\nbIf7I7uUc27U/4GgDvwXdG4Rn3+/1ovAf3XOveQX69wiq1ptvOj8Imtxzk0Dfwk8wxadWxRCV3oL\nGDKz+80sAvwD4Ds73CfZpcws6d/oj5klgaeBi2vvJQfcd4Bf8dd/BfjvO9gX2cUW/9P3/Tw6twiN\nh4f8AfCec+4/NVXp3CIr3G286Pwiy5lZr5l1+utxvIe0/ogtOrfo6bir8B9T/dtAEPiGc+63drhL\nskuZ2XG8q58AIeC/abzIIjP7I+CngB5gFPjXwLeBPwEGgRvALznn9ECaA+4uY+Wn8KbKOeA68MWm\n+3LkgDKzc8ArwAWg7hf/K7z7/HRukRZrjJfn0flFmpjZQ3gPHgriXaj8E+fcvzWzbrbg3KIQKiIi\nIiIiIttG03FFRERERERk2yiEioiIiIiIyLZRCBUREREREZFtoxAqIiIiIiIi20YhVERERERERLaN\nQqiIiIiIiIhsG4VQERERERER2TYKoSIiIiIiIrJt/h8jNpsWmkkB/wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10e3bb5d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Kalman filter, applied to a relatively large object\n",
"res = mod.smooth([1, 2])\n",
"\n",
"fig, axes = plt.subplots(3, figsize=(13, 5))\n",
"\n",
"axes[0].plot(res.smoothed_state[0])\n",
"axes[0].set(title='Position')\n",
"axes[1].plot(res.smoothed_state[1])\n",
"axes[1].set(title='Velocity')\n",
"axes[2].plot(res.smoothed_state[2])\n",
"axes[2].set(title='Force')\n",
"\n",
"fig.tight_layout();"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment