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.
Added more examples, and added more charts to illustrate what
I was talking about. Notably, added error bars to the weight
readings to make the possible range of values clear.
I read the matplotlib rcParams from a json file. The json module
always uses Unicode, but this does not work in Python 2.7. This
was causing the plots not to appear if using Python 2.7.
Wrote code to detect Python version and to convert to ASCII if
Python version 2.
I got the original code from the author, Cameron Davidson-Pilon,
modified it for the minor changes I make for the book, and put it
in 538.json. The main gain is that somebody doesn't need bleeding
edge matplotlib installed to get the 538 look.
I made the update() and predict() functions alter the belief array
in place rather than returning the value in a new array. I find this
far more readable and less error prone.
Several changes and clarifications. Added chart showing 2d distribution
of points for multivariate gaussian. Improved some discussions. Fixed
some typos.
Added section in math chapter for Bayesian statistics, and improved
on the discussion of system dynamics.
The PDF generator cannot deal with the markdown for section headings
(using hash marks), so I needed to fix chapters that use them.
Appendix B still uses them, but for now that is just a list of
notes for myself, so I left that alone.
This contains the new PDF generated from these changes.