Notas de estudio de ESKF

Cinemática de estado de error de sistemas controlados por IMU

Introducción a los filtros de Kalman de estado de error

  En la formulación del filtro de estado de error hablamos del estado verdadero, el estado nominal y el valor del estado de error, donde el estado verdadero se representa como una combinación apropiada (suma lineal, producto de cuaterniones o producto de matriz) del estado nominal y el error estado. La idea es tratar el estado nominal como una señal grande (integrable de forma no lineal) y el estado de error como una señal pequeña (por lo tanto, integrable linealmente y susceptible de filtrado gaussiano lineal).

  El filtro de estado de error se puede explicar así. Por un lado, los datos IMU de alta frecuencia um \textbf{u}_mtumestá integrado en el estado nominal x \textbf{x}x pulg. El estado nominal no considera el término de ruidow \textbf{w}w y otros posibles defectos del modelo. Por lo tanto, acumulará errores. Estos errores se recopilan en el estado de errorδ x δ\textbf{x}δ x y se estima mediante un filtro de Kalman de estado de error (ESKF), esta vez incluyendo todo el ruido y las perturbaciones. El estado de error consiste en un pequeño semáforo cuya función de evolución está determinada por un sistema dinámico lineal (variante en el tiempo) bien definido cuyas matrices de dinámica, control y medición se calculan a partir de los valores del estado nominal. Paralelamente a la integración del estado nominal, el ESKF predice una estimación gaussiana del estado de error. Solo hace predicciones porque no hay otras medidas disponibles para corregir estas estimaciones. Las correcciones de filtro se realizan cuando llega información más allá de la IMU (por ejemplo, GPS, visión, etc.), lo que permite observar los errores y, por lo general, es mucho más bajo que la etapa de integración. Esta corrección proporciona una estimación gaussiana a posteriori del estado de error. Posteriormente, el promedio del estado de error se inyecta en el estado nominal y luego se restablece a cero. La matriz de covarianza de los estados de error se actualiza convenientemente para reflejar este reinicio. El sistema siempre funcionará así.

Cinemática del sistema de tiempo continuo

Todas las variables en el estado de error Filtro de Kalman:

magnitud del estado de error valor actual valor nominal error combinación Mediciones ruido
colección de variables de estado xt \textbf{x}_tXt x \textbf{x}X d x d\textbf{x}δx_ _ xt = x ⊕ δ x \mathbf x_t=\mathbf x\oplus\delta\mathbf xXt=Xδx_ _
Ubicación pt \mathbf{p}_tpagt p \mathbf{p}pag δ p \delta \mathbf{p}pag_ _ pt = pags + δ pags \mathbf{p}_t=\mathbf{p}+\delta\mathbf{p}pagt=pag+pag_ _
velocidad vt \mathbf{v}_tvt v\mathbf{v}v δ v \delta \mathbf{v}v_ _ vt = v + δv \mathbf{v}_t=\mathbf{v}+\delta\mathbf{v}vt=v+v_ _
Cuaternio qt \mathbf{q}_tqt q \mathbf{q}q δ q \delta\mathbf{q}q_ _ qt = q ⊗ δ q \mathbf q_{t}=\mathbf q\otimes\delta\mathbf qqt=qq_ _
matriz de rotación R t \mathbf{R}_tRt R\mathbf{R}R δ R \delta \mathbf{R}δR _ R t = R δ R \mathbf{R}_{t}=\mathbf{R}\delta\mathbf{R}Rt=R δ R
angulo vectorial δ θ \delta\boldsymbol{\theta}yo _ δ q = mi δ θ / 2 δ R = mi [ δ θ ] × \begin{array}{c}\delta\mathbf{q}=e^{\delta\boldsymbol{\theta}/2}\\ \ delta\mathbf{R}=e^{[\delta\boldsymbol{\theta}]_\times}\end{matriz}q_ _=mi/ 2δR _=mi[ re θ ]×
sesgo del acelerómetro sobre \mathbf{a}_{bt}abt _ ab \mathbf{a}_{b}asegundo δ ab δ\textbf{a}_{b}un _segundo abt = ab + δ ab \mathbf{a}_{bt}=\mathbf{a}_{b}+\delta\mathbf{a}_{b}abt _=asegundo+un _segundo aw \mathbf{a}_{w}aw
Sesgo del giroscopio ω bt \omega_{bt}Vayabt _ ω segundo \omega_{b}Vayasegundo δ ω segundo δ\omega_{b}hacer _segundo ω segundo = ω segundo + δ ω segundo \omega_{bt}=\omega_{b}+\delta \omega_{b}Vayabt _=Vayasegundo+hacer _segundo ω w \omega_{w}Vayaw
peso vectorial gt \mathbf{g}_{t}gramot g \mathbf{g}gramo δ gramo δ\textbf{g}g_ _ gt = gramo + δ gramo \mathbf{g}_{ t}=\mathbf{g}+\delta\mathbf{g}gramot=gramo+g_ _
aceleración en \mathbf{a}_{t}at soy \mathbf{a}_{m}am un \mathbf{a}_{n}an
velocidad angular ω t \omega_{t}Vayat ω metro \omega_{m}Vayam ω n \omega_{n}Vayan

Cinemática de Bienes Raíces

Configuración predeterminada:
p ̇ t = vtv ̇ t = atq ̇ t = 1 2 qt ⊗ ω ta ̇ bt = aw ω ̇ bt = ω wg ̇ t = 0 \begin{array}{l}\dot{\ mathbf{p }}_t=\mathbf{v}_t\\ \dot{\mathbf{v}}_t=\mathbf{a}_t\\ \dot{\mathbf{q}}_t=\frac{1} {2} q_t\otimes\mathbf{\omega}_t\\ \dot{\mathbf{a}}_{bt}=\mathbf{a}_w\\ \dot{\mathbf{\omega}}_{bt }=\ mathbf{\omega}_w\\ \dot{\mathbf{g}}_t=0\end{matriz}pag˙t=vtv˙t=atq˙t=21qtVayata˙bt _=awVaya˙bt _=Vayawgramo˙t=0
  Lecturas del sensor de aceleración en el sistema de coordenadas del cuerpo am \mathbf{a}_{m}amy la lectura del sensor de velocidad angular wm w_{m}wmSe utiliza para obtener la aceleración real en \mathbf{a}_{t} del robot en el momento actualaty la velocidad angular wt w_{t}wt. Debido al ruido del propio sensor, soy \mathbf{a}_{m}amy wm w_{m}wmDefina la ecuación
