Robot localization example added.

Still needs work; code is messy, and Q is not computed. But I am
getting correct results.

Also need to expand explanations and scenarios.

Need to remove now redundant explanations in EKF chapter, since
they exist in the UKF chapter.
This commit is contained in:
Roger Labbe committed 2015-06-08 07:23:52 -07:00
1 parent f8057cd917
commit 88d200b9a8
3 files changed
+484 -400

No files matched your search

File diff suppressed because it is too large. Load diff
+77 -43
View File
@@ -16,7 +16,7 @@
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 2,
"metadata": {
"collapsed": false
},
@@ -250,7 +250,7 @@
"<IPython.core.display.HTML object>"
]
},
"execution_count": 1,
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
@@ -303,7 +303,7 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 3,
"metadata": {
"collapsed": false
},
@@ -312,7 +312,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x751ac88>"
"<matplotlib.figure.Figure at 0x6b5f2b0>"
]
},
"metadata": {},
@@ -352,7 +352,7 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 4,
"metadata": {
"collapsed": false
},
@@ -361,7 +361,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x751a710>"
"<matplotlib.figure.Figure at 0x6b4ccf8>"
]
},
"metadata": {},
@@ -427,7 +427,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 5,
"metadata": {
"collapsed": false
},
@@ -436,7 +436,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x445e0b8>"
"<matplotlib.figure.Figure at 0x6b4cb00>"
]
},
"metadata": {},
@@ -642,7 +642,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 6,
"metadata": {
"collapsed": false
},
@@ -667,7 +667,7 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": 7,
"metadata": {
"collapsed": false
},
@@ -690,7 +690,7 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": 8,
"metadata": {
"collapsed": false
},
@@ -765,16 +765,16 @@
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwYAAAEtCAYAAACyMncIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlclOe9///XMIAoICAyIKKAioK74gZxCypq4lKTNFZb\nTdLkaBpjtKa/nGNPmniSND058bSeNnt+zdKY1GbVpNZozOZGEsWoUcENXHDYHXZkmbm/f0ycSBQd\nEBD0/Xw8eBRmrvu6r2nv4v3m/lzXZTIMw0BERERERK5rHld7ACIiIiIicvUpGIiIiIiIiIKBiIiI\niIgoGIiIiIiICAoGIiIiIiKCgoGIiIiIiKBgICIiIiIitJJg8Ic//IHhw4cTEBCAxWJhxowZHDhw\noE6bO++8Ew8PjzpfiYmJddpUVVWxePFiQkJC8PPzY+bMmZw+fbpOG5vNxrx58wgMDCQwMJD58+dT\nXFzc7J9RRERERKQ1axXB4Msvv+T+++8nJSWFzz77DE9PTyZOnIjNZnO1MZlMTJo0iZycHNfXv/71\nrzr9LF26lPfff581a9awdetWSkpKmDZtGg6Hw9Vm7ty57Nmzh40bN/Lxxx+ze/du5s2b12KfVURE\nRESkNTK1xp2Py8vLCQgIYN26ddx8882A84lBYWEhH3300UWPKS4uxmKx8NprrzFnzhwAsrKyiIyM\nZMOGDSQnJ5OWlka/fv3Yvn07CQkJAGzfvp0xY8aQnp5O7969W+YDioiIiIi0Mq3iicGPlZSU4HA4\nCAoKcr1mMpnYtm0boaGh9OnThwULFpCfn+96PzU1lZqaGpKTk12vRUREEBcXR0pKCgApKSn4+fm5\nQgFAYmIivr6+rjYiIiIiItcjz6s9gItZsmQJQ4YMqXMDP2XKFG699Vaio6PJzMzk4YcfJikpidTU\nVLy9vcnJycFsNhMcHFynr9DQUHJycgDIyckhJCSkzvsmkwmLxeJqIyIiIiJyPWp1wWDZsmXs2LGD\nbdu2YTKZXK/Pnj3b9X2/fv2Ij48nMjKS9evXM2vWrHr7a0yllCYji4iIiEhbFhAQ0OBjWlUp0a9/\n/Wv+8Y9/8NlnnxEVFXXJtl26dCEiIoKjR48CEBYWht1up7CwsE673NxcwsLCXG3OLz8CZ3DIy8tz\ntRERERERuR61mmCwZMkSVyhwZxJwfn4+p0+fpkuXLgDEx8fj5eXFpk2bXG2ysrJIT093LWuakJBA\nWVlZnfkEKSkplJeXX7D0qYiIiIjI9aRVrEq0aNEiVq9ezdq1a4mLi3O97u/vj6+vL+Xl5Tz66KPc\ndttthIWFcfz4cZYvX87p06dJS0vD19cXgPvuu4+PPvqI1157jU6dOrFs2TKKi4tJTU11lSXddNNN\nZGVl8dJLL2EYBgsWLKBHjx6sW7fOdd7zS4ka8xhGpCXt2rULgGHDhl3lkYi4R9estCW6XqUtudJ7\n2FYxx+D555/HZDIxYcKEOq+vWLGCRx55BLPZzP79+3njjTcoKiqiS5cuJCUl8e6777pCAcCqVavw\n9PRk9uzZVFZWMnHiRFavXl1nrsJbb73F4sWLmTx5MgAzZ87kmWeeaZkPKiIiIiLSSrWKJwatjZ4Y\nSFuiv2ZJW6NrVtoSXa/SllzpPWyrmWMgIiIiIiJXj4KBiIiIiIgoGIiIiIiIiIKBiIiIiIigYCAi\nIiIiIigYiIiIiIgICgYiIiIiIoKCgYiIiIiIoGAgIiIiIiIoGIiIiIiICAoGIiIiIiKCgoGIiIiI\niKBgICIiIiIiKBiIiIiIiAgKBiIiIiIigoKBiIiIiIigYCAiIiIiIigYiIiIiIgICgYiIiIiIoKC\ngYiIiIiIoGAgIiIiIiIoGIiIiIiICAoGIiIiIiKCgoGIiIiIiKBgICIiIiIiKBiIiIiIiAgKBiIi\nIiIigoKBiIiIiIigYCAiIiIiIrSSYPCHP/yB4cOHExAQgMViYcaMGRw4cOCCditWrKBr16506NCB\nG2+8kYMHD9Z5v6qqisWLFxMSEoKfnx8zZ87k9OnTddrYbDbmzZtHYGAggYGBzJ8/n+Li4mb9fCIi\nIiIirV2rCAZffvkl999/PykpKXz22Wd4enoyceJEbDabq81TTz3FH//4R5555hl27tyJxWJh0qRJ\nlJWVudosXbqU999/nzVr1rB161ZKSkqYNm0aDofD1Wbu3Lns2bOHjRs38vHHH7N7927mzZvXop9X\nRERERKS1MRmGYVztQfxYeXk5AQEBrFu3jptvvhnDMAgPD+eBBx5g+fLlAJw9exaLxcLKlStZsGAB\nxcXFWCwWXnvtNebMmQNAVlYWkZGRbNiwgeTkZNLS0ujXrx/bt28nISEBgO3btzNmzBjS09Pp3bs3\nQJ0nCAEBAS386UUaZteuXQAMGzbsKo9ExD26ZqUt0fUqrZnDYfDVAfjyW/iPeVBSUuJ6rzH3sK3i\nicGPlZSU4HA4CAoKAiAzM5Pc3FySk5NdbXx8fBg7diw7duwAIDU1lZqamjptIiIiiIuLIyUlBYCU\nlBT8/PxcoQAgMTERX19fVxsRERERkdYs/YTBb18wiL4NRt8L//kiHMy88n49r7yLprdkyRKGDBni\nuoHPyckBIDQ0tE47i8WC1Wp1tTGbzQQHB9dpExoa6jo+JyeHkJCQOu+bTCYsFourjYiIiIhIa1FW\nYbB5F2zfB3uOQKYVMqwXtntzk41/n2O+onO1umCwbNkyduzYwbZt2zCZTJdtf7k2V1opde4Rokhr\np2tV2hpds9KW6HqVlmIYcDKvHTuP+LPzUEd2pAVQVXP5Ip93Pj3Lv8/xvaJzt6pg8Otf/5q3336b\nzz//nKioKNfrYWFhAOTm5hIREeF6PTc31/VeWFgYdrudwsLCOk8NcnNzGTdunKtNfn5+nXMahkFe\nXp6rHxERERGRllBUbubQqQ7kFXlTUe3BwRO+7DriT36xt9t9eJmrGdgzg4lDKoBeVzSeVhMMlixZ\nwjvvvMPnn3/umgR8TnR0NGFhYWzatIn4+HjAOfl427ZtrFy5EoD4+Hi8vLzYtGlTncnH6enpJCYm\nApCQkEBZWRkpKSmuMqWUlBTKy8tdbX5Mk42ktdPEOGlrdM1KW6LrVZqC3W5wIBO27YMd+2BnOlgL\noLyycf2ZTAaj+ldy97R2/PRGb/x94wCueAn+VhEMFi1axOrVq1m7di0BAQGuen9/f398fX0xmUws\nXbqUJ598ktjYWGJiYnjiiSfw9/dn7ty5gHPm9d13381DDz2ExWKhU6dOLFu2jEGDBjFx4kQA4uLi\nmDJlCgsXLuSll17CMAwWLlzI9OnTiYmJuWqfX0RERESuLXa7wda98PZn8P4XkGe77CH1Cut0lmk3\n2Jk43Je+0RAVZsKvw5WVDV1MqwgGzz//PCaTiQkTJtR5fcWKFTzyyCMAPPTQQ1RWVrJo0SJsNhuj\nRo1i06ZN+Pr+8F/KqlWr8PT0ZPbs2VRWVjJx4kRWr15dZx7CW2+9xeLFi5k8eTIAM2fO5JlnnmmB\nTykiIiIi1xrDMDiYCWu3woEMMJmgsBi+PQz5RY3r08fbTuIAg0kjPJkQD/GxPm7Nvb1SrXIfg6tN\n+xhIW6LH3NLW6JqVtkTXq/yY3W6wZQ/s2A/7jjpXC7IWNK4vT3MtkWFl9Is2YenkR/dQM+OHwIi+\n4O3V8CBwpfewreKJgYiIiIhIa3Usy+DDbc6nAJt3QU5hw/to51VJ3+hsRvarZfLIQEYPDKFTR09M\npqCmH3AjKRiIiIiIiJzHmm+wK935VODzVNiZ1rh+2rer5sahxcyb2p6fjPGjnXfPph1oE1MwEBER\nEZHrVmGxMwTsTINdabArveGlQZ7mKnp3O8mYwWX0iggmwtKF/tFe9O7ujZenpXkG3gwUDERERETk\nulBdY/D1Afj6oDME7Ex37iTcUN5elcTHZjKqn4NxQzqRPDwMn3a9L39gK6dgICIiIiLXtNR0g/95\nE/6V0vi9A/pEZjN1VCXjhwYzaXgA7dv1a9pBtgIKBiIiIiJyTcm3GezPgO8ynHsIbNnTsOM9zTX0\njChmWKxB8oiOTBzWji6dw5tlrK2JgoGIiIiItGnZBQb/SoE9R5zLh+454v6xJpOdCEsBA3ueJXFA\neyYND2ZQjBdeniHNN+BWSsFARERERNoUwzDYcwQ+S4XNO+GTneBwuHesX4diBvbKZWRfmDAsmPFD\ngungE9a8A24jFAxEREREpNWz2w22f+csDVq3FU7kNOz4Ib1L+d2dZmaODcBkCmyWMbZ1CgYiIiIi\n0ipVVRts3gUffAkfbTPIL3JvN2CTySA2soqBPb0Z2seDW8dDj64dm3ew1wAFAxERERFpNUrKDTak\nwNufVbHxa08qzpq/f+fSoaBvVDW33ujFkN4mRg800TmwffMP9hqjYCAiIiIiLc5uN7AWwBffQsp3\nBqmHqjh22sSZknbft2h3yeN9vA2SR5iYMAxujIf+PS7dXi5PwUBEREREmlVtrXOy8L9S4KsDsPeI\nQc4ZMIxzTwFMgM9l+wnwg2mJ8JOxMGWUCd/27pUWiXsUDERERESkSZRVGFRUwckc+DQV9hyGA5lw\n+JRBdc35N/Hu39CHBcPMMTBrLIwfCt5eCgPNRcFARERERBqlqtpgVzp8vhvWboHdh+pr6f7NvMkE\nMREwYwzMGgcj+4KHh8JAS1AwEBERERG3OBwGB4/DJ9849w748luorGp8fwF+0DcKkuJhZD/n9xEW\nPRW4WhQMREREROQCBUUGXx2AHd9B2nHILnT+Z2lF4/oLC4bE/jA1AUb1g97dwctTAaA1UTAQERER\nEUrKDdZugS92O8PA4VON6yfI34Ffew+GxzlXCxrUC/pGQ6eOCgGtnYKBiIiIyHXmbLine truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x87649b0>"
"<matplotlib.figure.Figure at 0x7c636a0>"
]
},
"metadata": {},
@@ -782,9 +782,9 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x87eb828>"
"<matplotlib.figure.Figure at 0x72e16d8>"
]
},
"metadata": {},
@@ -792,9 +792,9 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x86e8e80>"
"<matplotlib.figure.Figure at 0x6bf02b0>"
]
},
"metadata": {},
@@ -889,7 +889,7 @@
},
{
"cell_type": "code",
"execution_count": 9,
"execution_count": 10,
"metadata": {
"collapsed": false,
"scrolled": true
@@ -897,7 +897,7 @@
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQEAAAAmBAMAAAA2HDP0AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEO+Zu3ZEIokyq83d\nZlSLRjhlAAAD0ElEQVRYCcWXPWgUQRTH/5v72s19ZIlN0MiFWKa5RkQEOSEiVhrkRIRoqmihcAEr\nFbzCYAoTDkQIKBiLKCLiaSPhUC74UeqCBNIEAiJYWEREtBDjzNzO7Oz59uP8wIHczr73n//88mbC\nvaB/eAf+20gMD9voJ7af3n28ToT/RaiHJEjZ93MT/2I7wpMmsPCU0P5eKKqcNAHwNfZ2W6Z3h2lV\nOW86tCyAwNqw8HZ8DoXxEs6u0Evd6DMMVkMEqpzJOs5TOprgktky8b42iHcYx93t1EIZyw/BbMgX\n8umWswcgfxWaYOvR6TEk6zewhFlcWyKN3WByAYVPYQJeznxlH87BfE4dBE0gHHvY7o+MZbM6ELZB\n3wLSP0IEopwfMIRVoEXpQgguVhzMr1bza2PUQhkrlpD+Il+IpyjnkrWAOzDI0wohYNAxxqUarG9R\numXzBJbXC6XuTiHzIspX5GMRnF55gJlqZrFKWIbUgFAToWIt/BSIJf6QS9C32c3Y0Dz6SijoN7Fr\npz+uQa6MfOhfo0ZLTjsIMrFKodcgNYREg7CO7dRB0DvBzeYvU1eG2IaHXqO/TqRiO3UQXBBe5XRL\nPH0fQVgDlXs+nfsS4mTNHNBWdBDsFamGQZxsOd0SyZgfIU5JnNFM/ASGu0nBfTJhWopJLJn85Uk4\nYcJVZVG0vQV+gsR6O7PNuwdJpdWwVCxwQjihrNQf1QzwEwy2M8ZtT+ERaFheOmhGOHkExhNtmZ9g\nFuBN1ZapmpIIAh7UsVQ2cEI4CQLzyPV72Kodgr8G7PBEU/Vms6WsOYEI6lgqGzShnATBWG/jlbFL\n/7731SDlQDVV0psTiKCOJZOBT8pJENSzDnKb37WFimCSBXM84etR7zcfN5tOR1BbTk1pp95mc6TJ\nOvA+75K3F0uC1Ah7r7Af3lTxIVtbcQ9kUGQiPgKd2jfxFup+A0kwdXJCdFGiqeIS2dpyAhXkiagR\n6MQJMhtXUfM7SAIU2Xccy4mmikt63NaWE4hgzOYdgU6cwFg8XbHzO1fX8f4t0muH+Ubyv7bEV+Rs\nFuBDb23FKfBgvOadCYOc2qfABIVjRqtQSjm9Uw57UwSZz7ybbQ+9tU3IYLzmnamDnFCSVgetRrZu\nOtaeOosoAjy0l6WCbG3jNe/cIsoJQ6aTtQftK0aNqT2CW3OKkWxt4zXvnCDKKfNyHNbsFayt2D6C\n7Ah/F4NsbdUZSVXgM8qJ33hveDUofPaixCxm885XRjjhYln39wigf2Hpku7nXTkxguLo/u43+Vsr\nUqOHbKQnT/0tv+59MpOT+AmTXbj1s0kQCQAAAABJRU5ErkJggg==\n",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQEAAAAmBAMAAAA2HDP0AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEO+Zu3ZEIokyq83d\nZlSLRjhlAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAD0ElEQVRYCcWXPWgUQRTH/5v72s19ZIlN0MiF\nWKa5RkQEOSEiVhrkRIRoqmihcAErFbzCYAoTDkQIKBiLKCLiaSPhUC74UeqCBNIEAiJYWEREtBDj\nzNzO7Oz59uP8wIHczr73n//88mbCvaB/eAf+20gMD9voJ7af3n28ToT/RaiHJEjZ93MT/2I7wpMm\nsPCU0P5eKKqcNAHwNfZ2W6Z3h2lVOW86tCyAwNqw8HZ8DoXxEs6u0Evd6DMMVkMEqpzJOs5TOprg\nktky8b42iHcYx93t1EIZyw/BbMgX8umWswcgfxWaYOvR6TEk6zewhFlcWyKN3WByAYVPYQJeznxl\nH87BfE4dBE0gHHvY7o+MZbM6ELZB3wLSP0IEopwfMIRVoEXpQgguVhzMr1bza2PUQhkrlpD+Il+I\npyjnkrWAOzDI0wohYNAxxqUarG9RumXzBJbXC6XuTiHzIspX5GMRnF55gJlqZrFKWIbUgFAToWIt\n/BSIJf6QS9C32c3Y0Dz6SijoN7Frpz+uQa6MfOhfo0ZLTjsIMrFKodcgNYREg7CO7dRB0DvBzeYv\nU1eG2IaHXqO/TqRiO3UQXBBe5XRLPH0fQVgDlXs+nfsS4mTNHNBWdBDsFamGQZxsOd0SyZgfIU5J\nnNFM/ASGu0nBfTJhWopJLJn85Uk4YcJVZVG0vQV+gsR6O7PNuwdJpdWwVCxwQjihrNQf1QzwEwy2\nM8ZtT+ERaFheOmhGOHkExhNtmZ9gFuBN1ZapmpIIAh7UsVQ2cEI4CQLzyPV72Kodgr8G7PBEU/Vm\ns6WsOYEI6lgqGzShnATBWG/jlbFL/7731SDlQDVV0psTiKCOJZOBT8pJENSzDnKb37WFimCSBXM8\n4etR7zcfN5tOR1BbTk1pp95mc6TJOvA+75K3F0uC1Ah7r7Af3lTxIVtbcQ9kUGQiPgKd2jfxFup+\nA0kwdXJCdFGiqeIS2dpyAhXkiagR6MQJMhtXUfM7SAIU2Xccy4mmikt63NaWE4hgzOYdgU6cwFg8\nXbHzO1fX8f4t0muH+Ubyv7bEV+RsFuBDb23FKfBgvOadCYOc2qfABIVjRqtQSjm9Uw57UwSZz7yb\nbQ+9tU3IYLzmnamDnFCSVgetRrZuOtaeOosoAjy0l6WCbG3jNe/cIsoJQ6aTtQftK0aNqT2CW3OK\nkWxt4zXvnCDKKfNyHNbsFayt2D6C7Ah/F4NsbdUZSVXgM8qJ33hveDUofPaixCxm885XRjjhYln3\n9wigf2Hpku7nXTkxguLo/u43+VsrUqOHbKQnT/0tv+59MpOT+AmTXbj1s0kQCQAAAABJRU5ErkJg\ngg==\n",
"text/latex": [
"$$\\left[\\begin{matrix}\\frac{x_{pos}}{\\sqrt{x_{alt}^{2} + x_{pos}^{2}}} & 0 & \\frac{x_{alt}}{\\sqrt{x_{alt}^{2} + x_{pos}^{2}}}\\end{matrix}\\right]$$"
],
@@ -909,7 +909,7 @@
"⎣╲╱ x_alt + x_pos ╲╱ x_alt + x_pos ⎦"
]
},
"execution_count": 9,
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
@@ -974,7 +974,7 @@
},
{
"cell_type": "code",
"execution_count": 10,
"execution_count": 11,
"metadata": {
"collapsed": false
},
@@ -1001,7 +1001,7 @@
"⎣ 2 ⎦"
]
},
"execution_count": 10,
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
@@ -1036,7 +1036,7 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": 12,
"metadata": {
"collapsed": false,
"scrolled": true
@@ -1046,7 +1046,7 @@
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x87c4a90>"
"<matplotlib.figure.Figure at 0x72e1cc0>"
]
},
"metadata": {},
@@ -1171,7 +1171,7 @@
},
{
"cell_type": "code",
"execution_count": 12,
"execution_count": 13,
"metadata": {
"collapsed": false,
"scrolled": false
@@ -1198,7 +1198,7 @@
"⎣0 0 1 ⎦"
]
},
"execution_count": 12,
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
@@ -1238,7 +1238,7 @@
},
{
"cell_type": "code",
"execution_count": 13,
"execution_count": 14,
"metadata": {
"collapsed": false
},
@@ -1288,7 +1288,7 @@
" ⎦"
]
},
"execution_count": 13,
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
@@ -1348,7 +1348,7 @@
},
{
"cell_type": "code",
"execution_count": 14,
"execution_count": 15,
"metadata": {
"collapsed": false
},
@@ -1371,7 +1371,7 @@
"⎣ (px - x) + (py - y) (px - x) + (py - y) ⎦"
]
},
"execution_count": 14,
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
@@ -1394,7 +1394,7 @@
},
{
"cell_type": "code",
"execution_count": 15,
"execution_count": 16,
"metadata": {
"collapsed": true
},
@@ -1428,7 +1428,7 @@
},
{
"cell_type": "code",
"execution_count": 16,
"execution_count": 17,
"metadata": {
"collapsed": true
},
@@ -1479,7 +1479,7 @@
},
{
"cell_type": "code",
"execution_count": 17,
"execution_count": 18,
"metadata": {
"collapsed": true
},
@@ -1556,7 +1556,7 @@
},
{
"cell_type": "code",
"execution_count": 18,
"execution_count": 19,
"metadata": {
"collapsed": true
},
@@ -1582,7 +1582,7 @@
},
{
"cell_type": "code",
"execution_count": 19,
"execution_count": 20,
"metadata": {
"collapsed": false,
"scrolled": true
@@ -1613,7 +1613,7 @@
" plot_covariance_ellipse((ekf.x[0,0], ekf.x[1,0]), ekf.P[0:2, 0:2], std=6,\n",
" facecolor='b', alpha=0.08)\n",
"\n",
" x, y= sim_pos[0, 0], sim_pos[1, 0]\n",
" x, y = sim_pos[0, 0], sim_pos[1, 0]\n",
" for lmark in landmarks:\n",
" d = np.sqrt((lmark[0] - x)**2 + (lmark[1] - y)**2) \n",
" a = atan2(lmark[1] - y, lmark[0] - x) - sim_pos[2, 0]\n",
@@ -1632,7 +1632,7 @@
},
{
"cell_type": "code",
"execution_count": 20,
"execution_count": 23,
"metadata": {
"collapsed": false,
"scrolled": true
@@ -1640,9 +1640,9 @@
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAEWCAYAAACkORurAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmQXWd57/vvu8Y9Dz2rpdZgWbZlg2KEGAIhmCFghXud\nqcgNhNiu5IAr2AQnpEi4hIhzDiEJmCS+x4QilZPgAOcWqVQlDCeDbwK24zKDhC3AkyRraKnn7j0P\na6/xvX9sSVZrtgas4flQLuy91l777V1rd//67ed9XqW11gghhBBCCCFeNOOlHoAQQgghhBCXKwnT\nQgghhBBCnCMJ00IIIYQQQpwjCdNCCCGEEEKcIwnTQgghhBBCnCMJ00IIIYQQQpwjCdNCCCGEEEKc\no9OG6T/+4z/mVa96FcVikZGREW677TaefvrpE877+Mc/zsqVK8lkMrzpTW/imWeeuWgDFkIIIYQQ\n4lJx2jD9yCOPcM899/Dtb3+bb37zm1iWxVvf+lZqtdrRc/70T/+UP/uzP+OBBx5g+/btjIyM8DM/\n8zO02+2LPnghhBBCCCFeSurF7IDY6XQoFot89atf5R3veAdaa8bHx/mt3/otPvKRjwDQ6/UYGRnh\nvvvu433ve99FG7gQQgghhBAvtRdVM91sNkmShHK5DMD+/fuZn5/nbW9729FzUqkUP/3TP83jjz9+\nYUcqhBBCCCHEJeZFhekPfvCDvOIVr+Anf/InAZibmwNgdHR02XkjIyNHjwkhhBBCCHGlss72xN/5\nnd/h8ccf57HHHkMpdcbzjz+n0Wi8+NEJIYQQQghxiSgWiyc8dlYz07/927/NV77yFb75zW+ydu3a\no4+PjY0BMD8/v+z8+fn5o8eEEEIIIYS4Up0xTH/wgx88GqSvu+66ZcfWrVvH2NgYDz300NHHer0e\njz32GK973esu/GiFEEIIIYS4hJy2zOPuu+/mS1/6Ev/0T/9EsVg8Wgedz+fJZrMopbj33nv55Cc/\nyQ033MCGDRv4xCc+QT6f593vfvcpr3uyKXJxajt27ABgy5YtL/FIxKVC7glxLLkfxPHknhDHk3vi\n3J2pVPm0Yfpzn/scSine8pa3LHv84x//OH/4h38IwIc//GE8z+Puu++mVqvx2te+loceeohsNnue\nQxdCCCGEEOLSdtownSTJWV1k27ZtbNu27YIMSAghhBBCiMvFi2qNJ4QQQgghhHiBhGkhhBBCCCHO\nkYRpIYQQQgghzpGEaSGEEEIIIc6RhGkhhBBCCCHOkYRpIYQQQgghzpGEaSGEEEIIIc6RhGkhhBBC\nCCHOkYRpIYQQQgghzpGEaSGEEEIIIc6RhGkhhBBCCCHOkYRpIYQQQgghzpGEaSGEEEIIIc6RhGkh\nhBBCCCHOkfVSD0AIIYQQLz2tNXGiAVCHH1NKYRjq1E8SQkiYFkIIIa5GSaLxw4goTogTTRwnhFH/\nmDqcnw0DbMvAtU1c25JgLcRJnLHM49FHH+W2225j1apVGIbBgw8+uOx4s9nk/e9/PxMTE2QyGW64\n4Qb+4i/+4qINWAghhBDnzg8iGu0elaZHpR5SqcVUqgnVGnTaBt22Qbtl0Goq6jVFtZb0z2t6tLo+\nWuuX+ksQ4pJyxpnpTqfDpk2buOOOO7j99ttRavlvpffeey+PPPIIX/rSl1i3bh2PPPII733vexka\nGuI973nPRRu4EEIIIc6O1hrPj+gFEX6g6fUgisA2LWzLIG0ZmObJ59fCKMYPYjwvIpWKieIehYx7\nyvOFuNqc8ZOwdetWPvGJT/BLv/RLGMaJp2/fvp3bb7+dN77xjaxevZpf+7Vf47WvfS3f+973LsqA\nhRBCCHH2/CCi1upRa4ZUa5pux8AxHUrZNLm0g2tbpw3GtmWSSzsUM2lC36DR1DQ6PkkiM9RCwAXo\n5rF161a+9rWvMTU1BcDjjz/Ozp07ufXWW897cEIIIYQ4N1Gc0Gj3qLUC6g2N7xnkUimK2RSubZ3w\nl+YzMQxFIZtCxyattqbtBRdp5EJcXpR+EcVP+Xyez372s9x+++1HH9Nac/vtt/PlL38Zy+pXjTzw\nwAO8733vW/bcRqNx9N/37NlzvuMWQgghxCl4QUQvSPA8RRQZpGwLxzIvyLW11rR6AdlsTDFrYUm5\nh7jCbdiw4ei/F4vFE46fdzeP3/3d3+W73/0uX//611mzZg2PPPIIH/rQh1izZg1vf/vbz/fyQggh\nhDhLSaLp+hGeD55n4lgm+ZT5omehT0cphWtZ9HoJjh2TT0uYFle38wrTnU6H+++/n3/8x3/kHe94\nBwAve9nL2LlzJ/fdd98pw/SWLVvO52WvOjt27ADkfRMvkHtCHEvuBwH9hYKtbkCrrXni+0+RdS1e\nuXnzRXu9etsjX9AMFVOyGPEyIN8nzt2x1RUnc15hWmuN1vqEhYmGYUjrHCGEEOLHpNsLaXsh7TYo\nbZJL2Rd0NvpkLNMkiiLCOJEwLa5qZ9Ua70iNc5IkTE5OsnPnTgYHB5mYmOAtb3kLv//7v08ul2P1\n6tU88sgjfPGLX+TTn/70RR+8EEIIcbVrewHtbkS7Da5lk3YvfpAGsEyDMOwvdBTianbGML19+3be\n/OY3A/06qW3btrFt2zbuvPNO/uZv/oYvf/nLfOQjH+E973kPlUqFtWvX8olPfIK77777og9eCCGE\nuJq1uj7tbky7DbmUi9awe2qRH0wu0e6FHPQcbNMg5disHCowPljAMk1s89R9pc+WbRr4fr+8RIir\n2RnD9C233EKSnPq3zuHhYf76r//6gg5KCCGEEKfX6vq0OjHdjsK1LZ6ZnOdHB+aYqs/w/NQevKRH\nqTuJiYVjpCm5gwykyly7coiXrRshm7JxbJOU8+Lb5EG/VV6SgFR1iqvdeXfzEEIIIcSPV7PTn5Hu\ndhRJovnf332W3QsHONQ8iOUEqGyFkgMrRnMkOsTrdZluLHCgaTPXXsPe6To3rx9n7ViRdDoin37x\nOxpKiBaiT8K0EEIIcRlpdvoz0l5XUW/3+ObOPTy7uItGvMDKFTalYpr5OQNDGQyU3KPPm1gBnW7M\nwen9NOpLdJ/1aHYm2LhmGK39c9oiXKn+P0JczSRMCyGEEJeJjhfQ8WIazYQojvn3J/ayc/YptNPg\nxvUZHKe/MYuhTh6KsxmTG641mF/ssmfhhzCVoLXmxrUjKOVTyqV/nF+OEFcECdNCCCHEZcDzQxrt\ngPnFEENZPPKDKfYsHgC3ycZrMxhnOUWslGJsxMZxInZP/QiFQdp1uN4p0XMiUs7ZRYNE68Mz0zI1\nLa5uEqaFEEKIS1wYxSw1uszOh+jIZWapzcHKPPV4ho3XpM46SB9roGQRxxF7557BPeAykE+RctVZ\nh+k4STBNMA0J0+LqJl3WhRBCiEtYHCdML7WYngvpdW0c02Vyocq8d4jxMRPHOfcf5cODFpm8z2Rn\nL9/bdYienxCEZ9fqLor7YdqSDVvEVU4+AUIIIcQlKoxiDi00mZuP8NoWA7kcrW6P+VYFT9cZHDj/\nPzCvXunQSuaZbc2zb6ZGfJp2uMeK4wTbljAthHwChBBCiEuQ54fMVdrMLUZ4HYvRUgHbMpmq1Fnq\nzTM0YJ1TecfxTFMxPmoz1z3IU5NzBGe5CUusE2xLwrQQ8gkQQgghLjEdL6DW9JldjAg8m2I2zUy1\nyY7dh/iPJ3fzzPQBltpVppbqNDoeiT6/Lb0HSiax1Wa2Oc/+meoZzw/CGOtwkJYFiOJqJwsQhRBC\niEtI2wtodyPml0Ii3+TgQpP9c/upe3UWuxWemZmhog4StjwWvBSumSLvZBkbzDNczJ3TgsB+hw+L\nB/b9H2ya/xE3bxg/7fl+GOGkwD3LxYpCXMnkUyCEEEJcIpodn44Xs1QNqdZ9HvvRLJXuIjPtadxM\niHITUoUWRSsgU+jh+x7NnmahbbPUKVPOFLhmxSBBGGOYLy5UP7DvA/yfzmeYqzXo9AKyKeek52mt\niZKYgguubV6IL1uIy5qEaSGEEOIlprU+vEV4QrcDc9U23/z+IQ629qOdFmvWmqRck/lKjFYRpq0x\nDYNMGjJp8Hox1dYCbd/D6yXkjIhs2sLzAxzbwjROX9W5bcddfOwVf8neSY9qUGFyvsaNa0ZPeq4f\nxtg2OLYpJR5CIDXTQgghxEuu1Q1odxN6nmKx3uFbT+5jd3UXVrbJxCqFYWg8X9PuaMIkwrY0lmFg\nmSaWaZLP2oyPuii7Q8WfZ6beoetpej3wg+iUHTq27bgLgP+65fNooFgwaQUNFhudU47VDyNcF1xb\n5uOEAAnTQgghxEuq1fVpd2O8rgKtePSpfTw7v5dMscPIkInvK8JQYWBiGSaGAsNQcNyssFIwNGBj\n2D1aUY3FVget4fnnIQgjtNbLzt+24y7+65bPH/1vrTX5rKIbtVk6RZgOoxhUgusoHCnxEAKQMC2E\nEEK8ZDpeQLsb0+0o8mmXb+7cw1NT+4itNgMlmzBU2KaFe7hUwzAUYKD1KcorVH9nw9Do0gpbLDU7\nTE0p9u7vb7JyxPFBGvo7GqYzikj3aHm9fnA+jueHpNOQdmVWWogjzhimH330UW677TZWrVqFYRg8\n+OCDJ5yze/dufvEXf5FyuUw2m+WVr3wlzz333EUZsBBCCHEl6AURbS+i04G0Y7N/psrTB2eZrldY\nOerimDauvbyXtGGAoRSn7YSnoJiHhXaLbz/R4rvf0Tz+GOzb3w/HJwvSR1rrmabCdQ382Mfzw2Xn\nBGGMVgkpV5F27QvzJghxBThjmO50OmzatIn777+fdDp9wmKD/fv38/rXv57169fzrW99i6effpo/\n+qM/IpfLXbRBCyGEEJezMIppdwNaLTAw6Pohjz11iMnKPKODFoWsc3gWejnTUBjKJLine truncated
"text/plain": [
"<matplotlib.figure.Figure at 0xa5e3f28>"
"<matplotlib.figure.Figure at 0x9c1b400>"
]
},
"metadata": {},
@@ -1652,7 +1652,41 @@
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0.0199192 0.02067011 0.00153754]\n"
"[ 0.02427096 0.04335114 0.00222081]\n"
]
}
],
"source": [
"landmarks = array([[5, 10], [10, 5], [15, 15], [20, 5]])\n",
"landmarks = array([[5, 10], [10, 5], [15, 15]])\n",
"\n",
"ekf = run_localization(landmarks, sigma_vel=0.1, sigma_steer=np.radians(1),\n",
" sigma_range=0.3, sigma_bearing=0.1)\n",
"print(ekf.P.diagonal())"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x9e2d400>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0.01981129 0.02080953 0.001537 ]\n"
]
}
],
@@ -1668,7 +1702,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"I have plotted the landmarks as solid squares. The path of the robot is drawn with a dashed line, which is admittedly hard to see. The covariance after the predict step is drawn in a very light shade of blue, and the covariance after all of the landmark measurements are incorporated are shown in green. To make them visible at this scale I have set the ellipse boundary at 10$\\sigma$.\n",
"I have plotted the landmarks as solid squares. The path of the robot is drawn with a dashed line, which is admittedly hard to see. The covariance after the predict step is drawn in a very light shade of blue, and the covariance after all of the landmark measurements are incorporated are shown in green. To make them visible at this scale I have set the ellipse boundary at 6$\\sigma$.\n",
"\n",
"From this we can see that there is a lot of uncertainty added by our motion model, and that most of the error in in the direction of motion. We can see that from the shape of the blue ellipses. After a few steps we can see that the filter incorporates the landmark measurements. \n",
"\n",
@@ -1818,7 +1852,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.1"
"version": "3.4.3"
}
},
"nbformat": 4,
+19 -57
View File
@@ -58,77 +58,36 @@ def move(x, u, dt, wheelbase):
def state_unscented_transform(Sigmas, Wm, Wc, noise_cov):
""" Computes unscented transform of a set of sigma points and weights.
returns the mean and covariance in a tuple.
"""
kmax, n = Sigmas.shape
def state_mean(sigmas, Wm):
x = np.zeros(3)
sum_sin, sum_cos = 0., 0.
for i in range(len(Sigmas)):
s = Sigmas[i]
for i in range(len(sigmas)):
s = sigmas[i]
x[0] += s[0] * Wm[i]
x[1] += s[1] * Wm[i]
sum_sin += sin(s[2])*Wm[i]
sum_cos += cos(s[2])*Wm[i]
x[2] = atan2(sum_sin, sum_cos)
return x
# new covariance is the sum of the outer product of the residuals
# times the weights
P = np. zeros((n, n))
for k in range(kmax):
y = residual_x(Sigmas[k], x)
P += Wc[k] * np.outer(y, y)
if noise_cov is not None:
P += noise_cov
return (x, P)
def z_unscented_transform(Sigmas, Wm, Wc, noise_cov):
""" Computes unscented transform of a set of sigma points and weights.
returns the mean and covariance in a tuple.
"""
kmax, n = Sigmas.shape
def z_mean(sigmas, Wm):
x = np.zeros(2)
sum_sin, sum_cos = 0., 0.
for i in range(len(Sigmas)):
s = Sigmas[i]
for i in range(len(sigmas)):
s = sigmas[i]
x[0] += s[0] * Wm[i]
sum_sin += sin(s[1])*Wm[i]
sum_cos += cos(s[1])*Wm[i]
x[1] = atan2(sum_sin, sum_cos)
return x
# new covariance is the sum of the outer product of the residuals
# times the weights
P = np.zeros((n, n))
for k in range(kmax):
y = residual_h(Sigmas[k], x)
P += Wc[k] * np.outer(y, y)
if noise_cov is not None:
P += noise_cov
return (x, P)
sigma_r = 1.
sigma_r = .3
sigma_h = .1#np.radians(1)
sigma_steer = np.radians(.01)
dt = 1.0
@@ -136,7 +95,8 @@ wheelbase = 0.5
m = array([[5, 10],
[10, 5],
[15, 15]])
[15, 15],
[20, 5]])
def fx(x, dt, u):
@@ -155,7 +115,9 @@ def Hx(x, landmark):
return Hx
points = MerweScaledSigmaPoints(n=3, alpha=1.e-3, beta=2, kappa=0)
ukf= UKF(dim_x=3, dim_z=2, fx=fx, hx=Hx, dt=dt, points=points)
ukf= UKF(dim_x=3, dim_z=2, fx=fx, hx=Hx, dt=dt, points=points,
x_mean_fn=state_mean, z_mean_fn=z_mean,
residual_x=residual_x, residual_z=residual_h)
ukf.x = array([2, 6, .3])
ukf.P = np.diag([.1, .1, .2])
ukf.R = np.diag([sigma_r**2, sigma_h**2])
@@ -169,12 +131,12 @@ xp = ukf.x.copy()
plt.figure()
plt.scatter(m[:, 0], m[:, 1])
for i in range(250):
for i in range(200):
xp = move(xp, u, dt/10., wheelbase) # simulate robot
plt.plot(xp[0], xp[1], ',', color='g')
if i % 10 == 0:
ukf.predict(fx_args=u, UT=state_unscented_transform)
ukf.predict(fx_args=u)
plot_covariance_ellipse((ukf.x[0], ukf.x[1]), ukf.P[0:2, 0:2], std=3,
facecolor='b', alpha=0.08)
@@ -184,8 +146,7 @@ for i in range(250):
a = atan2(lmark[1] - xp[1], lmark[0] - xp[0]) - xp[2] + randn()*sigma_h
z = np.array([d, a])
ukf.update(z, hx_args=(lmark,), UT=z_unscented_transform,
residual_x=residual_x, residual_h=residual_h)
ukf.update(z, hx_args=(lmark,))
plot_covariance_ellipse((ukf.x[0], ukf.x[1]), ukf.P[0:2, 0:2], std=3,
facecolor='g', alpha=0.4)
@@ -195,4 +156,5 @@ for i in range(250):
plt.axis('equal')
plt.title("UKF Robot localization")
plt.show()
plt.show()
print(ukf.P.diagonal())