I was reusing the names for the state and measurement functions,
which made it impossible to run cells out of order, and was no
doubt confusing to the reader.
I think I finally arrived at a good ordering of material.
Started with implementing a linear problem just so we can
see how it differs from the linear KF, then added problems
step by step. Got rid of most of the poor performing filters.
I moved it more to the front as the pos vs velocity explanation
is difficult to understand if you do not already understand how
orthogonal or correlated measurements greatly increase precision.
Also various minor wording changes and fixes in other parts.
Position vs velocity confuses people, so I added a 2 position
reading example.
Fixed the Newtonian equation for jerk.
Changed indefinite integral in Newtonian equations to definite.
I wrote a chapter introducing the problem of nonlinearity in KF because this
information is common to the EKF, UKF, etc. Then I reordered chapters. I want
people ot learn the UKF before the EKF. While I was doing this, I moved the
H Infinity and Ensemble filters to later chapters because they are mostly
curiosities in this book.
The contents section is a pain to maintain, and it doesn't really
add anything of important. Maybe i'll add it back in once the book
is settled down, but probabl not.
My charts were mixing position vs time, which was pretty confusing.
I changed it to position vs velocity, and demonstrated how multipying
the covariances lead to a much better result.
I had a lot of problems with lines being visible, and ended up
using different styles in different places. I found a style that
seems to work everywhere and put the code in book_plots.py.
I had already explained that you cannot KF the output of a GPS
(this is extemely prevalent in hobbiest projects on the web).
But now I added an example in code of what happens when you try
this.
I moved book_format.py to the root directory so that all of the
notebooks do not need to modify the system path to import it. It
modifies the path on import so that all of the code in ./code can
then be accessed.
Altered links to nbviewer to account for no longer using subdirectories.
Added titles to plot so reader can understand what is being shown
without having to read the code.
Also added some text to expand on a few explanations.
Added code to inject \appendix to the first appendix notebook
so that they are properly labelled. Started g-h chapter as chapter
one. There is probably a lot more I want to do now that I have
the basic idea of how to inject latex into the files before creating
the PDF, but this is a good start.
I need to change some of the colors because they do not render
well when next to each other, as is common when I am plotting
filter output vs measurement. For now I made the yellow color
last as it is the hardest to see.
UKF chapter's headings were all messed up in the PDF output. I added
an exercise to use the unscented transform on the 5,000 point nonlinear
monte carlo example from the beginning of the chapter.
I was plotting velocity, not position of filter in one plot.
Also, wrote a initialize_filter function so all plot start
with the filter initialized to the same value.
When editting a notebook I tend to rerun the cells many times.
But imports are only done once, so the code in book_format()
is only run the first time. I put all of that code in a function
so that it is run every time.