am = R t ⊤ ( at − gt ) + abt + an ω m = ω t + ω bt + ω n \begin{array}{l}\mathbf{a}_m=\mathbf{ .R}_t ^\top(\mathbf{a}_t-\mathbf{g}_t)+\mathbf{a}_{bt}+\mathbf{a}_n\\ \mathbf{\omega}_m=\mathbf {\omega }_t+\mathbf{\omega}_{bt}+\mathbf{\omega}_n\end{matriz}am=Rt( untgramot)+abt _+anVayam=Vayat+Vayabt _+Vayan
Interpretación R t ≜ R { qt } \mathbf{R}_{t}\triangle\mathbf{R}\{\mathbf{q}_{t}\}RtR { qt} definición
en = R t ( am − abt − an ) + gt ω t = ω metro − ω bt − ω n \begin{array}{l}\mathbf{a}_t=\mathbf{R}; _t(\ mathbf{a}_m-\mathbf{a}_{bt}-\mathbf{a}_n)+\mathbf{g}_t\\ \mathbf{\omega}_t=\mathbf{\omega}_m -\mathbf {\omega}_{bt}-\mathbf{\omega}_n\end{matriz}at=Rt( unmabt _an)+gramotVayat=VayamVayabt _Vayan
Entonces
t = vtvt = R t ( am − abt − an ) + gtq ̇ t = 1 2 qt ⊗ ( ω m − ω bt − ω n ) y ̇ bt = aw ω ̇ t = ω wg ̇ t = \begin{ matriz}{l}\dot{\textbf{p}}_t=\textbf{v}_t\\ \textbf{v}_t=\textbf{R}_t(\textbf{a}_m-\textbf {a} _{bt}-\textbf{a}_n)+\textbf{g}_t\\ \dot{\textbf{q}}_t=\frac{1}{2}\textbf{q}_t\ otimes(\ omega_m-\omega_{bt}-\omega_n)\\ \dot{\textbf{a}}_{bt}=\textbf{a}_w\\ \dot{\omega}_t=\omega_w\\ \dot{ \textbf{g}}_t=0\end{matriz}pag˙t=vtvt=Rt( unmabt _an)+gramotq˙t=21qt( aymVayabt _Vayan)a˙bt _=awVaya˙t=Vayawgramo˙t=0
x ˙ t = pie ( xt , tu , w ) {\dot{\mathbf{x}}}_{t}=f_{t}(\mathbf{x}_{t},\mathbf{u}, \mathbf{w})X˙t=Ft( Xt,tu ,w ) , el sistema se ve afectado por la lectura de ruido de la IMUum \mathbf{u}_{m}tumControlado por ruido gaussiano blanco w \textbf{w}función w
xt = [ ptvtqtadgt ] u = [ soy − un ω metro − ω norte ] v = [ aw ω w ] \mathbf{x}_t=\begin{bmatrix}\mathbf{p}_t\\ \mathbf{ v }_t\\ \mathbf{q}_t\\ \mathbf{a}_d\\ \mathbf{g}_t\\ \end{bmatrix}\quad\mathbf{u}=\begin{bmatrix}\mathbf{ a }_m-\mathbf{a}_n\\ \mathbf{\omega}_m-\mathbf{\omega}_n\end{bmatrix}\quad\mathbf{v}=\begin{bmatrix}\mathbf{a} _w \\ \mathbf{\omega}_w\end{bmatriz}Xt= pagtvtqtaregramot tu=[amanVayamVayan]v=[awVayaw
]

  Vector de gravedad gt \mathbf{g}_{t}gramotestimado por el filtro. El sistema parte de una orientación inicial fija y arbitrariamente conocida, es decir, qt ( t = 0 ) = q 0 \mathbf{q}_t(t=0)=\mathbf{q}_0qt( t=0 )=q0, dado que la dirección inicial generalmente no está en el plano horizontal, el vector de gravedad inicial generalmente se desconoce y la dirección inicial generalmente se establece en q 0 = ( 1 , 0 , 0 , 0 ) \mathbf{q}_0=(1 ,0,0, 0)q0=( 1 ,0 ,0 ,0 ) Por lo tanto,R 0 = R { q 0 } = yo \mathbf{R}_0=\mathbf{R}\{\mathbf{q}_0\}=\mathbf{I}R0=R { q0}=yo _ También es posible eliminar todas las ecuaciones relacionadas con la gravedad del sistema y usar un enfoque más tradicional, que asume que el vector de gravedad esg = Δ ( 0 , 0 , − 9.8 xx ) \mathbf{g}\stackrel{\Delta }{= }\izquierda(0,0,-9.8xx\derecha)gramo=D( 0 ,0 ,9.8 xx ) , dondexx xxxx es el número apropiado de lugares decimales para el vector de gravedad en el sitio experimental, asumiendo la dirección inicialq 0 \mathbf{q}_0q0es incierto.

cinemática de estado nominal

  p ˙ = vv ˙ = R ( am − ab ) +
gq ˙ = 1 2 a ⊗ ( ω metro − ω segundo ) a ˙ segundo = 0 ω ˙ segundo = 0 g ˙ = 0 \begin{array}{l}\dot{\mathbf{p}}=\mathbf{v}\\ \dot{\mathbf{v}}=\mathbf{R}(\mathbf{ a }_m-\mathbf{a}_b)+\mathbf{g}\\ \dot{\mathbf{q}}=\frac{1}{2}\mathbf{a}\otimes(\mathbf{\omega } _m-\mathbf{\omega}_b)\\ \dot{\mathbf{a}}_b=0\\ \dot{\mathbf{\omega}}_b=0\\ \dot{\mathbf{g} } =0\end{matriz}pag˙=vv˙=R ( unmasegundo)+gramoq˙=21a( aymVayasegundo)a˙segundo=0Vaya˙segundo=0gramo˙=0

cinemática de estado de error

