{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits.mplot3d import Axes3D\n",
"from IPython.display import YouTubeVideo\n",
"from scipy.stats import norm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Multidimensional Kalman Filter"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## for a Constant Acceleration Model (CA)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Situation covered: You have a Position Sensor (e.g. a Vision System) and try to calculate velocity ($\\dot x$ and $\\dot y$) as well as position ($x$ and $y$) of a ball in 3D space."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAWgB4AMBIgACEQEDEQH/xAAbAAEAAgMBAQAAAAAAAAAAAAAAAQIDBAUGB//EAE0QAAIBAwEFAggICwcEAQUAAAABAgMEESEFEhMxUUFhBhQiMlJxkdEVI0JigZKToRYzU1RVgoOxwdLwJDRDRXKi4UTC4vGjY2Rlc7L/xAAZAQEBAQEBAQAAAAAAAAAAAAAAAQIDBAX/xAAjEQEBAQEAAgICAgMBAAAAAAAAARECAxIhMRNRQWEEMoEi/9oADAMBAAIRAxEAPwD5+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACd1jdYEAtusbrAqC26xusCoLbj7huPuAqC24+4bj7gKgtuPuG4+4CoL8N9w4b7gKAvw33DhvqgKAvwpdUOFLqgKAvwpdUTwpdUBjBk4MuqHBl1QGMGTgy6ocCXVAYwZODLqhwZdUBjBk4MuqHBl1QGMGTgy6ocGXVAYwZODLqhwZdUBjBlVvOTwsMySsa0Y5aWCaNYGTgy6ocKXVFGMF+FLqhwpdUBQF+FLqieFLqgMYMnCl1Q4UuqAxgycKXVDgy6oDGDJwpdUOFLqgMYMnCl1Q4UuqAxgvwpdUOFLqgKAvwpdUOFLqgKAvwpdUOE+qAoC/DfVDhvqgKAvw33DhvuAoC/DfcRuPuAsCCQgAAAAAkEACSSABIIJAkEEkAkgkASQSAJRBKAkABEgEAAAFACQAAAJOTwjp2lpQhHfrtSl2LOhzoSSZuQqpQ1XMzWo3+JDh5UYx7FurBgnKcliSWH2GCFfKbct3XCil2GepmTi4R3d7TX+BjGmF21GrLdWYSfLJq3VpO3euq6o3qq3ZppdmdCLm4jUoY6mpalkcogl8xg2wEEgAAAAAAEEgCASQAAAAAACAAAAAgEkAAABjABQJIAEgAAAABJBIAAASACCSSCQAAAklEEgSAAAJIAAAAAABICCKyfxjeC3EedXkice1amPIaZoyx5eXnJs0Ljdk29ZY5vsNKL0wZIaTTlr3EsG+qvGalLMY40fU17px3koMmrUW5pLToacm2+ZJFtWbIMtelwau5newlr9BjNMoBIAjAJAEAkAQCQBAJwAIAGAIBOBgCCCQBAJIAEEgCAABiJIJKAAAkAAAAAAJABG1s+wrbQuFSor1yfKKPV7O2fs+zr8DgRrVaflTq1Vlf8ABy78s4dvH4eu/n+HjMA9fd+E9hTnKlT2fC4gtNcRT+44Ve6sb6T3rWNnNvSdLWP0r+KHPfVm2J1xzLkrmkmSvQnQqblRYfNNcmuqMZ0crMACQABKAkAASQSAIJAAAAAASBanHekku3QwyjuyafYblnh1Wn0yilzSfEm8d5N+Vz4aieGHJstuvBG5JrSLf0FDLJh5U0urJVKpJaQk/UiYQlTkpOL0AyV3mrLPUxkt5eX2kBAAAAAAAAAAlAQCQBAJAEAnBAEMEjAFQSMAVBIAgE4AGAAFEgAASQAJAAAvSpurVjCPOTSRQ9R4NbHl5N7WWPyUWvvOfk7nHO108Xjvk6yN60o0tlWEadF71aprKTWDk315OnSuIQeHNYb7jrX9OrTrZqa73JrXJwbtb9WT7Jczy+Obdr2+a5PWOS+ZMluyaTT70XqUZQeq+kinRlOSUUe3Xz8rr2kIXmzY0q3yW1GfbE5tzbVLaq4VF6muTXVHd2dbKNBKU1CEecsZ1IrQp16bpVFmHY1zXejzTyZ1f09XXi9uZ+3nSTPdWlS2n5WsH5s1yZgPRLry2WfFCSCSokAASAABIAAAAAABejLcqxl3m41vVMPpg0DpWK3ocSab3dF3mbFlI2sYvMllmdQ0y9F1bNepXr1qvCtlFvta1wbNHZsdJ3dSVWXRvQqL0qtLKUPLb9BZ+/kbMrWnXhicNO0y06UYxWijFckjJKWmFyCa1PELV+S6EPoRSey7RLyaOW+Tcng3IrtMbruDefNAwx8H6Mob05Rgvmyf8Ssdi2ENZVKk1nm2loZvGI725GeJPVL0jDXq7ri1yXJeoC/wPs958mql1UzH+D9rUb4dzUj/AKoplVeYrtN5izNQrynPOcJ8kQc6vsK4i5eLtV1Hmlo19BzqlGrRlu1acoPpJYPURuVSut7Oj0OlVrRnTTajOLXasjTXgsA9dW2ds27h5VLgzXbT0+4pbeCdO6nu0a1R9cpYQ9s+2pNeUJwe6j4B0YvNS9m10jBGzS8DtlU15br1fXLH7jF8kbnjtfPMEqL6H0+jsDZVFLd2fF98vK/edGlZ2kVpaUYrs8hGfyr+PHyDcl0ZG6+h9oVtbY/EUvqoh2dpLnb0X+ojXvWcj4vusbr6H2WWzNny52lB/qIhbM2dF6Wlun/oRfcyPje5J8ov2Gxb7NvbmnOpRtatSEFmTjHket8M40aF9SVKMIR4fyVjtNCh4UXlvZ06FGpTpRpejBZl6yy7EsyvN1LavSk1UpTg1zUotYIhb1ZvEKc5Pujk9bsC7+FPCanUuHGpKW9KWVppHoe/hGlHzIxXqQvVnwSR8ktfBza13+Ksa2Os1ur7ztWngBfVNbm4o0V0XlM+imvXUakt1S3ai5amb1WuZLXwsAHZzCSCQAAAkA29m2NS/u40YaLnKXREtkm1eeb1cje8H9ku+r8arH4iD1+c+h66vcRtoYWM40XQrCNGwtIwglGEFhLqce4uHVm23zPm9dXy9b/D6vPM8POfyXl1Kq23J92vI4l1W4b6vsNu5rKMW3yRxqtR1JuTPV4uHj83bap3aek0bdOrTaysfQccvCcovRnW8SuM7sd3jScNyPm9SU8I5lC77JafuN+nUUjl1xjtz3rOsSi4TipwlziznXmzpUYurRzOj29Y+v3nQibNFuLymZnd5bvE7+3mAd682RCunUtUoVO2n2S9XT1HEnTlSm4Ti4yWjTWGjvz3Ovp5e/H1x9qgA2wkEEgCSABIAAAHR2bs2dxJSlDK7E/3vuCMFtRiocWrHKfmQ9I36WzLmvFO5nwaPZTjodGFOhbTzBcev6XZH1CUKtV5nL6EQY6NGjbx3KMUu8yxSXlPVloUNS8nTpayaCK7sp69g3U9M8jXq3kXonhGCV7FcmBuzmksIwVqDr0805YkYFcxeucl9+fnweV0QHJqupRnwbneis5jNc4smc6sZRVWSmpLyZrtOnUqUbqDp1lr3nMlQdOo7aT8l605dGVWCVdxqJ50ybtO6VGbc35LWV2nNrU5U3uyWCqk2ks6IK607iM4KS7S9PajpvhzeY9hyePJRcdMMxuTerCPQx2hGUs7+nQ9ds67oW9pTgqiUsZk+rPmttmVaKOuqlRcpM4+Tnfh28VkfQFeqT0qJ/SZHXUY7zwl1Pn1O7r0nmM2XrbQuq0cVKja7NTl6V29+f09tLbltB7rqJvokYp7dt99pzPCqc32sst7qX0/tn2n6e0lt23Twpv1lXt63is7zPHJPqRKUI+fNL6R+M/I9VV8JacdIQb9bNWfhJU+TFHmJ3lGHJuT7jBPaEvkQS9epueNn8jZ8Ib6te14VKj0S3UcbLM9WvOt57yYjtzMmOVu3Wzs25qWl5CrTqOm18pM9JR27fRXk3G/63k8kSngnXMpOrHr14S38JreuItei8Hcsdr2e04Rp1JOhcrzJZzr6z5pkyUbidGWYvToYvjjc8ljTAB2cgkAAASBanCVSahBZlJ4SR7nY+z4bOs/KxxZazl/A854PRpwv6cqsN6U9I/N7z0W07rcjwlldWeL/I6vV9I+h/i88883yX7a9/dcWo1GWYrkc2rUwuZSVRzqJxeIrm+ppXV1uy3YpPrk1x4/4Y8nl/ljurnfThHlnVmoWqT35uWEsvkuRU9MmPHbt0JIJKiTNRrypvuMBINx2rauppam/TZ5ujVdOXcduzuc46rVZPP5OM+nr8Xk34rsqluRjvSjvP5Pai1XZdHaUMV1u7q/GpeUvf6jHs+LublbzxnVneu9sW+ybVJKPcv4nk+Z18PV3Z6fWvBbS2FeWMXVcHUoZ0qRX712HM5Hrrvww3/M3n1jw0o/vya1xd222LOpilCNaMcpYxj1Hsnfc/2jw3x8df615kkA7uAAAJBBntaDuKyguXaBvbG2f4zU4tVfFR6nWdV3LdG18igvOmucjSqV3UcbC1xGnD8ZNG/bRSio09KcPvIi8KMKaSiXk4Uo71SSSMVSvuaQW9MxxtJ1pb9w89xEYq20XLyaEX68Go1XqvMsnbhRUViMIpEukn2FHEjbN8zNStoLXdz6zoyodEYalKrjEFgDVqUaEdW0n3GOLjH8VI2YWsl+Np7xZ21LnDyWBqVY8aPLE+xo06j4tNxlpWparPadSVBZbUsMw16EJLewnNdoVxLie/hteVjDNfkjt3FmqtJ4Wq7ThtOMmn2FURJKQwBanUlRlvx595m+Ea3zfYYOZG6iZF1sxv6z57vsLq+l2wiagGQ2tp31R8lFfQY5XVaXy39GhhAyG1aVWpLnOT+krkEFQyAABAAAAgAAAMIAKJAAA3tk7PltC6VNNKK1k30NE6FhXqWsVOjNb0nqlzRjvfX4+2/Hnt/6+novg6lsupxuLxJuOIrdxhnNuazqScE/KazkvK+lcxjKp52MGpc1o0ouWEpP7zzcc3dv29nk75zOfpjuayo0lCL15HNby8smc3OTk+bKnq5mPF11tSACshJBIEgACTatarjLHsNUtF4aZLNWXHp7LaKtkpJZclqc/b11O4rxbejWTXpS3ooy3NPj0Ytayhp60cOeJz1r09eS9cermJZUnlLHV8zNZVJU7mDT7cGJ02mbVnby31OSwlyO3WY8/O6peU9yu8LSWqMBt32u6zUHP0dfYADTIb2/4lScVjiY1a6mtbQ4leEezm/UtWZtpyjO+rNPyXN49WSDZsPirePpVWdJVsR3V5q09b7ThU6zdVzWiilGC6HXpzoqmlKrGEUsahGaV3w15EMvqY+PdVOWUZaVfZ6l+O32bka9o3hTiEaVOhXqayrTXqJrO7tVvRnxYdqfM6DSkvImsdxilSUtMAaNPabl3MvJVrhZp3e73FbjZyk96OhrK0nTfnMBWtNpwy6dzv8Acanjt1bzxcReDr0lXpxynv8AcXk+KsVaKaCtGjd0bjR1Nz1m1GjDRwmpZa7TDPZdGUt6MGkS7KEd2NOLi/WBsVaO6n5OIvmuh5q9pcO6mj0DoXNBZjVbj6MnlHJ2qk5xqLClykkIOeACqAAAQSAAAAEBgAAQAAAAgkAQAAMIAKJAAAtFtSTRU61Whs6hYU50qlSvcSSlKM4bsYrHc9dSVZGKnKaWE9DVuZSc/KeSadWWXuvd+kpUhNLelCWG8qTXMkmLet+GMAGmUgAgEgkASQSAJIJSbeEBnozkovHYbtrUcylC33aeJLynqzao0lDRI49dR355rJuRerislJGZycNVHKMcpcR6Q3TDpjQvF5KfZk0zoXqxR+k5524+nn7+wAG2GxZS3K/rhKPti0Yas99xlnysYZMFo32mOo8yylgCVLCS+dk6VnWi0uKsxRzEbljKEKmXTdWfyYt4XrYR3KdOFxDdpUIxT7WtTFWt9nWelSMqtT0YGtcbbqR+JtknLGJTS5+ruL2l1fy1jb04R7ZTRAhtClB/FbPrJdzZs09u2kXu1KVSm/nIstp0359tPHpwjoRUWzb9bs5PPZnRoDZp7Usqvm1Vr2PQzb1vV82cX9Jxa3g7lOVtXTXSRz6uzb+2edyWF2weQPTO3ae9CRKdZc4pnlqdXaCeKcq33k1L/aFPyak5x9aBj1Sn1wjHJrf3otPCPI1Lu4qedUl7TYsdo1bap5TcovnkYY611cVpNqnBzfecy64lSk5VFiUew9Ja3VGtTU4qJqbW4FShPfio1N3yJdQPMAAqgAAAAAQwSBDAAEAAAAAABAAAAYQAUSCCQBlpSit5SeMoxGW3hv1FnktSVZ81bgyVLi4e43hSxzFZVoxhGrGUY4zHK5o6VxcVbmlCnUacIebFRSS9hSpOdWmqdScpRSwk3ojHu7fh/tyiS1SO5Nx6FDbgkAFEkkEkAkgASXp1JUpqUXhooSBvQv0l5cW33GWO0KfoyOYSjHpG/wAnTrfCFJrzZ/cV+EKS+TM5xUfj5X8vTdr3cKtOUVB5fJvsNMIGpM+mLbfmhPaEsvCPUbK2BQo0oXV+25PWNJfxM99zmfK88Xq/DgVLaVKhByTUnq0/uNNrK9R2vCKq53VRxXkt81yOLk1zdmpZlxaOqM0KNSo1GjFyk1yRip4eWWUnltNplZdawsL+KxCjClnnOfM6lPZlV441wprtXU8zShUlBznc8KOcJvL/AHG1Qp3D/u+0IPucmv3kHoKkqNFfG1oRS7EalTaOzIvCw31wY6dNYztC3t2vykJa+w2Va7Pqw8mFOS9WoGo7/Otu1juZejtl53asTDdbIhH4y0k4NfJzlGnwalTSSw0B3FUt7mPNx9TKTs57uKap1I961OMlXt5LKe6dS2ulCKc5pBGpX2VF4e5uzk8JI07rZPAp5VVSl6J6WnGneRk95Z5I59awrUpuUk5dMDVcKyvJ2tTDbcO1Hc3qVWKhUxOjUWYS7Ys593Yb/lQjiXQpZqrTfi9eEuHJ6P0WBo1Y7lWUfRbRU2L6lKldTjL1muVQkgASQAAAAAgkgAwCAAAAEAAGQABiABRIAAGzZ+e/Uaxmt5btRd5m/TXFzqN8EA4va07r8b9BhL1pb9RvsKHefTxdfNoAAykAkAASAJAAFoJyaS5lTc2bFSr5fYsolqybcbdts6lhO5nLPoQ951KFvsNJKtZV31kquprpBnL2rv6cxv3mxtgV7RysbqrRr40hU1T/AK9Z5eva1beajOPPk1yfqOtKWEes2BZR2hsylUvrdVKVKe9Qzz/9D3sZvjn28/a+C15ZW8dpXfDjThibpNve7uwTv6lWrJzPSeEu04eKO2i1mpzXRHlHDDeNTNvt8nzz8JUFNPfSafUxfBtq5ZdP2NmSMmVu68qFvKfLsXrLNSuTfyp8Z06EIxhDTTtZqkvmZLepwa8KmE92SeGdnJ07a4jSs1K6tKvDj5KlGC3X68m1Vt539sq2z68kl8mDwl612GKpt68vKTo+LUanVyjle40at7OCxO4X/wCqh5MfpaA2rfZO16k9a86cerm/3Fbm22zaT8mrUqx6x1+457vr+4m3GpVbfZHJu2tvtiot7jVKMetWePuAxS2ltOj+NUv16ZaG3J/4lvSk+q0N6NzWoPFfaNtPqsNlKtbZlV5rSo73a4QYRajta1r0sXFPht8tcllYQuVxqNROK5KSwYPGNjUHxIxnWmuS5I07zbVa4aVOMaVNcoxA7Edn3NPDhFrHLDN6hO9hhVIKUe88hPaN3P8Ax5r1PBlhcbUjT4kZ3G56WrQHsaltTrRyluS6GjXt50XrHK6nm4bWvYT3nWk33nToeEc3Hdqwyxg0trZ48W+hoHW2pTc7OjcSSTcmtO/U5IUABQAyCAQBkoAgAAAAIJIAAEAAAB6NT8FnzpY+mqXX4J41X31TywJi69WvwSfOLX01Q4eCTXav1qvuPKgYPVcPwS9Kb/XqfyhR8E8/4q71Un/KeWJLg9XGHgu1/ebhftP/AALO28GKix49cR/aL+Q8kSZ9Y179ft6f4N8Fu3aFx9pH+Ustm+Cn6Qufrx/lPLE6Fxh6lbL8FJf5lcL9eP8AKZo7C8FpctrzXrrQ/lPI6dCUMV69eD/gw/8AOsftoe4n8HPBp8ttr7aB5AnC/r/2M/s169eCuwJ+Zt2H2tN/xLfgbsmS8nbcX+tB/wATx6S7v6+kndXd/X0k+TXsPwK2e+W2Y+yP8xH4DWr83bMH+pH+Y8jux/r/ANk7v0f16xl/Zr1v4CUHy2xD7NfzGWj4FU6EnOG1acmly3Es/wC48clpzX3e8sl6n9CGGu3Ug6c5QksSi2mY2aFvcSpeTzj0wbka0JrnjuehzvNjvO5V6VvK4nqvJXM6LvZxiqVG4qYgseS2l9BzpXDdLcTSj3dprSqOOsW/oJmn/W9NOct7OX3lqMdUu3oa9O9g1ipCUX2tJsrcXidKVOjGXlLDk017NC+tcrXqaPg7OetarCkvazUuvA2dzPeltWGFyjwtF955HhY7H9/uHD7n9/uNTnGden/AP/8AJ0/s37zBeeCFHZ9vK5udpw4UNWlTeX3LU886fc/Y/cKlXxeityTjNyzy7DWVG5dfBV1HdoXtSgktITh5JzHXp0GlbLekudWS5+pdhSFOte11GlS35y7IRPV7N8GYUKUal1GM5vseqRbcMea+E7+S3Y1ZpfNRSVS9nnLrPPrPfwslBYgoxXckhKhJYxL1GfZcfPfFLlrPBn7Cvi1f8lP2H0CVOcU3vPHX+kYYOc00nJ64Y9jHhY21ebxGlN+qLNujsW9q/wCC4/6tD2kaUtXn2k7muFJN+sew8rT2RtC38qFKhJ9+v7zHXvNrW7+MUoJdIrB7Hhv+mUqUsrD1XRrI9jHivhPiP+0WtCr1bjh+0mnW2ZOonUt6tPX5E8r7zu7R2DRrqUqcOFU6x5P6Dy1WnO2ryp1IpSial1HZ2vdUK9pThb53YS1z6jjE7zlq8LuQwBAJIKBBJAADAAgEkAAABAJIAEEkAACAMttaV7urw7elKpPpFcjtUvB6nbYltO43Jp60KS3peck03yRu1dpqVGdG3lStrdp4p08L5K7cGByobz+Mp832rqu4Jv6WVSlSi6dlbRoU3jPypS87tZg3JcN6Pl0+ajPCVvvLNSGMrtXV9xKlb8PHFp53eq9H1dwTapw25eavO9H5y7iOAml8XF6dsF0l3G1vW+9+Mp82+a9JPoWjK3ePjKfTmvndxE1rK2hvr4mnzX+Euse4tG1p4j8TT5L/AAl0fzTaUrbeWKtPmu1dYdxeMrbyfjaXLquku4GtbxOnvfiKX2S+b80t4pTx+IpcvyS6S+abmaG/+Mp696+Z80n4jd/GU+T7V0n80G1gVlT38eL0uf5FdY/NLOzpYy7ely/IrpL5puJ0eKvKpvyu70o/NLYounneh5vd6Mu4M7WqrCjv48Xped+SXpL5pKsaPDz4tS8zP4pei36J0FCk6iw4+ev/AO13dxEYU3RxmHmf9nq7yLta3wfb76XitLzvyfzl3FPg+34WVa0s7ufM+bnodNKk6nnR0nn/AHvu+aTCMOHuvd83HZ6MV/EG1oLZlrva2lLzseb87Bj+DLThZ8Vpebnk/RydmKhv67vnZ/3Sf8CI01wtzTO7jn82K695D2rlfBNk5f3Sn52Ob9LHUQ2NYeLOrO0h5vk+XLV7ufSO3Tpb028pRT3m88lvSfUipDehuLRRjuxTfzUuvVjSWuJLZFhv4VnTxnHny9JL0vWV+CLDCfilPl6T6N+l3I7u4nLmvPzz+fnr3Mo4ZprHNR5Z+b6/nIh7VxnsfZ6nhWlP6z6x+d3sfBFg5Y8Vp/WfzvndyO44Jz0fyuvzl39zKbqSUs6Yzz7pPr3oqe1cT4HsNf7NDl6T6J9e8lbHsN/Hi0cZx53e117jtOnjK9a5/wCldeo3I72ezOeffJ/uIe1cJ7IsXTz4vh4zpL5qYexbDexwHzx53zkjsukuE4413cf7Uv3ss6UXPT0v+9e5g9q4Mti2O5lUZrTOku5vp3HF25s62s72jniwoSTzyb0fYe0dFOGUvk9Pmvu70c/b1rTrWFWnKOZvecF25TXd6zUqzq609l7QtbexjDZ9ukl5zesn6zM9p15y1eOmnI85Ri9nXKVOcnTmsSyuTNt3koPDWV1RnHXXXd5cYfxr1KzuazWtR5ZzI3kHzbRk8YT1Uk2MNZ6txUm93fk+phr1qlNRUJy33ol1EJpatrTWT6GpVvIOWYyb3tEl2jBuRqznrvPEdE882bEH8qT17Wc2NzCLS5400JletzUIw07dRg35S33vPkuRenWqU4uTlux79TQ8a6xx9JgnVqXU9xZUBg6M9uwt1u1GpvuWpq3dtb7ap8ajF0ZQ+XJc+4wynZ7OjmouJUl7TUuNuzlFxoUo086ZzqWQaNWm6VSVN/JeCo35TeZPPeSaRUEgCpJJAEAkAQQWAFQSAKkFsEFEAkgCASQB7qNs/QpfU/5Mitm/8Oj9T/kRqGaNQy4aiNs/ydH6hljbP8jQf6ojUZmhUCbURoP82oP+vUZVbv8ANKHt/wDEtGoZo1CIxRoP8yt/b/4l1Q/+xoe3/wATYjURmjNA1qxto9thR9q9xdWsP0fQ+73G5GSfaWTImtNWtLt2fR9kfcHZ0Hz2dRf6sTdJKNDxG2/RlH6kCVY2i/yyj9SBvgK0PErT9GU/qQHiFp+jKf1Ie86ACtDxG0/RkPqQ94Wz7Ts2ZFeqMPedAsvJXew1I5/idqobkdnYXbpH3keJW35g/wDb7zf0GhcGh4nbfmL/ANvvHidstfEpe1e839A/UTBoeJ2+f7pU+t/yQ7K2/Nqv13/MdD6AMHP8Tt/yFbnnz31z1I8StsY4Nxjl58vedHQDBzXZW2c8K5+vL3keI235K5+vL3950gTBya9raUaM6s4XKjCLk3vy5e3uPC7SvJSuVKNVqdKo5KLy8prln2nuvCmdSn4PXcqXPdSfqys/cfMK1dquqi1ytV1LI3w6V1KF/RVahU8pedA1I1XupN6o01JKe/Se73FnU1z2lxtt8QtGoupo8Uni4KN24rxp2/Ci/LqayfcakJNTTTXLEe413Vc6jlJ8xxG5DB0I1lBYRaNXHLmznqprzMkagwb/ABc8zI7yNKHkrMjQUzJSm8+copdpBkp2sLtOdSU+JLtcXhFa2xakNY1abXe8EXG0pRjuUZSk/SNBxq1HmcsZ7ZFHXp7Oi7NQVSm6sXnKfPuObJOMmnzWhgUHv4i2+3QztRUUott9rYEAEASQAAIwSQBOCAABAAAAgoYIwSyABBJAV7dMyRkaK2vsj8+l9jIstsbIX/XP7GRlx9K6EZGWMjmLbOyPz9/YyLLbWx1/1/8A8M/cD0rqxmZY1DkfDex/0h/8M/cWW3dj/pBfZT9wPSu1GoZo1e84S29sj9Ix+yn7i62/sj9Iw+yqfykT0r0EaveZY1+884vCHZH6Rp/Zz/lMkfCHZH6SpfUn/KE9K9HGsn2mRVU+082vCDZH6To/Vn/KZI+EGycabToeyXuIenT0Skn2k5OBHb+y/wBJ23tfuLx8INl/pO2+s/cPk9OncySmcZeEOzP0la/XMkPCDZWW5bStdOS3x8rOenYWEssq5ZZyXt/ZstXtK0+0Q+Hdmv8AzKz+1Q2rZ1+nWyQ5YRy/hvZ3ZtKz+2iPhqwf+Y2f28feNrPr1+m7UvFT50a7/wBNNsxPalJc6Nyv2MjX+F7F8toWf28fePhS0fK+tX+3h7xtM6/TP8L23aqy9dGXuHwxZdtWUfXTkv4GB7RoPle2r/bw948dpvlc27/bR941c6/TajtOynyuqX0ywZFe2r5XFH66OZWqU6sccS3f7SPvONe7MnWeadWgn3VI+8aSV7CNaE/NnGXqZbePC0qG1LR/F1INLpOPvN6ltu9opKvFevKC3mur4U16dHweu+I8KcdxetnyiT0xk9V4TbXntCirdVIxivKcW/OPKyhJvVY9ZqNczIrkjeDWO0g02nLIyAACYADJZSwVAGVVCd9PSTeO4wgDYUnFfFU163qUlOcvO5lI1JRejM8K1Ko1xk13oC1nVdKb8lTTTTiypuUI2MJKbr5a7jDWlSnUbpS3l6sEGEFsIYQFSC+CMAVIL4RDSAqC2ERoBUFsIjAFQWwQ0BBBbBGCiCCcd4wFa4IBRIIJAZGQAJyhp1fsIAFvJ6v2Fvi/Tl9X/kxggy4o+nP6i95aKt861ai/Zr3mAAbO7bZ0r1Psv+Sdy17Lif2X/JqgDchTtX5101+yfvLcG0z/AH3C68JmiSBt8G2/PF9nIs6FrjS+g/2cvcaQA3XQtlyvqb/Un7iOBQ0/ttL6s9PuNMAbjoUcf32j9Wf8pHBpfndH2T/lNQkDb4FL89oeyf8AKT4tT0/ttv8A7/5TTGQNxWsG3/bLf2y9xPisW8eN2/1n7jSAG47VL/qbd/rlJUN1fjaT9UzWAGR6IqWaxTT7WVCAAAAAAECALEEJkgBkEAWi12rJmjG2lzlOD9WTXAG34pvtKjUhPPfhlZUpUZOElho18mWlXnDKzmLWqeoEgAgjUZJIKGX1Iy+pJADL6sbz6ggCcvqN59SABO8+o333ewggC2++iI3+5EEAW3u4je7iCAMa5kFoLMvoZXtKrKo9wcUk9DajR0RFWlinJ9xNGkZVDK5GI3Ywe6gMHDXQcNdDY4b6B092O9JpImjX4a6IxyxnCRkblVluwWF1ZXdzLcprefUorjGnNl4UXzkvoNqla7izLWRl4TJo0+EuhKpLobipN9g4LT1GjU4K9ElW8ehuRpwxqtfWXVJY0Jo0lbx6FZ0IqDaXYdDhYWqMVeGKM3jsY0ctIst3GqZVDJoWe635KaXeRhBMARy7DZoRtcZqxnPTlF4wy9hR4zqJxTSXUvcWVawrcSEd6EMN5WcesaLyjaWzjCpbqc8ZlmT0fTRmCsrbL4Uea5Zeht0XRvdZLy+bRlVjSXyEZ1XJnCG95GWsFHHHNaHZdpTz5i9hWdrGScd1YL7JjmVlhRS5YyYjp7QoaU4x5wgkcx6MS6WYEkZIKicgAARkkqBeMPIc+jwQbNCnv2lR9GawAAAAABOMmzZ04S4yqdlNuL78owKm3ywdzwdsHdW+0lLcSjbOS3lnt7OgquQ1qDMqabajyWgdF6aERgBmdJ5I4TAwgyumyHDuAxAybpDgyjGC+6RusKqC24yN1gVBbBGAKgnAwBjpvDfqZEFmcV1ZCeBGW7JSXNPJR340U4xwnlmK8pJWdR4xhGrHbNxFYUKXsfvMdxtOtcUnTnGmk+eE/eYyq1I6ySPQRt47kWpPl0PPJ4afQ3VtWuuUafsfvLYN+4nRtoZqPXsiubOfJTum61ZqlRT/AKx1NaVWU6vEqeW+8Va86rTm8pclySLINinTldPh0Y7lJc2/4nRoWcKMdHjPa+00Ke1bijBQp7kIrsWV/EPatdvWMPv95LKfDqcKLjzZHAXY2/oOX8KV18mHsfvJW1rjOcQ9j95Mq7HU4MY9uRwt7Gfac34XuPQpfVfvJW2biLyqdJfQ/eMpsdanbxb5GRW8F0ycf4cufydH6r95aO37qPKnR+q/eT1psduFFS00bMd9bqNnXeNVB9hyl4RXa5UqHsl7ylxt66uKM6U4UcTWG0nn949abHNJyuiKZGToyu5J8opeoZK5GQPQeClv4xeVIY0STeeh26kKNSFWFLM4ym3KbWj7kuh5PZe17jZU6k7eNNupHde+m9PoZtvwovW8ujbZ/wBMvec7zdali9/sirby8Ys84WrinqvUZ9l39K6xTq4hW7OkjVXhPeJ5VG2X6svecy6vJXNfjcOnSl/9NNLPXmXLfs+Hr3bNrexotMlfFXzUc+o4VLwkvqVKNNxo1N1YzOLz+8u/Ci9cXHhW+vzZe8z61dibmW9Wk+81q1txVmOkv3mtK+qyeXGHsY+EKvow9j95csTYxThKEnGSw0VMla6lW86EM9UmYd5m2VwU3mN5lF2mnjuKiU3J5eOWCMgdnZNLiWdTTRya+45LWJNdDcsdr1rGi6VOlRmm8+Wm/wBzNGU3KTbS1eTMnyLApvMbzNC4K7zG8+iAvHTXJ6nwLtltCvdxqqTiqLjFLKWX1PJ776I6Wzdv3uyqNanaOnDi4zJxy1joZs+Fn22LS3qSqypxjnhtqRsq38rGDl09s3NOpKajTcpLDbT1+8yfD9zlPg0NO5+8llPh0FZuWsVnXGgdlUzpH2GivCG6S0o261z5r94/CK7x+KoZ67r95Mp8Nx2clzRV2jXOODS+Hrrdxw6PsfvIe3LhrWlR9eH7y5T4bjtCrtFjTJq/Ddxhrg0PZL3lXtmu8/FUde5+8ZT4bUrXoV8Vl0NeO2K8c/F0n609PvHwxXxjhUfXh+8ZT4ZvFmmHQeORge167/wqPsfvIe1q7WNykvofvLlGV0O4q6DML2jV/J0/Y/eQ9oVW/Np+xjKjK6L6FXRfQqto1U/Mpvuw/eR4/U9Cn7H7x8jUABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//Z\n",
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"YouTubeVideo(\"tIIJME8-au8\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## State Vector - Constant Acceleration"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Constant Acceleration Model for Motion in 3D\n",
"\n",
"$$x= \\left[ \\matrix{ x \\\\ y \\\\ z \\\\ \\dot x \\\\ \\dot y \\\\ \\dot z \\\\ \\ddot x \\\\ \\ddot y \\\\ \\ddot z} \\right]$$\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Formal Definition:\n",
"\n",
"$$x_{k+1} = A \\cdot x_{k} + B \\cdot u_k$$\n",
"\n",
"Hence, we have no control input $u$.\n",
"\n",
"$$x_{k+1} = \\begin{bmatrix}1 & 0 & 0 & \\Delta t & 0 & 0 & \\frac{1}{2}\\Delta t^2 & 0 & 0 \\\\ 0 & 1 & 0 & 0 & \\Delta t & 0 & 0 & \\frac{1}{2}\\Delta t^2 & 0 \\\\ 0 & 0 & 1 & 0 & 0 & \\Delta t & 0 & 0 & \\frac{1}{2}\\Delta t^2 \\\\ 0 & 0 & 0 & 1 & 0 & 0 & \\Delta t & 0 & 0 \\\\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & \\Delta t & 0 \\\\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & \\Delta t \\\\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0\\\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0\\\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\end{bmatrix} \\cdot \\begin{bmatrix} x \\\\ y \\\\ z \\\\ \\dot x \\\\ \\dot y \\\\ \\dot z \\\\ \\ddot x \\\\ \\ddot y \\\\ \\ddot z\\end{bmatrix}_{k}$$\n",
"\n",
"$$y = H \\cdot x$$\n",
"\n",
"Position ($x$ & $y$ & $z$) is measured with vision system:\n",
"\n",
"$$y = \\begin{bmatrix}1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\end{bmatrix} \\cdot x$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Initial Uncertainty"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"