Formatting changes, fixing links to point to new github repository name.

This commit is contained in:
Roger Labbe 2014-05-16 21:34:32 -07:00
parent 2a019452d7
commit ba6e3e8a74
2 changed files with 43 additions and 44 deletions

View File

@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:43416a14f959d23aa804ae91a3c213fef3293323bbf36835c5a5ed68028f3374"
"signature": "sha256:904648935772a4e2b7f50beb0640fe975e181c01449eba0fcca208b9c563a95c"
},
"nbformat": 3,
"nbformat_minor": 0,
@ -23,13 +23,11 @@
"#Introduction\n",
"##### Version 0.0\n",
"\n",
"testthis\n",
"\n",
"The Kalman filter was introduced to the world via papers published in 1958 and 1960 by Rudolph E Kalman. This work built on work by Nobert Wiener. Kalman's early papers were extremely abstract, but researchers quickly realized that the papers described a very practical technique to filter noisy data. From then until now it has been an ongoing topic of research, and there are many books and papers devoted not only to the basics, but many specializations and extensions to the technique. If you are reading this, you have likely come across some of them.\n",
"\n",
"If you are like me, you probably find them nearly impenetrable. I find that almost all start with very abstract math, assume familiarity with notation and naming conventions that I haven't seen before, and focus heavily on proof rather than exposition and teaching. This is perhaps understandable, but it is a regrettable situation and not necessary. \n",
"\n",
"After struggling through this material for some time, things finally began making sense. A majority of my 'aha' moments were due to implementing and experimenting with various simple filters. What to make of an equation like $K_k=P_{k}^{-}H^{T}_{k}[H_k P^{-}_{k} H^{T}_{k} + R_k]^{-1}$ is initially puzzing. This is especially true when it pops out as the result of two to three pages of linear algrebra, and each variable is given only a very abstract, mathematically rigorous definition. One book I have doesn't bother to define $R_k$ despite using it throuout its 4 pages of derivation of K. If instead I tell you that K is just a scaling factor for choosing how much of a measurement and how much of a prediction to use in the filter, what K is becomes obvious (although perhaps the computation is still a bit mysterious). After implementing a few Kalman filters for toy problems and varying the values of various matrices and constants I developed both an intuitive and fairly deep understanding of how Kalman filters work. This knowledge is indispensible; it is trivial to code the handful of linear equations for a Kalman filter, and they never change. I do mean a handful - you can implement the simplest Kalman filter in 10 lines of code. \n",
"After struggling through this material for some time, things finally began making sense. A majority of my 'aha' moments were due to implementing and experimenting with various simple filters. What to make of an equation like $K_k=P_{k}^{-}H^{T}_{k}[H_k P^{-}_{k} H^{T}_{k} + R_k]^{-1}$ is initially puzzing. This is especially true when it pops out as the result of two to three pages of linear algrebra, and each variable is given only a very abstract, mathematically rigorous definition. One book I have doesn't bother to define $R_k$ despite using it throughout its 4 pages of derivation of K. If instead I tell you that K is just a scaling factor for choosing how much of a measurement and how much of a prediction to use in the filter, what K is becomes obvious (although perhaps the computation is still a bit mysterious). After implementing a few Kalman filters for toy problems and varying the values of various matrices and constants I developed both an intuitive and fairly deep understanding of how Kalman filters work. This knowledge is indispensible; it is trivial to code the handful of linear equations for a Kalman filter, and they never change. I do mean a handful - you can implement the simplest Kalman filter in 10 lines of code. \n",
" "
]
},
@ -292,13 +290,13 @@
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x173a5d0>"
"<IPython.core.display.HTML at 0xe77590>"
]
}
],
"prompt_number": 2
"prompt_number": 1
}
],
"metadata": {}

View File