δ ̇ pags = δ v δ ̇ v = − R [ am − ab ] × δ θ − R δ ab + δ gramo − R an δ ̇ θ = − [ ω metro   − { \textbf{a}}_w\\ &\dot{\delta}{ {\ omega}}_b={\omega}_w\\ &{ { \delta}}{\dot {\textbf{g}}}= 0\end{alineado}
dpag _=v_ _d˙v _=R[ unmasegundo]×yo _R δ asegundo+g_ _Ra _nd˙ θ=[ aymVayasegundo]×yo _hacer _segundoVayand˙ unsegundo=awd˙ ωsegundo=Vayawdgramo˙=0
Entre ellos, las ecuaciones de los errores de velocidad y orientación requieren cierta manipulación de las ecuaciones de error de los vectores de velocidad angular y gravedad para obtener dinámicas linealizadas.

Cinemática del sistema en tiempo discreto

  La ecuación diferencial anterior debe integrarse en una ecuación en diferencias para considerar el intervalo de tiempo discreto ∆t>0, y el método de integración puede ser diferente. En algunos casos, se encuentran disponibles soluciones exactas de forma cerrada. En otros casos, se pueden utilizar métodos de integración numérica de diferente precisión. Ver los detalles relevantes sobre el método de integración en el apéndice.

Es necesario integrar los siguientes subsistemas:

  1. estado nominal.
  2. estado de error
    (a) Parte determinista: dinámica de estado y control.
    (b) Parte estocástica: ruido y perturbación.

  Para estados nominales y de error, es necesario integrar las partes determinística y estocástica. La parte determinista incluye dinámica de estado y control, y la parte estocástica incluye ruido y perturbaciones. Para diferentes subsistemas y métodos de integración, se requiere una selección y ajuste adecuados para obtener resultados precisos.

Cinemática del Estado Nominal

pags ← pags + v Δ t + 1 2 ( R ( am - ab ) + gramo ) Δ t 2 v ← v + ( R ( am - ab ) + gramo ) Δ tq ← q ⊗ q { ( ω metro - ω segundo ) Δ t } ab ← abg ← g \begin{array}{l}\textbf{p}\leftarrow\textbf{p}+\textbf{v}\delta t+\frac{1}{2}(\textbf{ R}(\textbf{a}_m-\textbf{a}_b)+\textbf{g})\Delta t^2\\ \textbf{v}\leftarrow\textbf{v}+(\textbf{R} (\textbf{a}_m-\textbf{a}_b)+\textbf{g})\Delta t\\ \textbf{q}\leftarrow\textbf{q}\otimes\textbf{q}\{(\ omega_m-\omega_b)\Delta t\}\\ \textbf{a}_b\leftarrow\textbf{a}_b\\ \textbf{g}\leftarrow\textbf{g}\end{matriz}pagpag+v Δ t+21( R ( unmasegundo)+g ) Δ t2vv+( R ( unmasegundo)+g ) Δ tqqq {( omVayasegundo) Δ t }asegundoasegundogramog

donde x ← f ( x , ∙ ) x\leftarrow f(x,\bullet)Xf ( x ,) significaxk + 1 = f ( xk , ∙ k ) x_{k+1}=f(x_k,\bullet_k)Xk + 1=f ( xk,k) escriba actualización de tiempo,R ≜ R { q } \mathbf{R} \triangleq\mathbf{R}\{\mathbf{q}\}RR { q } es la dirección nominal actualq \mathbf{q}matriz de rotación relacionada con q ,q { v } \mathbf{q}\{v\}q { v } es la rotación vvconEl cuaternión asociado con v .

Cinemática de los estados de error

δ pags ← δ pags + δ v Δ t δ v ← δ v + ( - R [ am - ab ] × δ θ - R δ ab + δ gramo ) Δ t + vi δ θ ← R ⊤ { ( ω metro - ω segundo ) Δ t } δ θ - δ ω segundo Δ t + θ yo δ ab ← δ ab + ai δ ω segundo ← δ ω segundo + ω yo δ gramo ← δ gramo \begin{array}{l}\delta\textbf {p}\leftarrow\delta\textbf{p}+\delta\textbf{v}\Delta t\\ \delta\textbf{v}\leftarrow\delta\textbf{v}+(-\textbf{R}\ izquierda[\textbf{a}_m-\textbf{a}_b\right]\times\delta\ballsymbol{\theta}-\textbf{R}\delta\textbf{a}_b+\delta\textbf{g}) \Delta t+\textbf{v}_\textbf{i}\\\delta\ballsymbol{\theta}\leftarrow\textbf{R}^\top\left\{(\omega_m-\omega_b)\Delta t\ derecha \}\delta\símbolo de bola{\theta}-\delta\omega_b\Delta t+\símbolo de bola{\theta}_\textbf{i}\\ \delta\textbf{a}_b\leftarrow\delta\textbf{ a}_b+ \textbf{a}_\textbf{i}\\ \delta \omega_b\leftarrow\delta \omega_b+\omega_\textbf{i}\\ \delta\textbf{g}\leftarrow\delta\textbf{g }\end {matriz}pag_ _pag_ _+δ v Δ tv_ _v_ _+( - R[ unmasegundo]×yo _R δ asegundo+δ g ) Δ t+vyoyo _R{ ( aymVayasegundo) Δ t }yo _hacer _segundoΔt _+iyoun _segundoun _segundo+ayohacer _segundohacer _segundo+Vayayog_ _g_ _

Entre ellos, vi \textbf{v}_\textbf{i}vyoθ yo \boldsymbol{\theta}_\textbf{i}iyoai \textbf{a}_\textbf{i}ayosuma ω yo \omega_\textbf{i}Vayayoson impulsos aleatorios que actúan sobre estimaciones de velocidad, dirección y sesgo, modelados mediante un proceso gaussiano blanco. Su media es cero, y la matriz de covarianza se obtiene poniendo un \mathbf{a}_{n}an, ω norte \omega_{n}Vayana ω \mathbf{a}_{\omega}aVayasuma ω ω \omega_{\omega}VayaVayaLa integral de covarianza del paso de tiempo Δ t \Delta tΔ t es infinitesimal
V yo = σ un ~ norte 2 Δ t 2 yo [ metro 2 / s 2 ] Θ yo = σ ω ~ norte 2 Δ t 2 yo [ rad 2 ] UN yo = σ aw 2 Δ t yo [ metro 2 / s 4 ] Ω yo = σ ω w 2 Δ t yo [ rad 2 / s 2 ] \begin{alineado}\textbf{V}_\textbf{i}&=\sigma_{\tilde{a}; _n}^2\Delta t^2\textbf{I}&\quad&[m^2/s^2]\\ \ballsymbol{\Theta}_\textbf{i}&=\sigma_{\tilde{\omega }_n}^2\Delta t^2\textbf{I}&\quad&[rad^2]\\ \textbf{A}_\textbf{i}&=\sigma_{ {a}_w}^2\ Delta t\textbf{I}&\quad&[m^2/s^4]\\ \boldsymbol{\Omega}_\textbf{i}&=\sigma_{ {\omega}_w}^2\Delta t\ textbf {I}&\quad&[rad^2/s^2]\\\end{alineado}VyoelyoAyoOhyo=paga~n2Δt _2 yo=pagVaya~n2Δt _2 yo=pagaw2Δt yo _=pagVayaw2Δt yo _[ metro2 /s2 ][ r un d2 ][ metro2 /s4 ][ r un d2 /s2 ]

其中, σ a ~ n [ m 2 / s 2 ] \sigma_{\tilde{a}_n}[m^2/s^2]paga~n[ metro2 /s2 ],σ ω ~ norte [ rad / s ] \sigma_{\tilde{\omega }_n}[rad/s]pagVaya~n[ r a d / s ] ,σ aw [ metro / s 2 s ] \sigma_{ {a}_w}\left[m/s^2\sqrt{s}\right]pagaw[ m / s2s ]σ ω w [ rad / ss ] \sigma_{ {\omega}_w}\left[rad/s\sqrt{s}\right]pagVayaw[ r a d / ss ] se determinará a partir de la información de la hoja de datos de la IMU o de mediciones experimentales.

Matriz jacobiana y matriz de perturbación del estado de error

  El jacobiano se puede obtener mediante una simple derivación de la ecuación de diferencia de estado de error de la sección anterior. Para escribir estas ecuaciones en forma compacta, considere el vector de estado nominal x \mathbf{x}x , vector de estado de errorδ x \delta\mathbf{x}δ x , vector de entradaum \mathbf{u}_mtumY el vector de impulso de perturbación i \mathbf{i}yo ,dado
x = [ pvqab ω bg ] , δ x = [ δ pags δ v δ θ δ ab δ ω segundo δ gramo ] , um = [ am ω metro ] , yo = [ vi θ iai ω yo ] \ mathbf{ x}=\begin{bmatriz}\mathbf{p}\\ \mathbf{v}\\ \mathbf{q}\\ \mathbf{a}_b\\\mathbf{\omega}_b\\ \mathbf {g }\end{bmatrix},\quad\delta\mathbf{x}=\begin{bmatrix}\delta\mathbf{p}\\\delta\mathbf{v}\\\delta\símbolo de bola{\theta} \ \ \delta\mathbf{a}_b\\ \delta\mathbf{\omega}_b\\ \delta\mathbf{g}\end{bmatrix},\quad\mathbf{u}_m=\begin{bmatrix} \ mathbf{a}_m\\ \mathbf{\omega}_m\end{bmatrix},\quad\mathbf{i}=\begin{bmatrix}\mathbf{v}_\mathbf{i}\\ \símbolo de bola{ \theta}_\mathbf{i} \\\mathbf{a}_\mathbf{i}\\ \mathbf{\omega}_\mathbf{i}\end{bmatriz}X= pagvqasegundoVayasegundog ,δx_ _= pag_ _v_ _yo _un _segundohacer _segundog_ _ ,tum=[amVayam],i= vyoiyoayoVayayo
Define la función inversa:
δ x ← f ( x , δ x , um , i ) = F x ( x , um ) ⋅ δ x + F i ⋅ i \delta\textbf{x}\leftarrow f(\textbf{ x },\delta\textbf{x},\textbf{u}_m,\textbf{i})=\textbf{F}_\textbf{x}(\textbf{x},\textbf{u}_m) \ cdot\delta\textbf{x}+\textbf{F}_\textbf{i}\cdot\textbf{i}δx_ _f ( x ,δ x ,tum,yo )=Fx( X ,tum)δx_ _+Fyoi
Funciones ESKF:
δ x ^ ← F x ( x , um ) ⋅ δ x ^ PAGS ← F x PF x ⊤ + F i Q i F yo ⊤ \begin{array}{l}\hat{ {\ delta } { \mathbf{x}}}\leftarrow\mathbf{F}_{\mathbf{x}}(\mathbf{x},\mathbf{u}_m)\cdot\hat{ {\delta}{\ mathbf { x }}}\\ \mathbf{P}\leftarrow\mathbf{F}_{\mathbf{x}}\mathbf{P}\mathbf{F}_{\mathbf{x}}^{\top} +\ mathbf{F}_{\mathbf{i}}\mathbf{Q}_{\mathbf{i}}\mathbf{F}_{\mathbf{i}}^{\top}\end{matriz}δx_ _^Fx( X ,tum)δx_ _^PAGFxP FX+FyoqyoFi
Por ejemplo, δ x ∼ N { δ x ^ , P } \delta\mathbf{x}\sim\mathcal{N}\{\hat{\delta\mathbf{x}},\mathbf{P}\}δx_ _norte { δx_ _^ ,P }F x \mathbf{F}_{\mathbf{x}}FxF i \mathbf{F}_{\mathbf{i}}Fyoes f ( ) f ()f ( ) con respecto a la matriz jacobiana de los vectores de error y perturbación,Q i \mathbf{Q}_{\mathbf{i}}qyoes la matriz de covarianza del pulso de perturbación.

  A continuación se detallan las expresiones de la matriz jacobiana y la matriz de covarianza mencionadas anteriormente. Todos los valores relacionados con el estado que aparecen aquí se extraen directamente del estado nominal.
F X = ∂ F ∂ δ X ∣ X , um = [ II Δ t 0 0 0 0 0 yo - R [ a m - ab ] × Δ t - R Δ t 0 yo Δ t 0 0 R ⊤ { ( ω metro - ω segundo ) Δ t } 0 − yo Δ t 0 0 0 0 yo 0 0 0 0 0 0 yo 0 0 0 0 0 0 yo ] \textbf{F}_\textbf{x}=\frac{\parcial f} {\parcial\delta\textbf{x}}\bigg|_{\textbf{x},\textbf{u}_m}=\begin{bmatrix}\textbf{I}&\textbf{I}\Delta t&0&0&0&0\ \ 0&\textbf{I}&-\textbf{R}[\textbf{a}_m-\textbf{a}_b]_\times\Delta t&-\textbf{R}\Delta t&0&\textbf{I}\ Delta t\\ 0&0&\textbf{R}^\top\{(\omega_m-\omega_b)\Delta t\}&0&-\textbf{I}\Delta t&0\\ 0&0&0&\textbf{I}&0&0\\ 0&0&0&0&\ textbf{I}&0\\ 0&0&0&0&0&\textbf{I}\end{bmatriz}\\Fx=δ x f x , tum= I00000Yo Δ tI00000R [ unmasegundo]×Δt _R {(omVayasegundo) Δ t }0000- R Δ t0I0000yo Δ t0I00Yo Δ t000yo

F yo = ∂ F ∂ yo ∣ X , um = [ 0 0 0 0 yo 0 0 0 0 yo 0 0 0 0 yo 0 0 0 0 yo 0 0 0 0 ] , Q yo = [ V yo 0 0 0 0 Θ yo 0 0 0 0 UN yo 0 0 0 0 Ω yo ] \textbf{F}_\textbf{i}=\frac{\parcial f}{\parcial\textbf{i}}\bigg|_{\textbf{ x},\textbf{u}_m}=\begin{bmatrix}0&0&0&0\\\textbf{I}&0&0&0\\ 0&\textbf{I}&0&0\\ 0&0&\textbf{I}&0\\ 0&0&0&\textbf{I }\\ 0&0&0&0\end{bmatrix}\quad,\quad \textbf{Q}_\textbf{i}=\begin{bmatrix}\textbf{V}_\textbf{i}&0&0&0\\ 0&\boldsymbol{\ Theta}_\textbf{i}&0&0\\ 0&0&\textbf{A}_\textbf{i}&0\\ 0&0&0&\boldsymbol{\Omega}_\textbf{i}\end{bmatrix}Fyo=yo f x , tum= 0I000000I000000I000000I0 ,qyo= Vyo0000elyo0000Ayo0000Ohyo

Fusión de IMU con datos de sensores complementarios

  ESKF se corrige cuando hay más variedad de información que IMU, como GPS o información visual. En un sistema bien diseñado, esto debería hacer observables los sesgos de la IMU y permitir que el ESKF los estime correctamente. Hay innumerables posibilidades, siendo las más populares GPS+IMU, Monocular Vision+IMU y Stereo Vision+IMU.

  Si bien la información de la IMU se ha utilizado hasta ahora para hacer predicciones al ESKF, esta información adicional se utiliza para corregir el filtro, observando así el error de sesgo de la IMU. La corrección implica tres pasos:

  1. Los estados de error de observación se corrigen mediante filtros,
  2. Inyecte el error observado en el estado nominal, y
  3. Restablecer estado de error.

Estado de error de observación corregido por filtrado

Supongamos, como de costumbre, que la información proporcionada por el sensor depende del estado, por ejemplo:
y = h ( xt ) + v \mathbf{y}=h(\mathbf{x}_{t})+vy=h ( xt)+v
dondeh ( ) h()h ( ) es una función general no lineal del estado del sistema (estado verdadero),vvv es una covarianzaV \textbf{V}Ruido gaussiano blanco de V
, v ∼ N { 0 , V } v\sim\mathcal{N}\{0,\mathbf{V}\}vnorte { 0 ,V }
  El filtro está estimando el estado incorrecto, por lo que la ecuación de corrección del filtro es:
K = PH ⊤ ( H PH ⊤ + V ) − 1 δ x ^ ← K ( y − h ( x ^ t ) ) P ← ( I − KH ) PAGS \begin{alineado}\textbf{K}&=\textbf{PH}^\top(\textbf{H}\textbf{PH}^\top+\textbf{V})^{-1} \\ &\hat{ {\delta}\textbf{x}}\leftarrow\textbf{K}(\textbf{y}-h(\hat{\textbf{x}}_t))\\ &\textbf{ P}\leftarrow(\textbf{I}-\textbf{K}\textbf{H})\textbf{P}\end{alineado}k=PH (HPH_+V )1δx_ _^K(yh (X^t))PAG( yoK H ) P
Requiere la matriz jacobiana H \textbf{H}H relativa al estado de errorδ x {\delta}\textbf{x}δ x está definido, y en la mejor estimación del estado verdaderox ^ t = x ⊕ δ x ^ {\hat{\mathbf{x}}}_{t}=\mathbf{x}\oplus\hat{\delta\ matemática {x}}X^t=Xδx_ _^ para evaluación. Dado que la media del estado de error es cero en esta etapa (no se ha observado), entoncesx ^ t = x {\hat{\mathbf{x}}}_{t}=\mathbf{x}X^t=x , y se puede usar el error nominalx \textbf{x}x como el punto de evaluación, lo que resulta en lo siguiente:
H ≡ ∂ h ∂ δ x ∣ x \mathbf{H}\equiv\left.\frac{\partial h}{\partial\delta\mathbf{x}}\right |_{\mathbf{x}}Hδ x h x

Matriz jacobiana para cálculo de corrección de filtros

La matriz jacobiana descrita anteriormente se puede calcular de varias maneras. El enfoque más ilustrativo es usar la regla de la cadena,
H ≜ ∂ h ∂ δ x ∣ x = ∂ h ∂ xt ∣ x ∂ xt ∂ δ x ∣ x = H x X δ x \textbf{H}\triangleq\left . \frac{\parcial h}{\parcial\delta\textbf{x}}\right|_{\textbf{x}}=\left.\frac{\parcial h}{\parcial\textbf{x}_t } \right|_{\textbf{x}}\left.\frac{\parcial\textbf{x}_t}{\parcial\delta\textbf{x}}\right|_{\textbf{x}}= \ textobf{H}_{\textbf{x}}\textbf{X}_{\delta\textbf{x}}Hδ x h x=xt h xδ xxt x=HxXx _
其中,H ≜ ∂ h ∂ δ x ∣ x \textbf{H}\triangleq\left.\frac{\parcial h}{\parcial\delta\textbf{x}}\right|_{\textbf{x}}Hδ x h xes h ( ) h ()h ( ) con respecto al coeficiente de Jacobs estándar de su propio parámetro (es decir, el coeficiente de Jacobs utilizado en EKF convencional). La primera parte de la regla de la cadena depende de las capacidades de medición del sensor en particular que se utilice.

  第二部分,X δ x ≜ ∂ xt ∂ δ x ∣ x \textbf{X}_{\delta\textbf{x}}\triangleq\left.\frac{\parcial\textbf{x}_t}{\parcial \delta\textbf{x}}\right|_{\textbf{x}}Xx _δ xxt x, es la matriz jacobiana del estado verdadero con respecto al estado de error. Esta parte se puede derivar aquí ya que solo depende de la composición ESKF del estado. tiene una derivada,
X δ X = [ ∂ ( pags + δ pags ) ∂ δ pags ∂ ( v + δ v ) ∂ δ v 0 ∂ ( q ⊗ δ q ) ∂ δ θ ∂ ( ab + δ ab ) ∂ δ ab 0 ∂ ( ω segundo + δ ω segundo ) ∂ δ ω segundo ∂ ( gramo + δ gramo ) ∂ δ gramo ] \mathbf{X}_{\delta \mathbf{x}}=\left[\begin{array}{ccccc}\frac {\parcial(\mathbf{p}+\delta \mathbf{p})}{\parcial\delta \mathbf{p}} & & & & \\ & \frac{\parcial(\mathbf{v}+\ delta \mathbf{v})}{\parcial \delta \mathbf{v}} & & & & 0 & \\ & & \frac{\parcial(\mathbf{q} \otimes \delta \mathbf{q}) }{\parcial\delta\ballsymbol{\theta}} & & \\ & & & & \frac{\parcial\left(\mathbf{a}_{b}+\delta \mathbf{a}_{b} \right)}{\parcial\delta\mathbf{a}_{b}} & \\ &0 & & & & \frac{\parcial\left(\ballsymbol{\omega}_{b}+\delta \ballsymbol {\omega}_{b}\right)}{\parcial\delta\ballsymbol{\omega}_{b}}&\\&&&&&\frac{\parcial(\mathbf{g}+\delta\mathbf{g})}{\parcial\delta\mathbf{g}}\end{matriz}\right]Xx _= δ pag( pags + δ pags )δv _( v + δ v )0δ θ( q δ q )δ unsegundo( unsegundo+ un _segundo)0δ ωsegundo( osegundo+ hacer _segundo)δ gramo( gramo + δ gramo )
Esto da como resultado un 4×3 además de 4×34×3Ecuación Q δ θ = ∂ ( q ⊗ δ q ) / ∂ δ θ \textbf{Q}_{\delta\ballsymbol{\theta}}=\parcial(\textbf{q}\otimes\delta \qyo _=( qδ q ) / δ θ Todas las identidades excepto3 × 3 3×33×3Ecuación ,∂ ( pags + δ pags ) ∂ δ pags = yo 3 \frac{\parcial(\textbf{p}+\delta\textbf{p})}{\parcial\delta\textbf{p}} =\textbf {yo}_3δ pag( pags + δ pags )=I3) En otras palabras, infinitesimal,
X δ x ≜ ∂ xt ∂ δ x ∣ x = [ I 6 0 0 0 Q δ θ 0 0 0 I 9 ] \textbf{X}_{\delta\textbf{x} }\ triánguloq\izquierda.\frac{\parcial\textbf{x}_t}{\parcial\delta\textbf{x}}\right|_{\textbf{x}}=\begin{bmatrix}\textbf{I }_6&0&0 \\ 0&\textbf{Q}_{\delta\theta}&0\\ 0&0&\textbf{I}_9\end{bmatriz}Xx _δ xxt x= I6000qyo _000I9
Término de cuaternión Q δ θ \textbf{Q}_{\delta\boldsymbol{\theta}}qyo _Forma:
Q δ θ = 1 2 [ − qx − qy − qzqw − qzqyqzqw − qx − qyqxqw ] \textbf{Q}_{\delta\bold symbol{\theta}}=\frac{1}{2}\ begin {bmatriz}-q_x&-q_y&-q_z\\ q_w&-q_z&q_y\\ q_z&q_w&-q_x\\ -q_y&q_x&q_w\end{bmatriz}qyo _=21 qxqwqzqtuqtuqzqwqxqzqtuqxqw

Inyectar el error de observación en el estado nominal

Después de la actualización de ESKF, el estado de error observado se actualiza con el estado nominal usando la combinación adecuada (suma o producto de cuaterniones).
x ← x ⊕ δ x ^ \textbf{x}\leftarrow\textbf{x}\oplus\hat{\delta\textbf{x}}XXδx_ _^
Por ejemplo,
p ← p + δ p ^ v ← v + δ v ^ q ← q ⊗ q { δ θ ^ } ab ← ab + δ ab ^ ω b ← ω b + δ ω ^ bg ← g + δ g ^ \begin{array}{l} \mathbf{p} \leftarrow \mathbf{p}+\hat{\delta \mathbf{p}} \\ \mathbf{v} \leftarrow \mathbf{v}+\hat {\delta \mathbf{v}} \\ \mathbf{q} \leftarrow \mathbf{q} \otimes \mathbf{q}\{\hat{\delta \símbolo de bola{\theta}}\} \\ \ mathbf {a}_{b} \leftarrow \mathbf{a}_{b}+\hat{\delta {\mathbf{a}}_{b}} \\símbolo de bola{\omega}_{b} \ flecha izquierda \símbolo de bola{\omega}_{b}+\delta \hat{\símbolo de bola{\omega}}_{b} \\ \mathbf{g} \leftarrow \mathbf{g}+\sombrero{\delta \mathbf{ g}} \end{matriz}pagpag+pag_ _^vv+v_ _^qqq { yo _^ }asegundoasegundo+un _segundo^VayasegundoVayasegundo+dVaya^segundogramogramo+g_ _^

Restablecer ESKF

Después de inyectar el error en el estado nominal, la media del estado del error es δ x ^ \hat{\delta\textbf{x}}δx_ _^ se restablecerá. Esto es especialmente importante en la parte de orientación, ya que el nuevo error de orientación se representará localmente en relación con el marco de orientación del nuevo estado nominal. Para que la actualización de ESKF esté completa, la covarianza de error debe actualizarse de acuerdo con esta modificación.

  Llame a la función de reinicio de error g ( ) g()g ( ) Determine:
δ x ← g ( δ x ) = δ x ⊖ δ x ^ \delta\mathbf{x}\leftarow g(\delta\mathbf{x})=\delta\mathbf{x}\ ominus\ sombrero{\delta\mathbf{x}}δx_ _g ( δ x )=δx_ _δx_ _^
donde,⊖ \ominus significa⊕ \oplusEl inverso de la combinación de ⊕ . Por lo tanto, la operación de reinicio de error de ESKF es:
δ x ^ ← 0 P ← G PG ⊤ \begin{array}{l}\hat{\delta\text{x}}\leftarrow0\\ \text{P}\leftarrow \text{G}\text{PG}^\top\end{matriz}δx_ _^0PAGGPG _
Donde G es la matriz jacobiana, definida como sigue:
G ≜ ∂ g ∂ δ x ∣ δ x ^ \textbf{G}\triangleq\frac{\partial g}{\partial\delta\textbf{x}}\bigg| _ {\sombrero{\delta\textbf{x}}}GRAMOδ x gramos δx_ _^
  Similar a lo que sucede arriba para actualizar el jacobiano, este jacobiano es el mismo en todos los bloques diagonales excepto por el error de orientación. La expresión completa se da aquí, ∂ δ θ + / ∂ δ θ = I − [ 1 2 δ θ ^ } ] × \parcial\delta\boldsymbol{\theta}^{+}/\parcial\delta\boldsymbol {\ theta}=\mathbf{I}-\left[{\frac{1}{2}}{\hat{\delta \boldsymbol{\theta}}\}}\right]_{\times}δ θ+ /δθ=I[21yo _^ }]×,
