# Flying to the Moon with the Kalman Filter

Last month I began my first semester of Georgia Tech's MSc in Computer Science with a concentration in Computational Perception and Robotics. In the course AI for Robotics, which is taught by Google X founder Sebastian Thrun, we are reading about and implementing the Kalman filter.

I found the following article, which I've summarized below, of particular interest (link here).

**Vetrisano, Massimo, Willem Van der Weg, and Massimiliano Vasile. "Navigating to the Moon along low-energy transfers." Celestial Mechanics and Dynamical Astronomy (2012): 1-29.**

This paper discusses utilizing the Kalman Filter in the navigation process to the Moon along a Weak Stability Boundary transfer trajectory (or low-energy transfer, a route in space that enables spacecraft to change orbits with minimal fuel.) The paper illustrates the challenge of navigating to different orbits as there is uncertainty in both the orbit determination process and in controlling the thrust vector. Tackling the first challenge, three filter techniques were introduced, analyzed, and compared using the Monte Carlo simulation: Kalman filter, extended Kalman filter, and unscented Kalman filter. The goal is to determine which one of these techniques is the most suitable for the navigation.

The paper took one of the satellite missions (ESMO) within ESA’s Educational Satellite Program as a case study. As we learned in the lectures with Prof. Thrun, we always have an initial state; the initial state of ESMO is represented by multi-dimension coordinates as shown in the figure below:

We also worked through the Kalman filter of one and two-dimensional worlds, and we saw how we can represent the covariance in different ways depending on given dimensions. This paper deals with a Kalman filter in the navigation process by taking into consideration other variables when calculating the covariance matrix. For example, the station on earth is the initial state which includes latitude and longitude (which are represented by λ and υ, respectively); earth angular speed is Ω. Θ is 280.4606 + Ωt where t is the time (in MJD2000).

To calculate the velocity (x dot) at time (t), we calculate the sum of (2x1) matrices as explained above. Let us take a look at the matrices:

- The f(x(t), t) it is our recursive function to be calculated at different time sets.

- Another interesting variable that needs to be considered is the solar pressure () which can be calculated as follows:

- The authors (2012: 31) noted that “A and M are the satellite cross section area and mass, respectively. CR is the reflectivity coefficient; and F is the solar flux.”

The Extended Kalman Filter (EKF) is also used in the comparison. The basic idea of the EKF is that it is linearizing the filtering process (I found an interactive tutorial regarding EFK here. As we learned in the lectures about the Kalman filter, the Kalman filter technique is applied to linear processes, whereas EFK is applied to non-linear processes.

The paper also explained the Unscented Kalman Filter (UKF). The technique has a lower margin of error in calculating the mean and the covariance matrix, which makes it a better technique over the EFK.

Lastly, the paper compared the three techniques with the Monte Carlo simulation. They used 10 million samples to validate the accuracy of each filter. The findings were interesting:

UKF is considered the best technique as it has lower computational cost and error.