# What's the difference between Adaptive Control and a Kalman Filter?

From my basic understanding of Adaptive Control, I understand that it uses the error and the velocity of the error to approximate the error in the solution space of a problem, thus allowing for guaranteed convergence under certain conditions and rapid adaptation to changing conditions. I've accumulated this knowledge basically from anecdotal evidence and from this video.

From my basic understanding of a Kalman Filter, it takes into account the error from past measurements to estimate the current state with greater accuracy.

From my flawed perspective, they seem almost identical, but what's the difference between the two? I've heard anecdotally that they are duals of each other, but that the Kalman Filter is only for linear systems? Is this close to the truth?

A mathematically pure Kalman filter only applies to (discrete or continuous) linear system of the form $x_k = F_k x_{k-1} + B_k u_k + w_k$ where $F_k$ and $B_k$ are matrices, $u_k$ in the known control signal, $w_k$ is noise with a Gaussian distribution, and the observed signal is $z_k = H_k x_k + v_k$ with a matrix $H_k$ and noise $v_k$. However, the extended Kalman filter overcomes these restrictions sufficiently well, so that this is no real limitation. However, what stays true is that there should already be a sufficiently accurate model of the system. The noise terms allow to compensate for some model errors, but the overall model still has to be sufficiently predictive, because no adaptive model adjustment is performed, only the current state variables are estimated adaptively.
Technically a controller and observer are different by definition. I will illustrate the difference between an adaptive observer, versus a classical observer here. In the classical observer you have the observed signal , $z_k$ and you estimate $x_k$ in real time. An adaptive observer would also estimate plant parameters in real time as well, say $F$ in this example (lets not let it change with time). So not only would you have an estimate $\hat x_k$ but also an estimate of $\hat F_k$ as well (which can change with each time step as more information is obtained). Look at work by Narendra, Annaswamy, etc.