G = [ yo 6 0 0 0 yo − [ 1 2 δ θ ^ } ] × 0 0 0 yo 9 ] \textbf{G}=\begin{bmatrix}\textbf{I}_6&0&0\\ 0&\textbf{yo }-\begin{bmatrix}\frac{1}{2}\hat{\delta \ballsymbol{\theta}}\}\end{bmatrix}_\times&0\\ 0&0&\textbf{I}_9\end{bmatrix } }GRAMO= I6000I[21yo _^ }]×000I9
  En la mayoría de los casos, el término de error ˇδθ puede ignorarse y solo una matriz jacobiana G = I 18 \textbf{G}=\textbf{I}_{18}GRAMO=I18, lo que resulta en un ligero reinicio de error.

ESKF usando error global

  Esta sección explora las diferencias entre definir el error angular en un marco de referencia global y las definiciones locales utilizadas hasta ahora. Definir el error angular δθ en el marco de referencia global significa combinar a la izquierda, es decir:
qt = δ q ⊗ q = q { δ θ } ⊗ q \mathbf{q}_{t}=\delta\mathbf{q} \otimes\mathbf{q}=\mathbf{q}\{\delta\mathbf{\boldsymbol{\theta}}\}\otimes\mathbf{q}qt=q_ _q=q { δ θ }q Aquí
  , independientemente de si el error angular se define global o localmente, el vector de velocidad angularωLa definición local de ω , es decir, en tiempo continuo,q ˙ = 1 2 q ⊗ ω \dot{\mathbf{q}}=\frac{1}{2}\mathbf{q}\otimes\mathbf{\ omega}q˙=21qω , entonces en tiempo discreto,q ← q ⊗ q { ω Δ t } \textbf{q}\leftarrow\textbf{q}\otimes\textbf{q}\{\omega\Delta t\}qqq { ω Δ t } . Esto es por comodidad, ya que las medidas de velocidad angular proporcionadas por el giroscopio se refieren al sistema de coordenadas del cuerpo, que es el sistema de coordenadas local.

