I took everything I learned in the past 20 years about state estimation and wrote it in this book. I like step-by-step explanations, so that is how I wrote the book. I tried to make it clear, but also included recent research results, so it has a nice balance of established technology and cutting-edge research. It includes 89 worked examples, 176 written exercises, and 52 computer exercises. Matlab code for the 32 computer examples can be downloaded from this web site. The book is well-documented with 381 references, ranging from historical references from the 1920s, to papers published in 2006.
The textbook Optimal State Estimation is based on my 14 years of industrial experience and my seven years of academic research experience. The book discusses mathematical approaches to the best possible way of estimating the state of a general system. Although the book is firmly grounded in mathematical theory, the approaches that are presented are all given with the goal of eventual implementation in software. The goal of this text is to present state estimation theory in the most clear yet rigorous way possible, while providing enough advanced material and references so that the reader is prepared to contribute new material to the state of the art. Engineers are usually concerned with eventual implementation, and so the material presented is geared towards discrete time systems. However, continuous time systems are also discussed for the sake of completeness, and because there is still the possibility for the implementations of continuous time filters.
State estimation is interesting to engineers for at least two reasons.
- Often an engineer needs to estimate system states in order to implement a state feedback controller. For example, the electrical engineer needs to estimate the winding currents of a motor in order to control its position. The aerospace engineer needs to estimate the attitude of a satellite in order to control its velocity. The economist needs to estimate economic growth in order to control unemployment. The medical doctor needs to estimate blood sugar levels in order to control heart and respiration rates.
- Often an engineer needs to estimate the system states because those states are interesting in their own right. For example, if an engineer wants to measure the health of an engineering system, it may be necessary to estimate the internal condition of the system using a state estimation algorithm. An engineer might want to estimate satellite position in order to more intelligently schedule future satellite activities. An economist might want to estimate economic growth in order to make a political point. A medical doctor might want to estimate blood sugar levels in order to evaluate the health of a patient.
There are many other fine books on state estimation that are available, as discussed in Appendix B of the text. This begs the question: Why yet another text on the topic of state estimation? The reason that this present book has been written is in order to offer a pedagogical approach and perspective that is not available in other state estimation books. In particular, the hope is that this book will offer the following.
- This book offers a straightforward, bottom-up approach that assists the reader in obtaining a clear (but theoretically rigorous) understanding of state estimation. This is reminiscent of Gelb’s approach, which has proven effective for many state estimation students of the past few decades. However, many aspects of Gelb’s book have become outdated. In addition, many of the more recent books on state estimation read more like research monographs and are not entirely accessible to the average engineering student. Hence the need for the present book.
- This book offers simple examples that provide the reader with an intuitive understanding of the theory. Many books present state estimation theory and then follow with examples or problems that require a computer for implementation. However, it is possible to present simple examples and problems that require only paper and pencil to solve. These simple problems allow the student to more directly see how the theory works itself out in practice. Again, this is reminiscent of Gelb’s approach.
- This book provides source code for the examples (based on Matlab) that is available at this web site. A number of other texts supply source code, but it is often on disk or CD, which makes the code subject to obsolescence.
- This book gives a careful treatment of advanced topics in optimal state estimation. These topics include unscented filtering, high order nonlinear filtering, particle filtering, constrained state estimation, reduced order filtering, robust Kalman filtering, and mixed Kalman/H-infinity filtering. Some of these topics are mature, having been introduced in the 1960s, but others of these topics are recent additions to the state of the art. This coverage is not matched in any other books on the topic of state estimation.
There are other books on state estimation that offer some of the above features, but no other books offer all of these features.
The book is divided into four parts:
- The first part of the book covers introductory material.
- The second part of the book covers Kalman filtering, which is the workhorse of state estimation.
- The third part of the book covers H-infinity filtering.
- The fourth part of the book covers filtering for nonlinear systems, including unscented filtering and particle filtering.
The book concludes with three brief appendices:
- Appendix A gives some historical perspectives on the development of the Kalman filter, starting with the least squares work of Roger Cotes in the early 1700s, and concluding with the NASA space program applications of Kalman filtering in the 1960s.
- Appendix B discusses the many other books that have been written on Kalman filtering, including their distinctive contributions.
- Appendix C presents some philosophical and religious speculations on the connections between optimal state estimation and the meaning of life (available here with the permission of John Wiley & Sons).
A list of typos and errors in the book is available here.
A solutions manual is available from the publisher, John Wiley & Sons. Contact them directly if you are a course instructor who is using the book, and they will send you a complimentary copy of the 200+ page solutions manual.
Tutorials and Sample Code
The Matlab code for the examples listed below can be downloaded in state-estimation.zip.
- Example 1.2 – MotorSim.m
- Example 1.3 – LinearSimEx1.m
- Example 3.5 – Chemical.m
- Example 5.1 – DiscreteKFEx1.m
- Example 5.2 – DiscreteKFAlt.m
- Example 5.3 – DiscreteKFEx2.m, DiscreteKFEx2Plot.m
- Example 7.1 – Correlated.m
- Example 7.2 – Colored.m
- Example 7.12 – KalmanConstrained.m
- Example 8.4 – ContEx.m
- Example 9.1 – FixPtSmooth.m
- Example 9.2 – FixLagSmooth.m
- Example 9.3 – FixIntSmooth.m
- Example 10.1 – Multiple.m
- Example 10.2 – Reduced.m
- Example 10.3 – Schmidt.m
- Example 10.4 – Robust.m
- Example 11.2 – HinfEx1a.m, HinfEx1b.m
- Example 11.3 – HinfContEx1a.m, HinfContEx1b.m
- Example 12.1 – AddHinfEx1.m
- Example 12.2 – AddHinfEx3.m
- Example 12.3 – AddHinfConstr.m, AddHinfConstrMonte.m
- Example 13.1 – MotorKalman.m
- Example 13.2 – ExtendedBody.m, HybridBody.m
- Example 13.3 – Hybrid2.m
- Example 13.4 – Parameter.m
- Example 14.1 – UnscentedEx.m
- Example 14.2 – HybridUKF.m
- Example 14.3 – HybridSimplex.m
- Example 15.1 – ParticleEx1.m
- Example 15.2 – ParticleEx2.m
- Example 15.3 – ParticleEx3.m
- Example 15.4 – ParticleEx4.m
- Example 15.5 – ParticleEx5.m
- Householder transformation software – House1.m
- Modified Gram Schmidt software – MGS.m