JuliaCon 2023

Generating Extended Kalman Filters with Julia
07-27, 11:00–11:30 (US/Eastern), 32-123

Extended Kalman filters are super useful in robotics and embedded systems, but require the derivation of large state derivative matrices. Julia's symbolic manipulation facilities can make this much easier! I will introduce TinyEKFGen.jl, a Julia package that converts nice Julia expressions to embeddable C-code that works with the TinyEKF library, and show some examples usages (including one that runs in space!).

The Extended Kalman filter (EKF) is a commonly-used recursive filter that finds use in sensor fusion and state estimation applications, like robotics and spacecraft control. The filter takes in noisy observations, compares them to a provided model, and updates an estimate of a system's state. A key part of the state update process is computing a state transition matrix, which can be become large when a large state or many observations are used. In systems with non-linear dynamics or observations, the elements of the matrix can be complicated expression. Julia's excellent symbolic manipulation capabilities can greatly simplify the generation of these matrices, speedy up development time of new EKFs. This approach has proven really useful at the satellite company where I work, providing a fun example of Julia in an enterprise setting.

I wrote a package called TinyEKFGen to generate EKF matrices for use in satellite attitude estimation, but also for any other estimation system that is suited to Kalman filtering. The package takes in Julia code describing a system's state, dynamics, and measurements, and emits C code that works with the TinyEKF library. This code is then suitable for use on embedded systems that with limited memory or that don't allow dynamic allocation. In this talk I'll show how the TinyEKFGen code works and run through some examples Kalman filter programs, including a tumbling satellite!

Thatcher is a Julia fan and a former physics student who has spent the last four years building and refining attitude determination and control systems as a Flight Dynamics Engineer at a satellite communications startup.