Cinemática del sistema en tiempo continuo

Cinemática de estado real y estado nominal

La cinemática verdadera y la cinemática nominal no contienen errores y sus ecuaciones no cambian.

cinemática de estado de error

Defina la función de infinitivo
p ̇ = δ v δ v ̇ = − [ R ( am − bab ) ] × δ θ − R δ ab + δ g − Ra n δ θ ̇ = − R δ ω b − R ω n δ a ̇ segundo = aw δ ω ̇ segundo = ω w δ gramo ̇ = 0 \begin{alineado}&\dot{\delta\textbf{p}}=\delta\textbf{v}\\ &\dot{\ delta\ textbf{v}}=-\left[\textbf{R}(\textbf{a}_m-b\textbf{a}_b)\right]_\times\delta\ballsymbol{\theta}-\textbf {R }\delta\textbf{a}_b+\delta\textbf{g}-\textbf{Ra}_n\\ &\dot{\delta\símbolo de bola{\theta}}=-\textbf{R}\delta\ omega_b -\textbf{R}\omega_n\\ &\delta\dot{\textbf{a}}_b=\textbf{a}_w\\ &\delta{\dot{\omega}}_b=\omega_w\\ & \dot{\delta\textbf{g}}=0\end{alineado}pag_ _˙=v_ _v_ _˙=[ R ( unmb unsegundo) ]×yo _R δ asegundo+g_ _Real academia de bellas artesnyo _˙=- R re ωsegundoR ωnda˙segundo=awdVaya˙segundo=Vayawg_ _˙=0

