Fixed headers for nbconvert.

nbconvert does not work with the ### style headers, so I
converted to using the header cells where I was using the hash
headers.
This commit is contained in:
Roger Labbe 2015-01-08 09:03:14 -08:00
parent c241f715c9
commit cfdf66a5eb
9 changed files with 622 additions and 345 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:402152422ec6a095e6eb2472fe34e23b3492cab93a8573e7060446a06e2e7a07"
"signature": "sha256:f08e94cbb6c00464eb37c3fd1d0eafa5e7453f677f35d30f69a0eafd0f7f71c4"
},
"nbformat": 3,
"nbformat_minor": 0,
@ -491,12 +491,18 @@
"This is an **extremely important** result. Gaussians allow me to capture an infinite number of possible values with only two numbers! With the values $\\mu=22$ and $\\sigma^2=4$ I can compute the distribution of measurements for over any range."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"The Variance"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### The Variance\n",
"\n",
"Since this is a probability density distribution it is required that the area under the curve always equals one. This should be intuitively clear - the area under the curve represents all possible occurences, which must sum to one. We can prove this ourselves with a bit of code. (If you are mathematically inclined, integrate the Gaussian equation from $-\\infty$ to $\\infty$)"
]
},

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:d69b1ac3d24dfc4df1491bae0c4a10492ca95005dd877635c72cc4d707ff96f5"
"signature": "sha256:a5f9316b43db41119b47fba5e4ed3189da47626d5e4827b3c5cd88d5265daef2"
},
"nbformat": 3,
"nbformat_minor": 0,
@ -1140,12 +1140,18 @@
],
"prompt_number": 16
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Using SymPy to compute Jacobians"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using SymPy to compute Jacobians\n",
"\n",
"Depending on your experience with derivatives you may have found the computation of the Jacobian above either fairly straightforward, or quite difficult. Even if you found it easy, a slightly more difficult problem easily leads to very difficult computations.\n",
"\n",
"As explained in Appendix A, we can use the SymPy package to compute the Jacobian for us. "
@ -1193,12 +1199,18 @@
"This result is the same as the result we computed above, and at much less effort on our part!"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Designing Q"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Designing Q\n",
"\n",
"Now we need to design the process noise matrix $\\mathbf{Q}$. From the previous section we have the system equation\n",
"\n",
"$$\\dot{\\mathbf{x}} = \\begin{bmatrix} 0 & 1 & 0 \\\\ 0& 0& 0 \\\\ 0&0&0\\end{bmatrix}\n",
@ -1271,7 +1283,7 @@
},
{
"cell_type": "heading",
"level": 3,
"level": 2,
"metadata": {},
"source": [
"Example: A falling Ball"

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:ba71339d843e48eaf0b87bcbb0951c5d65908f2ad5a0268b9f700c0d487dfecf"
"signature": "sha256:117157ef61273ba2130924efba98e19d14240ed7d99a785a7b9319d86ac83680"
},
"nbformat": 3,
"nbformat_minor": 0,
@ -336,10 +336,21 @@
"\n",
"We already mentioned the main difference between the UKF and EnKF - the UKF choses the sigma points deterministically. There is another difference, implied by the algorithm above. With the UKF we generate new sigma points during each predict step, and after passing the points through the nonlinear function we reconstitute them into a mean and covariance by using the *unscented transform*. The EnKF just keeps propagating the originally created sigma points; we only need to compute a mean and covariance as outputs for the filter! \n",
"\n",
"Let's look at the equations for the filter. As usual, I will leave out the typical subscripts and superscripts; I am expressing an algorithm, not mathematical functions. Here $N$ is the number of sigma points, $\\chi$ is the set of sigma points.\n",
"\n",
"**Initialize Step**\n",
"\n",
"Let's look at the equations for the filter. As usual, I will leave out the typical subscripts and superscripts; I am expressing an algorithm, not mathematical functions. Here $N$ is the number of sigma points, $\\chi$ is the set of sigma points."
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Initialize Step"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\\boldsymbol\\chi \\sim \\mathcal{N}(\\mathbf{x}_0, \\mathbf{P}_0)\n",
"$$\n",
"\n",
@ -349,12 +360,18 @@
" sigmas = multivariate_normal(mean=x, cov=P, size=N)"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Predict Step"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"** Predict Step**\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
"\\boldsymbol\\chi &= f(\\boldsymbol\\chi, \\mathbf{u}) + v_Q \\\\\n",
@ -399,12 +416,18 @@
" P = P / (N-1)"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Update Step"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Update Step**\n",
"\n",
"In the update step we pass the sigma points through the measurement function, compute the mean and covariance of the sigma points, compute the Kalman gain from the covariance, and then update the Kalman state by scaling the residual by the Kalman gain. The equations are\n",
"\n",
"$$\n",

View File

@ -18,5 +18,5 @@
((* endblock predoc *))
((* block docclass *))
\documentclass[12pt]{report}
\documentclass[11pt]{report}
((* endblock docclass *))