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=q⊗q_ _ | ||
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_ _=midθ / 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=21qt⊗Vayata˙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⊤( unt−gramot)+abt _+anVayam=Vayat+Vayabt _+Vayan
Interpretación R t ≜ R { qt } \mathbf{R}_{t}\triangle\mathbf{R}\{\mathbf{q}_{t}\}Rt≜R {
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( unm−abt _−an)+gramotVayat=Vayam−Vayabt _−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( unm−abt _−an)+gramotq˙t=21qt⊗( aym−Vayabt _−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=[am−anVayam−Vayan]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 ( unm−asegundo)+gramoq˙=21a⊗( aym−Vayasegundo)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[ unm−asegundo]×yo _−R δ asegundo+g_ _−Ra _nd˙ θ=−[ aym−Vayasegundo]×yo _−hacer _segundo−Vayand˙ 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:
- estado nominal.
- 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}pag←pag+v Δ t+21( R ( unm−asegundo)+g ) Δ t2v←v+( R ( unm−asegundo)+g ) Δ tq←q⊗q {( om−Vayasegundo) Δ t }asegundo←asegundogramo←g
donde x ← f ( x , ∙ ) x\leftarrow f(x,\bullet)X←f ( 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}\}R≜R { 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[ unm−asegundo]×yo _−R δ asegundo+δ g ) Δ t+vyoyo _←R⊤{ ( aym−Vayasegundo) Δ t }yo _−hacer _segundoΔt _+iyoun _segundo←un _segundo+ayohacer _segundo←hacer _segundo+Vayayog_ _←g_ _
Entre ellos, vi \textbf{v}_\textbf{i}vyo、θ yo \boldsymbol{\theta}_\textbf{i}iyo、ai \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}Vayan、a ω \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_ _+Fyo⋅i
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_ _^PAG←FxP 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}}Fx和F 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 Δ tI00000− R [ unm−asegundo]×Δt _R⊤ {(om−Vayasegundo) Δ t }0000- R Δ t0I0000− yo Δ 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:
- Los estados de error de observación se corrigen mediante filtros,
- Inyecte el error observado en el estado nominal, y
- 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}\}v∼norte {
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(y−h (X^t))PAG←( yo−K 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∂ δ x∂ xt
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 _≜∂ δ x∂ xt
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 _≜∂ δ x∂ xt
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
− qxqwqz− qtu− qtu− qzqwqx− qzqtu− qxqw
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}}X←X⊕δ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}pag←pag+pag_ _^v←v+v_ _^q←q⊗q {
yo _^ }asegundo←asegundo+un _segundo^Vayasegundo←Vayasegundo+dVaya^segundogramo←gramo+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_ _^←0PAG←GPG _⊤
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\}q←q⊗q {
ω Δ 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 ( unm−b unsegundo) ]×yo _−R δ asegundo+g_ _−Real academia de bellas artesnyo _˙=- R re ωsegundo−R ω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 ( unn−asegundo) ]×yo _−R δ asegundo+δ g ) Δ t+vyoyo _←yo _−R do _segundoΔt _+iyoun _segundo←un _segundo+ayohacer _segundo←hacer _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 ( unm−asegundo) ]×Δ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
− qxqw− qzqtu− qtuqzqw− qx− qz− qtuqxqw
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}pag←pag+pag_ _v←v+v_ _q←q { yo _^ }⊗qasegundo←asegundo+un _segundoVayasegundo←Vayasegundo+hacer _segundogramo←gramo+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_ _^←0PAG←GPG _⊤
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