Cinemática del sistema en tiempo discreto

Estado nominal

La ecuación de estado nominal no implica errores y por lo tanto es la misma que la ecuación en el caso de errores angulares definidos localmente.

estado de error

δ pag ← δ pag + δ v Δ t δ v ← δ v + ( - [ R ( un - ab ) ] × δ θ - R δ ab + δ g ) Δ t + vi δ θ ← δ θ - R δ ω segundo Δ t + θ yo δ ab ← δ ab + ai δ ω segundo ← δ ω segundo + ω yo δ gramo ← δ gramo \begin{array}{l}\delta\textbf{p}\leftarrow\delta\textbf{ p}+\delta\textbf{v}\Delta t\\ \delta\textbf{v}\leftarrow\delta\textbf{v}+(-\left[\textbf{R}(\textbf{a}_n- \textbf{a}_b)\right]_{\times}\delta\símbolo de bola{\theta}-\textbf{R}\delta\textbf{a}_b+\delta\textbf{g})\Delta t+\ textbf {v}_\textbf{i}\\ \delta\ballsymbol{\theta}\leftarrow\delta\ballsymbol{\theta}-\textbf{R}\delta\omega_b\Delta t+\ballsymbol{\theta}_ \ textbf{i}\\ \delta\textbf{a}_b\leftarrow\delta\textbf{a}_b+\textbf{a}_\textbf{i}\\ \delta\omega_b\leftarrow\delta\omega_b+\omega_ \ textbf{i}\\ \delta\textbf{g}\leftarrow\delta\textbf{g}\end{matriz}pag_ _pag_ _+δ v Δ tv_ _v_ _+( -[ R ( unnasegundo) ]×yo _R δ asegundo+δ g ) Δ t+vyoyo _yo _R do _segundoΔt _+iyoun _segundoun _segundo+ayohacer _segundohacer _segundo+Vayayog_ _g_ _

