Derivación detallada y simulación del algoritmo del filtro Kalman extendido (EKF) (Matlab)
Nombre: Wang Keyi
ID de estudiante: 20021110373T
Reimpreso de: /gangdanerya/article/details/105105611
Introducción a Embedded Cow Presenta la derivación detallada, las limitaciones y la simulación de MATLAB del algoritmo del filtro de Kalman extendido (EKF).
Filtro de Kalman extendido de nariz de vaca integrado (EKF)
Texto de vaca integrado
El algoritmo de filtro de Kalman extendido es la forma más directa de resolver problemas de estimación de estado no lineal. Método de procesamiento, aunque el EKF no es el filtro "óptimo" más preciso, se ha aplicado con éxito a muchos sistemas no lineales durante las últimas décadas. Por lo tanto, cuando aprenda problemas de filtrado no lineal, debe comenzar con EKF.
El algoritmo EKF realiza la expansión de Taylor de la función no lineal, luego omite los términos de orden superior y retiene el término de primer orden del término de expansión, logrando así la linealización de la función no lineal y finalmente la aproxima mediante el algoritmo de filtro de Kalman. Estimaciones de estado y estimaciones de varianza del sistema.
1. Derivación detallada del algoritmo EKF
Tenga en cuenta que la derivación de EKF se refiere a la tesis doctoral de Huang Wei "Investigación sobre la aplicación de CKF y filtrado robusto en la estimación de la actitud de las aeronaves", en qué EKF, UKF y CKF y otros algoritmos se explican en detalle y vale la pena leerlos.
Cuando comparamos los algoritmos KF y EKF, podemos encontrar:
2. Limitaciones del algoritmo EKF:
La linealización de este algoritmo introducirá etapas errores y conducir a La precisión del filtrado disminuye. Al mismo tiempo, cuando el error del estado inicial es grande o el modelo del sistema es altamente no lineal, la precisión del filtrado se verá seriamente afectada o incluso divergirá.
Es necesario calcular la matriz jacobiana, que es compleja y requiere una gran cantidad de cálculos, lo que afecta el rendimiento en tiempo real del sistema y también conduce a una estabilidad numérica deficiente del algoritmo EKF.
Cuando el sistema tiene situaciones complejas como discrepancia de modelo, interferencia de medición, pérdida de medición, retraso de medición o mutación de estado, el algoritmo EKF tiene poca robustez.
3. Simulación de Matlab:
borrar todo; clc ? ;w=sqrt(Q)*randn(1,tf);?
R = 1; v=sqrt(R)*randn(1,tf);
P = ojo(1);
x=zeros(1,tf);
Xnew=zeros(1,tf);
x(1,1) =0.1;?
Xnew(1,1)=x(1,1);
z=zeros(1,tf);
z( 1)=x(1,1)^2/20 v(1);
zjian=zeros(1,tf);
zjian(1,1)=z( 1);
para k = 2: tf
Sistema de simulación
x(:,k) = 0.5 * x(:,k-1) ( 2.5 * x(:,k-1) / (1 x(:,k-1).^2)) 8 * cos(1.2*(k-1)) w(k-1);?
z(k) = x(:,k).^2 / 20 v(k);
EKF comienza
Xpre = 0.5*Xnew(:,k- 1) 2.5*Xnew(:,k-1)/(1 Xnew(:,k-1).^2) 8 * cos(1.2*(k-1));?
zjian = Xpre.^2/20;
F = 0,5 2,5 * (1-Xnuevo.^2)/((1 Xnuevo.^2).^2);
H = Xpre/10;
PP=F*P*F' Q;?
Kk=PP*H'*inv(H*PP*H' R);
Xnew(k)=Xpre Kk*(z(k)-zjian);
P=PP-Kk*H*PP;
fin
? t = 2: tf;?
?figura; trama(t, x(1, t), 'b', t, Xnew(1, t), 'r*') ;? legend('valor real', 'valor estimado de EKF');
Resultados de la simulación: