Go to file
2014-05-16 15:52:30 -07:00
exp Fixed code that explicitly calculated weight. It was buggy. 2014-05-15 23:58:27 -07:00
styles Removing backup files. 2014-05-16 14:03:20 -07:00
bar_plot.py Added ability to label the axes. 2014-05-09 13:55:53 -07:00
book_format.py Moved left margin to the left. 2014-05-16 14:01:37 -07:00
DiscreteBayes1D.py A lot of changes. I think a lot of changes to the notebooks are just 2014-05-02 21:49:35 -05:00
dog_track_1d.py Interim check in. 2014-04-30 12:52:15 -05:00
DogSensor.py Format changes and multidimensional KF content. 2014-05-11 20:44:25 -07:00
g-h_filter.ipynb Added link to book in nbviewer to top of each page. 2014-05-16 14:16:51 -07:00
gauss.py Various changes. Main thing is removed the slow gaussian class from 2014-05-04 17:33:39 -05:00
gaussian_internal.py mv'ed gaussian.py to stats.py 2014-05-10 11:25:52 -07:00
Gaussians.ipynb Added link to book in nbviewer to top of each page. 2014-05-16 14:16:51 -07:00
gh.py Added stuff for Q. 2014-05-14 13:46:20 -07:00
histogram_filter.ipynb Added link to book in nbviewer to top of each page. 2014-05-16 14:16:51 -07:00
histogram.py initial commit 2014-04-28 16:14:43 -05:00
Introduction.ipynb Added link to book in nbviewer to top of each page. 2014-05-16 14:16:51 -07:00
Kalman_Filters.ipynb Added link to book in nbviewer to top of each page. 2014-05-16 14:16:51 -07:00
KalmanFilter1D.py Added hook to git to remove all notebook output prior to committing. 2014-05-06 09:48:35 -05:00
KalmanFilter.py Added stuff for Q. 2014-05-14 13:46:20 -07:00
mkf_ellipse_test.py Added stuff for Q. 2014-05-14 13:46:20 -07:00
mkf_internal.py Format changes and multidimensional KF content. 2014-05-11 20:44:25 -07:00
Multidimensional_Kalman_Filters.ipynb Added link to book in nbviewer to top of each page. 2014-05-16 14:16:51 -07:00
noise.py A lot of changes. I think a lot of changes to the notebooks are just 2014-05-02 21:49:35 -05:00
README.md Update README.md 2014-05-16 15:52:30 -07:00
stats.py Added stuff for Q. 2014-05-14 13:46:20 -07:00
test.py Added hook to git to remove all notebook output prior to committing. 2014-05-06 09:48:35 -05:00
Untitled0.ipynb Formatted plots to ggplot-like look. Getting ready to put on github as book. 2014-05-16 12:33:40 -07:00

#Kalman Filters and Random Signals in Python

Version 0.0 - not ready for public consumption. In development.

The motivation for this book came out of my desire for a gentle introduction to Kalman filtering. I'm a software engineer that spent almost two decades in the avionics field, and so I have always been 'bumping elbows' with the Kalman filter, but never had the need to implement one myself. As I moved into solving tracking problems with computer vision I needed to start implementing them for myself. There are classic textbooks in the field, such as Grewal and Andrew's excellent Kalman Filtering. But sitting down and trying to read these books is a dismaying experience. I am in no way putting down the book, but this is the opening to chapter one.

Theoretically, it is an estimator for what is called the linear-quadratic-Gaussian problem, which is the problem of estimating the instantaneous "state" ... of a linear dynamic system perturbed by Gausing white noise - by using measurements linearly related to the state, but corrupted by the Gaussian white noise. The resulting estimator is statistically optimal with respect to any quadratic function of estimation error.

That is actually a quite approachable sentence, so long as you know what all the terms mean. But the next few chapters fly through several years of undergraduate math, blithely referring you to textbooks on, for example, Itō calculus, and presenting an entire semester's worth of statistics in a few brief paragraphs. It is an excellent resource for an upper undergraduate course, and I can now read it, but sans instructor and resources it is heavy going.

However, as I began to finally understand the Kalman filter I realized the underlying concepts are quite straightforward. A few simple probability rules, some intuition about how we integrate disparate knowledge to explain events in our everyday life and the core concepts of the Kalman filter are accessible.

As I began to understand the math and theory another difficulty presented itself. A book or paper's author makes some statement of fact and presents a graph as proof. Well, why the statement is true is not clear, nor is the method by which you might make that plot obvious. Or maybe I wonder "is this true if R=0?"

Contents

  • Introduction

    Introduction to the Kalman filter. Explanation of the idea behind this book.

  • Chapter 1: The g-h Filter

    Intuitive introduction to the g-h filter, which is a family of filters that includes the Kalman filter. Not filler - once you understand this chapter you will understand the concepts behind the Kalman filter.

  • Chapter 2: The Discrete Bayes Filter Introduces the Discrete Bayes Filter. From this you will learn the probabilistic reasoning that underpins the Kalman filter in an easy to digest form.

  • Chapter 3: Gaussian Probabilities Introduces using Gaussians to represent beliefs. Gaussians allow us to implement the algorithms used in the Discrete Bayes Filter to work in continuous domains.

  • Chapter 4: One Dimensional Kalman Filters Implements a Kalman filter by modifying the Discrete Bayesian Filter to use Gaussians. This is a full featured Kalman filter, albeit only useful for 1D problems.

  • Chapter 5: Multidimensional Kalman Filter We extend the Kalman filter developed in the previous chapter to the full, generalized filter.

Reading the book

Installation

License

Contact