Estado de error jacobiano y matriz de perturbación

Determinar la ecuación, que es la siguiente:
F x = [ II Δ t 0 0 0 0 0 I − [ R ( am − ab ) ] × Δ t − R Δ t 0 I Δ t 0 0 I 0 − R Δ t 0 0 0 0 yo 0 0 0 0 0 0 yo 0 0 0 0 0 0 yo ] \mathbf{F}_{\mathbf{x}}=\begin{bmatrix}\mathbf{I}&\mathbf {I} \Delta t&0&0&0&0\\ 0&\mathbf{I}&-[\mathbf{R}(\mathbf{a}_{m}-\mathbf{a}_{b})]_{\times}\ Delta t&- \mathbf{R}\Delta t&0&\mathbf{I}\Delta t\\ 0&0&\mathbf{I}&0&-\mathbf{R}\Delta t&0\\ 0&0&0&\mathbf{I}&0&0\\ 0&0&0&0&\ mathbf{I }&0\\ 0&0&0&0&0&\mathbf{I}\end{bmatriz}Fx= I00000Yo Δ tI00000[ R ( unmasegundo) ]×Δt _I0000- R Δ t0I0000- R Δ t0I00Yo Δ t000yo
F yo = [ 0 0 0 0 yo 0 0 0 0 yo 0 0 0 0
yo 0 0 0 0 yo 0 0 0 0 ] , Q yo = [ V yo 0 0 0 0 Θ yo 0 0 0 0 UN yo 0 0 0 0 Ω i ] \textbf{F}_\textbf{i}=\begin{bmatrix}0&0&0&0\\textbf{I}&0&0&0\\ 0&\textbf{I}; &0&0\\ 0&0&\textbf{I}&0\ \ 0&0&0&\textbf{I}\\ 0&0&0&0\end{bmatrix}\quad,\quad \textbf{Q}_\textbf{i}=\begin{bmatrix}\textbf {V}_\textbf{i}&0&0&0\ \ 0&\boldsymbol{\Theta}_\textbf{i}&0&0\\ 0&0&\textbf{A}_\textbf{i}&0\\ 0&0&0&\boldsymbol{\Omega} _\textbf{i}\end{bmatrix}Fyo= 0I000000I000000I000000I0 ,qyo= Vyo0000elyo0000Ayo0000Ohyo