@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:a0a265824bc94f8854fda3508ed1e85d9bc00b1da6aed1fa64fc35d9db5e80bf"
"signature": "sha256:0aff0f4e48d4c08098fa28ff7a494cb7eb2ce3c107a5a3a665b52c955077fd1c"
},
"nbformat": 3,
"nbformat_minor": 0,
@ -17,94 +17,95 @@
" <p>\n",
"Table of Contents\n",
"-----\n",
"* [**Preface**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/master/Preface.ipynb)\n",
"[**Preface**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/master/Preface.ipynb)\n",
"\n",
" Motivation for the book. Where to download, how to use.\n",
"Motivation for the book. Where to download, how to use.\n",
"\n",
"\n",
"* [**Introduction**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-Filters-and-Random-Signals-in-Python/master/Introduction.ipynb)\n",
"[**Introduction**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/master/Introduction.ipynb)\n",
" \n",
" Introduction to the Kalman filter. Explanation of the idea behind this book.\n",
"Introduction to the Kalman filter. Explanation of the idea behind this book.\n",
"Yes, it is more or less the preface restated. will edit and delete one or the other.\n",
"\n",
"\n",
"* [**Chapter 1: The g-h Filter**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-Filters-and-Random-Signals-in-Python/master/g-h_filter.ipynb)\n",
"[**Chapter 1: The g-h Filter**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/master/g-h_filter.ipynb)\n",
"\n",
" 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. \n",
"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. \n",
"\n",
"\n",
"* [**Chapter 2: The Discrete Bayes Filter**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-Filters-and-Random-Signals-in-Python/master/histogram_filter.ipynb)\n",
"[**Chapter 2: The Discrete Bayes Filter**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/master/histogram_filter.ipynb)\n",
"\n",
" Introduces the Discrete Bayes Filter. From this you will learn the probabilistic reasoning that underpins the Kalman filter in an easy to digest form.\n",
"Introduces the Discrete Bayes Filter. From this you will learn the probabilistic reasoning that underpins the Kalman filter in an easy to digest form.\n",
" \n",
"\n",
"* [**Chapter 3: Gaussian Probabilities**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-Filters-and-Random-Signals-in-Python/master/Gaussians.ipynb)\n",
"[**Chapter 3: Gaussian Probabilities**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/master/Gaussians.ipynb)\n",
"\n",
" Introduces using Gaussians to represent beliefs. Gaussians allow us to implement the algorithms used in the Discrete Bayes Filter to work in continuous domains.\n",
"Introduces using Gaussians to represent beliefs. Gaussians allow us to implement the algorithms used in the Discrete Bayes Filter to work in continuous domains.\n",
"\n",
"\n",
"* [**Chapter 4: One Dimensional Kalman Filters**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-Filters-and-Random-Signals-in-Python/master/Kalman_Filters.ipynb)\n",
"[**Chapter 4: One Dimensional Kalman Filters**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/master/Kalman_Filters.ipynb)\n",
"\n",
" 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. \n",
"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. \n",
" \n",
"\n",
"* [**Chapter 5: Multidimensional Kalman Filter**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-Filters-and-Random-Signals-in-Python/master/Multidimensional_Kalman_Filters.ipynb)\n",
"[**Chapter 5: Multidimensional Kalman Filter**](http://nbviewer.ipython.org/urls/raw.github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python/master/Multidimensional_Kalman_Filters.ipynb)\n",
"\n",
" We extend the Kalman filter developed in the previous chapter to the full, generalized filter. \n",
"We extend the Kalman filter developed in the previous chapter to the full, generalized filter. \n",
"\n",
"\n",
"* [**Chapter 6: Kalman Filter Math**](not implemented)\n",
"[**Chapter 6: Kalman Filter Math**](not implemented)\n",
"\n",
" We gotten about as far as we can without forming a strong mathematical foundation. This chapter is optional, especially the first time, but if you intend to write robust, numerically stable filters, or to read the literature, you will need to know this.\n",
"We gotten about as far as we can without forming a strong mathematical foundation. This chapter is optional, especially the first time, but if you intend to write robust, numerically stable filters, or to read the literature, you will need to know this.\n",
" \n",
"\n",
"* [**Chapter 7: Designing Kalman Filters**](not implemented)\n",
"[**Chapter 7: Designing Kalman Filters**](not implemented)\n",
"\n",
" Building on material in Chapter 5, walks you through the design of several Kalman filters. Discusses, but does not solve issues like numerical stability.\n",
"Building on material in Chapter 5, walks you through the design of several Kalman filters. Discusses, but does not solve issues like numerical stability.\n",
" \n",
"\n",
"* [**Chapter 8: Extended Kalman Filters**](not implemented)\n",
"[**Chapter 8: Extended Kalman Filters**](not implemented)\n",
" \n",
" Kalman filter as covered only work for linear problems. Extended Kalman filters (EKF) are the most common approach to linearizing non-linear problems.\n",
"Kalman filter as covered only work for linear problems. Extended Kalman filters (EKF) are the most common approach to linearizing non-linear problems.\n",
"\n",
"\n",
"* [**Chapter 9: Unscented Kalman Filters**](not implemented)\n",
"[**Chapter 9: Unscented Kalman Filters**](not implemented)\n",
" \n",
" Unscented Kalman filters (UKF) are a recent development in Kalman filter theory. They allow you to filter nonlinear problems without requiring a closed form solution like the Extended Kalman filter requires.\n",
"Unscented Kalman filters (UKF) are a recent development in Kalman filter theory. They allow you to filter nonlinear problems without requiring a closed form solution like the Extended Kalman filter requires.\n",
"\n",
"\n",
"* [**Chapter 10: Numerical Stability**](not implemented)\n",
"[**Chapter 10: Numerical Stability**](not implemented)\n",
" \n",
" EKF and UKF are linear approximations of nonlinear problems. Unless programmed carefully, they are not numerically stable. We discuss some common approaches to this problem.\n",
"EKF and UKF are linear approximations of nonlinear problems. Unless programmed carefully, they are not numerically stable. We discuss some common approaches to this problem.\n",
" \n",
" \n",
"* [**Chapter 11: Smoothing**](not implemented)\n",
"[**Chapter 11: Smoothing**](not implemented)\n",
" \n",
" Kalman filters are recursive, and thus very suitable for real time filtering. However, they work well for post-processing data. We discuss some common approaches.\n",
"Kalman filters are recursive, and thus very suitable for real time filtering. However, they work well for post-processing data. We discuss some common approaches.\n",
" \n",
" \n",
"* [**Chapter 12: Control Theory**](not implemented)\n",
"[**Chapter 12: Control Theory**](not implemented)\n",
"\n",
" This book focuses on tracking and filtering, but Kalman filters have an input for control. We discuss using Kalman filters to control devices like robots, CNC machinery and so on.\n",
"This book focuses on tracking and filtering, but Kalman filters have an input for control. We discuss using Kalman filters to control devices like robots, CNC machinery and so on.\n",
" \n",
" \n",
"* [**Chapter 13: Particle Filters**](not implemented)\n",
"[**Chapter 13: Particle Filters**](not implemented)\n",
" \n",
" Particle filters uses a Monte Carlo technique to \n",
"Particle filters uses a Monte Carlo technique to \n",
" \n",
" \n",
" * [**Chapter 13: Multihypothesis Tracking**](not implemented)\n",
"[**Chapter 14: Multihypothesis Tracking**](not implemented)\n",
" \n",
" stuff\n",
"description\n",
"\n",
"\n",
"* [**Appendix: Python and NumPy**](not implemented)\n",
"[**Appendix: Python and NumPy**](not implemented)\n",
"\n",
" Brief introduction of Python and how it is used in this book. Explanation of my use of NumPy matrices.\n",
"Brief introduction of Python and how it is used in this book. Explanation of my use of NumPy matrices.\n",
" \n",
"\n",
"* [**Appendix: Statistics**](not implemented)\n",
"[**Appendix: Statistics**](not implemented)\n",
"\n",
" Brief review of statistical math. \n",
"Brief review of statistical math. \n",
" \n",
"\n",
"### Github repository\n",