Fusión con datos de sensores complementarios

La ecuación de fusión que involucra el mecanismo ESKF cambia solo ligeramente cuando se considera el error de ángulo global. Estos cambios se revisarán mediante la observación del estado de error, la inyección de errores en el estado nominal y los pasos de reinicio en la corrección de ESKF.

Observación de estado de error

En comparación con la definición de error local, la única diferencia es el bloque jacobiano de la función de observación que relaciona la orientación con el error angular.
Q δ θ ≜ 1 2 [ − qx − qy − qzqwqz − qy − qzqwqxqy − qxqw ] \mathbf{Q}_{\delta\theta}\triangleq\frac{1}{2}\begin{bmatrix}-q_x&- q_y&-q_z\\ q_w&q_z&-q_y\\ -q_z&q_w&q_x\\ q_y&-q_x&q_w\end{bmatriz}qyo _21 qxqwqzqtuqtuqzqwqxqzqtuqxqw

Inyectar el error de observación en el estado nominal

pags ← pags + δ pv ← v + δ vq ← q { δ θ ^ } ⊗ qab ← ab + δ ab ω segundo ← ω segundo + δ ω bg ← gramo + δ gramo \begin{array}{l}\textbf{ p}\leftarrow\textbf{p}+\delta\textbf{p}\\ \textbf{v}\leftarrow\textbf{v}+\delta\textbf{v}\\\textbf{q}\leftarrow\textbf {q}\{\hat{\delta \símbolo de bola{\theta}}\}\otimes\textbf{q}\\ \textbf{a}_b\leftarrow\textbf{a}_b+\delta\textbf{a} _b \\ \omega_b\leftarrow\omega_b+\delta\omega_b\\ \textbf{g}\leftarrow\textbf{g}+\delta\textbf{g}\end{matriz}pagpag+pag_ _vv+v_ _qq { yo _^ }qasegundoasegundo+un _segundoVayasegundoVayasegundo+hacer _segundogramogramo+g_ _

Restablecer ESKF

De acuerdo con la siguiente fórmula, la media del error ESKF se restablece y la covarianza se actualiza:
δ x ^ ← 0 P ← G PG ⊤ \begin{array}{l}\hat{\delta\text{x}}\leftarrow0\ \ \ text{P}\leftarrow\text{G}\text{PG}^\top\end{matriz}δx_ _^0PAGGPG _
Matriz equivalente:
G = [ I 6 0 0 0 I + [ 1 2 δ θ ^ } ] × 0 0 0 I 9 ] \textbf{G}=\begin{bmatrix}\textbf{I}_6&0&0\\ 0&; \ textbf{I}+\begin{bmatrix}\frac{1}{2}\hat{\delta \ball symbol{\theta}}\}\end{bmatrix}_\times&0\\ 0&0&\textbf{I}_9 \end{bmatriz}GRAMO= I6000I+[21yo _^ }]×000I9

Supongo que te gusta

Origin blog.csdn.net/I_m_Gagaga/article/details/130668268
Recomendado
Clasificación